Skip to content

Opportunity Migration — Remaining Work Items

Date February 10, 2026 (updated)
Project CRM 2011 → D365 Opportunity Migration (Bio-Cat)
Status One test record migrated and validated. All value transformations verified.

Current State

One test record ("Prozyme 6 (HUT assay)") has been migrated from CRM 2011 to D365. A field-by-field validation was performed comparing all 42 mapped fields between the source and target systems.

Validation results for the test record:

Category Count Meaning
Matched 19 Source and target values agree (includes transformed values)
Mismatched 0
Target empty 1 kl_requestedby — systemuser lookup requires team mapping
Source empty 4 Source is null; D365 has a default value — OK
Both empty 18 Neither system has data for this field — OK

Remaining Work Items

WI-1: Systemuser Lookup Mapping for kl_requestedby

Priority Must-fix before migration
Status Not started
Affects CFPRequested_bykl_requestedby
Type Team decision + data prep

Problem

CRM 2011 stores CFPRequested_by as a Picklist of staff names. D365 kl_requestedby is a Lookup to systemuser. The migration cannot map picklist integers to systemuser GUIDs without a mapping table.

The current CRM 2011 picklist values are:

CRM 2011 Value Label
2 Chris Schuler
7 Dottie Davis
9 Other
14 Chris Penet
100000000 Michael Hammond
100000001 Charlie Pettygrove
100000002 Erin Steva
100000003 Marc Jensen
100000004 Karen Engel
100000005 Jenn Daughtrey
100000006 Mark Walin
100000007 Stephen Schuler
100000008 Maggie Murphy
100000009 Kris Norman
100000010 Dan Little

Team Action Required

  1. Confirm which of these people exist as systemusers in D365.
  2. Query D365 systemusers entity by fullname to get GUIDs.
  3. Decide what to do with "Other" (value 9) and people who don't exist in D365.
  4. Provide the completed mapping to the migration team.

Note: The kl_legacyrequestedby field already stores the raw value as a fallback text field. If the systemuser mapping is too complex, the team may decide to leave kl_requestedby empty and rely on the legacy field.


WI-2: Create Legacy Opportunity ID Field in D365

Priority Must-fix before migration
Status Not started
Affects D365 Opportunity entity customization
Type D365 configuration (Maker Portal)

Problem

There is currently no field in D365 to store the CRM 2011 OpportunityId GUID. Without this:

  • Validation cannot reliably match D365 records back to their CRM 2011 source (it falls back to matching by name, which is fragile).
  • Re-runs of the migration cannot detect "already migrated" records.
  • Cleanup is difficult if records need to be rolled back.

Solution

  1. Open D365 → Power Apps Maker PortalTablesOpportunity.
  2. Create a new column:
  3. Display Name: Legacy Opportunity ID
  4. Logical Name: kl_legacyopportunityid (or per your publisher prefix)
  5. Data Type: Single Line of Text (100 characters)
  6. Searchable: Yes
  7. Save and Publish the Opportunity table customization.
  8. Provide the new field's logical name to the migration team so it can be included in the field mapping.

Verification

Open an Opportunity form in D365, confirm the "Legacy Opportunity ID" field is visible (or add it to the form if needed).


WI-3: Resolve Ambiguous and Missing Mappings

Priority Should-fix before migration
Status Not started
Affects Fields listed in the mapping report's "Ambiguous" and "Missing" sections
Type Decision + possible D365 configuration

These fields from the mapping report need team decisions:

3a — Ambiguous Fields Requiring a Decision

Source Candidates Decision Needed
customerid (Account) accountid or parentaccountid Which D365 field should receive the CRM 2011 customer?
parentcontactid (Contact) contactid or parentcontactid Which D365 field?
CFSBPCity / CFSCity (City) kl_shipto_city Which source field is correct?
CFSFax / CFSBPFax (Fax) kl_legacyfax Which source field?
CFSFormula_1 through CFSFormula_20 kl_legacyformula Concatenate all 20 formula fields into one text field? What delimiter?
CFPUnit_of_Measure kl_priceuom and/or kl_legacyuom Confirm the UOM value translation (gms→gms, kgs→kgs, mls→mL, liters→L, Gallons→gal)

3b — Missing Fields

These were identified in the mapping report as needing new D365 columns or are currently excluded from migration. Review each and decide whether to:

  • Create the column in D365 and add to the field mapping
  • Skip (document as intentionally excluded)

Key ones: - owneridownerid (Owner assignment — should migrated records keep the original owner or be assigned to a migration account?) - CFPUnit_of_Measurekl_legacyuom (UOM translation — mapping table exists but field not in active mapping) - new_reminderson → Legacy Reminders On (not yet mapped) - Formula fields → kl_legacyformula (20 source fields → 1 target)

3c — Fields Flagged for Possible Removal

  • CFSContactkl_legacycontact: mapping report asks if this should be removed since it's accounted for elsewhere as a non-Legacy field. Decision needed.
  • CFPRequested_bykl_legacyrequestedby: same question. Decision needed.

WI-4: Full Migration Dry Run

Priority Do after WI-1 through WI-3 are complete
Status Not started
Type Operational

Steps

  1. Run a dry-run migration across all Opportunity records to surface any data edge cases (no records are written — this is a validation-only pass).
  2. Review all warnings for unmapped Option Set values, type conversion failures, or skipped fields.
  3. Fix any newly discovered issues.
  4. Migrate a small batch (e.g. 10 records) and validate them in D365.
  5. When satisfied, proceed to the full migration.

WI-5: Post-Migration Validation

Priority Do after full migration
Status Not started
Type Operational

Steps

  1. Run a field-by-field comparison of all migrated Opportunity records between CRM 2011 and D365.
  2. Review the summary for any fields with high mismatch or missing-value rates.
  3. Spot-check individual records in D365 for correctness (open the record, verify key fields).
  4. Deliver the validation summary to stakeholders.

Reference: Option Sets That Match Between Systems (No Action Needed)

These option sets use identical integer values in both CRM 2011 and D365:

Field Values
kl_shippingmethod 2=UPS Regular, 3=UPS Next Day Air AM, 4=UPS Next Day Air, 5=UPS 2nd Day AM, 6=UPS 2nd Day, 7=UPS NDA Saver, 8=UPS 3-Day, 9=FedEx, 10=Other, 11=?????, 100000000=FedEx Ground
kl_allergens 100000000=Eggs, 100000001=Fish, 100000002=Milk, 100000003=Peanuts, 100000004=Shellfish, 100000005=Soybeans, 100000006=Tree Nuts, 100000007=Wheat, 100000008=Sulfites. D365 adds 100000009=None.

Reference: Key Resources

Resource Purpose
Active field mapping 42 field-level source → target mappings — edit to add/remove fields
Mapping report Documents all identified source fields, their D365 targets, and any ambiguous/missing items
CRM 2011 environment Source system for reading Opportunity records
D365 environment Target system for creating/updating Opportunity records
Power Apps Maker Portal Where D365 entity customizations (new columns, Option Sets) are configured and published