4 min read

Pick list and Bit Data Migration using DMM

Pick list Value Mappings and Pick list Migration:

DMM has the potential to efficiently handle your pick list values. DMM uses the concept of Pick list mapping in its Data Map for migrating the pick list values. So what are these pick list mappings?

Let’s say for example, you have a data column in your source CSV with name “Account Classification” and the possible values in this classification are: Good, Bad and Normal. MSCRM has an attribute called “Category” which you feel corresponds to this column in your source and hence you decide to bring in your source column’s data (Account Classification) into ‘Category’ attribute. MSCRM attribute ‘Category’ has only two values namely Preferred Customer and Standard. So there needs to be some way where, Good is associated to Preferred Customer, Normal and Bad both to Standard Customer. The way in which this association is stored in the Data Map file is called as Pick list mapping.

Here is what happens when DMM encounters a column in CSV file mapped to a pick list type attribute in MSCRM.

1. DMW checks if there is any mapping available in the Data Map (in case you started with one of them) for individual pick list values. If mapping exists, DMM uses that mapping for migration else proceeds to Step 2.

2. For all those values which do not have map, DMM creates mapping. This mapping is created if the source pick list values are an exact string match (case in-sensitive) with Dynamics CRM attribute pick list string values.

3. If there are any more unmapped values, system checks if you have opted out of Auto customization option (Screenshot 4 shows availability of this option). 

     a. If you have NOT opted out of customization, then DMM customizes the target MSCRM pick list attribute to create new values. During this customization all unmapped source values for that column are added as options into the attribute. Pick list mapping entry is then made for each such value into the Data Map which maps the source values to the newly created values in MSCRM.

     b. If you have opted out of customization, you would get errors for records with unmapped source pick list values when DMM is uploading the data to the server.

So what does this mean to you as a User?

1. You do not need pick list value mappings for those source pick list values that are an exact match with Dynamics CRM attribute pick list values.

2. If there is no exact match, then an alternative is mapping has to be available in the Data Map being used in the Data Map used for the migration.

3. If both these do not happen means that there is no mapping in map file and strings do not match. DMM customizes MSCRM in this case. If you have opted out of customization then you would encounter errors.

So while migrating the pick list data you have two options to choose from and the first one is recommended:

1. You can bring in both, your source Pick list data as well as your source Pick list values into MSCRM:

If the intension is to bring in the source data pick list values in its original form then you will need to make sure that you do not uncheck the checkbox for CRM customization presented on the Get Started screen (shown in Screenshot 4). DMM will customize MSCRM to add your source pick list values into that attribute and migrate data with the new values into MSCRM. Once the migration is complete, you will have to clean up the pick list values in such attributes using MSCRM customization feature, so as to avoid two sets of values, one that are default in MSCRM and the other from the data that you migrated.

Screenshot 4: Get Started screen


2. You can bring in your source Pick list data as corresponding MSCRM equivalent values:

To achieve this one of two ways:

  • Replace the pick list values in your source CSV files with the corresponding values from MSCRM.
  • Create mappings in the Data Map that you will use for your migration between the source values and the target values. You will need to edit the Map in the form of a XML file and import and use that map. Here is a sample mapping for the example specified above.

<AttributeMap Id=”26028fce-889a-466d-beab-1a7ad709b2e0“>

<SourceAttributeName>Account Classification</SourceAttributeName>



<Pick listMaps>

<Pick listMap Id=”bd86897f-4ed5-4b79-a30e-379cfcca33bb“>




</Pick listMap>

<Pick listMap Id=”fbc8a80c-693f-4fc7-8cf9-45fb565b5366“>




</Pick listMap>

<Pick listMap Id=”6a76fbc0-4abc-4c22-a4f0-55497446c47f“>




</Pick listMap>

</Pick listMaps>


Please note that the target values are the integer equivalents of your target string values (Preferred Customer and Standard Customer in the example considered). You can know the integer equivalent values of the strings in customization area:

Screenshot 5: Knowing Pick list integer Values


A better and more reliable way of knowing the integer equivalent way of the string is from your server database. You can execute the following query (after replacing the highlighted entity and attribute name with attribute details that you are mapping) to view the integer equivalents in the database.

select attributevalue as ‘Value’,

value as ‘Display Label’ from stringmap

where attributename = ‘accountcategorycode

and objecttypecode= (select objecttypecode from entity

where name = ‘account‘)

Migration of Bit Values:

DMM migrates values into bit (boolean) type MSCRM attributes if the values are “0 and 1” or “true and false”. If the values are other than these then you would need to provide a mapping between your source values and “0 or 1” just as they were provided for Pick list values. In other words, bit values are mapped in a Data Map file exactly like any Pick lists.

Related Blogs in this Space:

Raju Kulkarni