THIS.oColItemRefs = CREATEOBJECT('Collection') LOCAL nMsgIndex, nNumMessages, cAttFile, nAttachNum, lErrorOccured * Get the number of messages. m.nNumMessages = THIS.oMail.ReadMail(,,,THIS.cExtractSender) IF m.nNumMessages > 0 * Set index to the oldest message. THIS.oMail.GetOldestMessage() * Run the following loop for the number of messages. FOR m.nMsgIndex = 1 TO m.nNumMessages * Record a reference to this mail item. THIS.oColItemRefs.ADD(THIS.oMail.oInbox.Items[this.oMail.nCurrentMessageNumber]) * Process the next message (effectively: Skip -1). THIS.oMail.GetPreviousMessage() ENDFOR THIS.MoveToRetainedFolder(.T.) && Clears the collection. ENDIF && m.nNumMessages > 0The THIS.oColItemRefs object accesses a collection class so in essence, I am just adding a reference to all qualifying mail items in the Outlook INBOX to an array property (ITEM) hanging of the collection object. The process looks for messages in the inbox that have been received from a specific sender. The messages do have attachments that I process but, I have excluded this code here. When the attachment has been processed, then the only job left is the call the MoveToRetainedFolder method and move the processed items from the INBOX to a pre-defined retained messages folder. That is where it starts going pear-shaped. The For Next reads the mailitem's object reference from the THIS.oColItemRefs.item[] collection and simply tries to execute the item's move method with the retained folder object as the move method's argument.