Documentation Center

Importing Contacts using the API example

Tridion.AudienceManagement.API.Import contains classes that enable bulk import of Contacts on the Content Manager Server. Importing Keywords using the API.

StaticAddressBook importAddressBook = new StaticAddressBook(UserContext);
importAddressBook.Title = string.Format(AddressBookFormat, ApiTestingPrefix, "Import test");
importAddressBook.Key = "Import";
importAddressBook.Save();

//Create import manager and load the import definition for the import file.
ImportManager manager = new ImportManager(UserContext);
ImportDefinition definition = manager.GetImportDefinition("1000 Contacts.csv", ImportType.ImportContacts);

/* Default import settings, override them when needed.

definition.ColumnDelimiter = ColumnDelimiter.Comma;
definition.DateTimeFormat = "yyyy-MM-dd'T'HH:mm:ss";
definition.DecimalCharacter = ".";
definition.ErrorFile = "oe_import.err";
definition.LogFile = "oe_import.log";
definition.GroupSeparator = ",";
definition.TextQualifier = "\"";
definition.ImportActions = ImportActions.CreateNewKeywords | ImportActions.OverwriteKeywordsOnContacts;
definition.RowsToImport = 1000;
*/

//Import into the 'Import' Address Book
definition.AddressBookUri = importAddressBook.Id;

//Auto match the import file (Matches fields from the import file with equally named database fields).
definition.MatchImportFile();

//Manually match other fields, first the identification fields:
definition.Mappings["identification_key"].SourceField = definition.SourceFields["key"];
definition.Mappings["identification_source"].DestinationField.DefaultValue = "Import";

//Email type and Bounce status were auto-mapped, we want to hardcode them though. First remove the mapped source field
definition.Mappings["email_type"].SourceField = null;
definition.Mappings["bounce_status_id"].SourceField = null;

//Hardcode the Email type to Multi-part
definition.Mappings["email_type"].DestinationField.DefaultValue = EmailTypes.Multipart;
definition.Mappings["bounce_status_id"].DestinationField.DefaultValue = BounceStatus.NoBounce;

//Map the password field
definition.Mappings["password"].SourceField = definition.SourceFields["contact_password"];

//Hook into the feedback event
manager.Progress += ImportProgress;

ImportResult results = manager.ImportContacts(definition);

Console.WriteLine(results.AllDataImported ? "All Contacts were successfully imported" : string.Format(CultureInfo.InvariantCulture, "Contacts were imported, but some errors occurred, please check the {0} and {1} log files", definition.ErrorFile, definition.LogFile));
Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "Imported {0} new contacts.", results.ContactsCreated));
Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "Updated {0} existing contacts.", results.ContactsUpdated));