Microsoft Dynamics field mappings
The tables below contain the mappings between Microsoft Dynamics source fields and their corresponding Experience Data Model (XDM) fields.
Contacts contacts
address1_addressidworkAddress._idaddress1_cityworkAddress.cityaddress1_countryworkAddress.countryaddress1_countyworkAddress.stateProvinceaddress1_latitudeworkAddress._schema.latitudeaddress1_line1workAddress.street1address1_line2workAddress.street2address1_line3workAddress.street3address1_longitudeworkAddress._schema.longitudeaddress1_postalcodeworkAddress.postalCodeaddress1_postofficeboxworkAddress.postOfficeBoxaddress1_stateorprovinceworkAddress.stateassistantnameextendedWorkDetails.assistantDetails.name.fullNameassistantphoneextendedWorkDetails.assistantDetails.phone.numberbirthdateperson.birthDate"Dynamics"b2b.personKey.sourceType"${CRM_ORG_ID}"b2b.personKey.sourceInstanceID"${CRM_ORG_ID}" will be automatically replaced.contactidb2b.personKey.sourceIDconcat(contactid,"@${CRM_ORG_ID}.Dynamics")b2b.personKey.sourceKey"${CRM_ORG_ID}" will be automatically replaced.iif(contactid != null && contactid != "", to_object("sourceType", "Dynamics", "sourceInstanceID", "${CRM_ORG_ID}","sourceID", contactid, "sourceKey", concat(contactid,"@${CRM_ORG_ID}.Dynamics")), null)personComponents.sourcePersonKeydepartmentextendedWorkDetails.departmentsfullnameperson.name.fullNamesuffixperson.name.suffixiif(parentcustomerid != null && parentcustomerid != "", to_object("sourceType", "Dynamics", "sourceInstanceID", "${CRM_ORG_ID}", "sourceID", parentcustomerid, "sourceKey", concat(parentcustomerid,"@${CRM_ORG_ID}.Dynamics")), null)personComponents.sourceAccountKeyiif(parentcustomerid != null && parentcustomerid != "", to_object("sourceType", "Dynamics", "sourceInstanceID", "${CRM_ORG_ID}", "sourceID", parentcustomerid, "sourceKey", concat(parentcustomerid, "@${CRM_ORG_ID}.Dynamics")), null)b2b.accountKeycreatedonextSourceSystemAudit.createdDateemailaddress1workEmail.addressemailaddress2personalEmail.addressemailaddress1personComponents.workEmail.addressfirstnameperson.name.firstNamefullnameperson.name.fullNamelastnameperson.name.lastNamejobtitleextendedWorkDetails.jobTitlemiddlenameperson.name.middleNamemobilephonemobilePhone.numbermodifiedonextSourceSystemAudit.lastUpdatedDatesalutationperson.name.courtesyTitletelephone1workPhone.numberLeads leads
address1_addressidworkAddress._idaddress1_cityworkAddress.cityaddress1_countryworkAddress.countryaddress1_countyworkAddress.stateProvinceaddress1_latitudeworkAddress._schema.latitudeaddress1_line1workAddress.street1address1_line2workAddress.street2address1_line3workAddress.street3address1_longitudeworkAddress._schema.longitudeaddress1_postalcodeworkAddress.postalCodeaddress1_postofficeboxworkAddress.postOfficeBoxaddress1_stateorprovinceworkAddress.statetelephone1workPhone.numbermobilephonemobilePhone.numbercreatedonextSourceSystemAudit.createdDateemailaddress1workEmail.addressemailaddress2personalEmail.addressemailaddress1personComponents.workEmail.addressfaxfaxPhone.numberfirstnameperson.name.firstNamefullnameperson.name.fullNamejobtitleextendedWorkDetails.jobTitlelastnameperson.name.lastName"Dynamics"b2b.personKey.sourceType"${CRM_ORG_ID}"b2b.personKey.sourceInstanceID"${CRM_ORG_ID}" will be automatically replaced.leadidb2b.personKey.sourceIDconcat(leadid,"@${CRM_ORG_ID}.Dynamics")b2b.personKey.sourceKey"${CRM_ORG_ID}" will be automatically replaced.iif(leadid != null && leadid != "", to_object("sourceType", "Dynamics", "sourceInstanceID", "${CRM_ORG_ID}","sourceID", leadid, "sourceKey", concat(leadid,"@${CRM_ORG_ID}.Dynamics")), null)personComponents.sourcePersonKeymiddlenameperson.name.middleNamemobilephonemobilePhone.numbermodifiedonextSourceSystemAudit.lastUpdatedDatesalutationperson.name.courtesyTitleAccounts accounts
"Dynamics"accountKey.sourceType"${CRM_ORG_ID}"accountKey.sourceInstanceID"${CRM_ORG_ID}" will be automatically replaced.accountidaccountKey.sourceID"${CRM_ORG_ID}" will be automatically replaced.accountnumberaccountNumberaccountratingcodeaccountOrganization.ratingaddress1_addressidaccountPhysicalAddress._idaddress1_cityaccountPhysicalAddress.cityaddress1_countryaccountPhysicalAddress.countryaddress1_countyaccountPhysicalAddress.regionaddress1_latitudeaccountPhysicalAddress._schema.latitudeaddress1_line1accountPhysicalAddress.street1address1_line2accountPhysicalAddress.street2address1_line3accountPhysicalAddress.street3address1_longitudeaccountPhysicalAddress._schema.longitudeaddress1_nameaccountPhysicalAddress.labeladdress1_postalcodeaccountPhysicalAddress.postalCodeaddress1_postofficeboxaccountPhysicalAddress.postOfficeBoxaddress1_stateorprovinceaccountPhysicalAddress.statecreatedonextSourceSystemAudit.createdDatedescriptionaccountDescriptionfaxaccountFax.numbermodifiedonextSourceSystemAudit.lastUpdatedDatenameaccountNamenumberofemployeesaccountOrganization.numberOfEmployeesrevenueaccountOrganization.annualRevenue.amountsicaccountOrganization.SICCodetelephone1accountPhone.numbertickersymbolaccountOrganization.tickerSymbolwebsiteurlaccountOrganization.websiteconcat(accountid,"@${CRM_ORG_ID}.Dynamics")accountKey.sourceKeyOpportunities opportunities
nameopportunityName"Dynamics"opportunityKey.sourceType"${CRM_ORG_ID}"opportunityKey.sourceInstanceID"${CRM_ORG_ID}" will be automatically replaced.iif(parentaccountid != null && parentaccountid != "", to_object("sourceType", "Dynamics", "sourceInstanceID", "${CRM_ORG_ID}","sourceID", parentaccountid, "sourceKey", concat(parentaccountid, "@${CRM_ORG_ID}.Dynamics")), null)accountKeyactualclosedateactualCloseDateactualvalueopportunityAmount.amountiif(campaignid != null && campaignid != "", to_object("sourceType", "Dynamics", "sourceInstanceID", "${CRM_ORG_ID}", "sourceID", campaignid, "sourceKey", concat(campaignid,"@${CRM_ORG_ID}.Dynamics")), null)campaignKeycloseprobabilityprobabilityPercentagecreatedonextSourceSystemAudit.createdDatedescriptionopportunityDescriptionestimatedclosedateexpectedCloseDateestimatedvalueexpectedRevenue.amountmodifiedonextSourceSystemAudit.lastUpdatedDateopportunityidopportunityKey.sourceIDconcat(opportunityid,"@${CRM_ORG_ID}.Dynamics")opportunityKey.sourceKey"${CRM_ORG_ID}" will be automatically replaced.salesstageopportunityStagestepnamenextStepOpportunity contact roles opportunity-contact-roles
"Dynamics"opportunityPersonKey.sourceType"${CRM_ORG_ID}"opportunityPersonKey.sourceInstanceID"${CRM_ORG_ID}" will be automatically replaced.connectionidopportunityPersonKey.sourceIDconcat(connectionid,"@${CRM_ORG_ID}.Dynamics")opportunityPersonKey.sourceKey"${CRM_ORG_ID}" will be automatically replaced.createdonextSourceSystemAudit.createdDatemodifiedonextSourceSystemAudit.lastUpdatedDateiif(record1id != null && record1id != "", to_object("sourceType", "Dynamics", "sourceInstanceID", "${CRM_ORG_ID}", "sourceID", record1id, "sourceKey", concat(record1id,"@${CRM_ORG_ID}.Dynamics")), null)opportunityKeyiif(record2id != null && record2id != "", to_object("sourceType", "Dynamics", "sourceInstanceID", "${CRM_ORG_ID}", "sourceID", record2id, "sourceKey", concat(record2id,"@${CRM_ORG_ID}.Dynamics")), null)personKeyconnectionrole1.namepersonRolerecord1objecttypecoderecord1objecttypecode source field, see this .record2objecttypecoderecord2objecttypecode source field, see this .Campaigns campaigns
campaignidcampaignKey.sourceID"${CRM_ORG_ID}"campaignKey.sourceInstanceID"${CRM_ORG_ID}" will be automatically replaced.concat(campaignid,"@${CRM_ORG_ID}.Dynamics")campaignKey.sourceKey"${CRM_ORG_ID}" will be automatically replaced."Dynamics"campaignKey.sourceTypeiif(campaignid != null && campaignid != "", to_object("sourceType", "Dynamics", "sourceInstanceID", "${CRM_ORG_ID}","sourceID", campaignid, "sourceKey", concat(campaignid,"@${CRM_ORG_ID}.Dynamics")), null)extSourceSystemAudit.externalKeyextSourceSystemAudit.externalKey is the secondary identity. The value for "${CRM_ORG_ID}" will be automatically replaced.createdonextSourceSystemAudit.createdDatemodifiedbyextSourceSystemAudit.lastUpdatedBymodifiedonextSourceSystemAudit.lastUpdatedDatedescriptioncampaignDescriptionnamecampaignNametotalactualcostactualCost.amountbudgetedcostbudgetedCost.amountexpectedrevenueexpectedRevenue.amountactualendcampaignEndDateactualstartcampaignStartDateexpectedresponseexpectedResponseutcconversiontimezonecodetimeZoneutcconversiontimezonecodetimezoneNameMarketing list marketing-list
"Dynamics"marketingListKey.sourceType"${CRM_ORG_ID}"marketingListKey.sourceInstanceID"${CRM_ORG_ID}" will be automatically replaced.descriptionmarketingListDescriptionlistnamemarketingListNamelistidmarketingListKey.sourceIDconcat(listid,"@${CRM_ORG_ID}.Dynamics")marketingListKey.sourceKey"${CRM_ORG_ID}" will be automatically replaced.modifiedonextSourceSystemAudit.lastUpdatedDatecreatedonextSourceSystemAudit.createdDateMarketing list members marketing-list-members
"Dynamics"marketingListMemberKey.sourceType"${CRM_ORG_ID}"marketingListMemberKey.sourceInstanceID"${CRM_ORG_ID}" will be automatically replaced.iif(entityid != null && entityid != "", to_object("sourceType", "Dynamics", "sourceInstanceID", "${CRM_ORG_ID}", "sourceID", entityid, "sourceKey", concat(entityid,"@${CRM_ORG_ID}.Dynamics")), null)personKeylistmemberidmarketingListMemberKey.sourceIDconcat(listmemberid,"@${CRM_ORG_ID}.Dynamics")marketingListMemberKey.sourceKey"${CRM_ORG_ID}" will be automatically replaced.iif(listid != null && listid != "", to_object("sourceType", "Dynamics", "sourceInstanceID", "${CRM_ORG_ID}", "sourceID", listid, "sourceKey", concat(listid,"@${CRM_ORG_ID}.Dynamics")), null)marketingListKeycreatedonextSourceSystemAudit.createdDateAppendix
The sections below provide additional information that you can use when configuring B2B mappings for your Microsoft Dynamics source.
Picklist type fields picklist-type-fields
You can use calculated fields to map a picklist type source field from Microsoft Dynamics to a target XDM field.
For example, the genderCode field includes two options:
malefemaleYou can use the following options to map the genderCode source field to person.gender target field:
Use a logical operator
decode(genderCode, "1", "male", "2", "female", "default")person.genderIn this scenario, the value corresponds to the key, if the key is found in options, or default, if default is present and the key is not found. The value corresponds to null if options is null or there is no default and the key is not found.
Use a calculated field
iif(gendercode.equals("1"),"male",iif(gendercode.equals("2"),"female",null))person.genderiif(condition, iif(cond1, tv1, fv1), iif(cond2, tv2, fv2)).For more information is the document on logical operators in Data Prep