Monday, June 29, 2015

Scribe Data Migration Notes

  1. Before migrating record of any entity, create a text field, length 100, optional, in destination table (Account, Contact etc.). This filed will be used to capture the primary key GUID from source and will help us if we need to update/delete the migrated records later. You can give the key name as dataSourceId.
  2. Always put NVARCHAR fields like "description" etc. at the end of the column list in the SQL Query that is used to select the source data. Otherwise the value might be exported as NULL in destination even if it is present in source.
  3. For any entity, do not map statecode and statuscode fields initially. For these two fields, create another package and update the records after migrating the records without these two fields. This will allow creating the relationship between INACTIVE records, for e.g Order and Inactive products.
  4. No need to map owneridtypecode field. Just map ownerid to ownerid based on dblookup of owneridname field in the source.
  5. Make sure that you set the timezone to UTC/GMT in the package settings. Otherwise the migrated DateTime values will be inserted according to the timezone settings of the user which is used to connect the destination CRM in the Scribe Package. Follow these steps to avoid this scenario:
    • Open the properties of the CRM target connection and Navigate to the Connection tab.
    • Click the Adapter Settings button.
    • Navigate to the User/Owner tab.
    • Set the "Time zone to use for all date/time values" option to "UTC/GMT".
  6. Make sure to provide default values for required fields in the destination. For e.g. if source owner is not found in destination, substitute it with a dummy/default owner that is present in the destination.
  7. If you run the package and get an error "There is no active transaction. This error is usually caused by custom plug-ins that ignore errors from service calls and continue processing." try to see if “Bulk Mode” option in destination connection properties is checked. If that is the case, uncheck the bulk mode and re-run the package.
  8. If you get the error “Creating this parental association would create a loop in this entity hierarchy”, note down the records in the respective Scribe Rejected table and manually update the required fields in the destination CRM.
  9. For Optionsets or previously Picklists, when source values are different than the destination values, create an .ini file (e.g. SourceToDestinationOptionSets.ini)

    Let's say in source, the values are like this.
    1 = Quote Report
    2 = Product Report

    And in the destination, we have
    936710000 = Quote Report
    936710001 = Product Report.

    Then add source to destination field mapping in the .ini file like following:

    [New_ReportType]
    1=936710000
    2=936710001

    Here New_ReportType is the title (with square brackets) that will be used in the formula in Scribe package.

    After creating the file, add mapping formula as following:

    FILELOOKUP(S305,"SourceToDestinationOptionSets.ini","New_ReportType" )

    Remember to reopen the package file if it was already open when you created the package, otherwise this formula will give error.

    In the above formula, the S305 is the field reference number for the Record Type field in source.

2 comments:

  1. I have been surfing online more than 4 hours today, yet I never found any interesting article like yours. It is pretty worth enough for me. Personally, if all webmasters and bloggers made good content as you did, the internet will be much more useful than ever before. fb login facebook

    ReplyDelete
  2. Dreyer Group is definitely an independent mortgage broker firm that shops your mortgage to major banks and trust companies across Canada to be sure your get the top mortgage in the lowest rate. mortgage calculator Understanding the details can help you decide if now will be the right time and energy to refinance to suit your needs. mortgage payment calculator

    ReplyDelete