The rest api could be your friend when it comes to copying and creating many assets (emails,LPs, forms, campaigns, programs), but I would be careful. Many things to take into consideration that the API might not be able to help you with:
- Branding and domains - redirect links, footer/header links shortcuts, CDN for your hosted files
- Consolidating your files and updating links in assets
- Differences in email groups and current contact subscription statuses
- Custom Object record services currently set up
- Losing the ability to make decisions on the contact activity history (decision steps, segments, lead scoring), plus you'll have to export current history
- Shared lists, shared filters, segments, field merges
- Shared and dynamic content
- Program builders and Event objects
- Custom reports built in Insight
- Security groups and contact labels
- Field views
Having done this in the past, this would in part be a manual effort. There are however Cloud apps that can help with a lot of these efforts.
Let me know, we can get on a WebEx to discuss.
I would actually ask Eloqua Support to assist you with this.
Other than that, it will probably be a lot of manual work.
Contact migration will be easy, other than that all other assets will have dependency with child elements, which will be difficult task to recreate using REST APIs.
Contacts can be exported with all columns as excel/csv files and can be imported back to the destination Instance(mapping will be important), which should not take much time I believe.
What's the best way to control for duplicate records between instances?
Currently running an email only list, seeing what exists and not over writing existing contact data, and then appending the empty profiles.
If they are both Eloqua instances, email is the unique identifier so duplicates should not be created.
The best way is to create and export from the system that you a trying to pull the data from (System B).
Create an autosync in (System A) to import the records into a CDO in System A.
Sync the fields from the CDOs to contact record if they are blank.
Here is a link that may help: