While migrating Email Activities from D365 v8.2 to v9, I came across the following error:
“Operation failed. Label: Create email, Name: emailCreate2, Message: -2147220969: ActivityPointer With Id = XXXXXXXXXXXX Does Not Exist”
This can cause some confusion as activitypointers do not need to be migrated before you begin migrating emails.
What are ActivityPointers?
The activity pointer (activity) entity represents any activity or task that is performed, or to be performed by a user. An activity is any action for which an entry can be made on a calendar.
Whenever you create an activity record in Microsoft Dynamics 365, a corresponding activity pointer record is created. This indicates that the activity record and the corresponding activity pointer record have the same value for the ActivityId attribute. For example, if you create an Email record, the attribute values of Email.ActivityId and the corresponding ActivityPointer.ActivityId will be the same.
This should not be confused with ActivityParties which represent a person or group associated with an activity. An activity can have multiple activity parties.
Upon inspection, I discovered that those emails are linked to themselves, having the ‘parentactivityid’ field populated with its own activity GUID. The error was being caused because Scribe could not find the parent activity in the Target environment (since it had not yet been created).
Remove the ‘parentactivityid’ mapping from the ‘Create Email’ block.
Add an If-Else Block below the Create block to check if the Email has been created, and if true, use an Update block to update the Email with the ‘parentactivityid’.
Now, the Email activity will be created with the correct GUID and once created, will be updated with the required GUID as ‘parentactivityid’.
This solution resolved the above issue and email activities can now be created without this error occurring.