CRM migration

Migrate from Zinc to Microsoft Dynamics 365 Sales

Field-level mapping, validation, and rollback between Zinc and Microsoft Dynamics 365 Sales . We move data and schema; workflows are rebuilt natively in Microsoft Dynamics 365 Sales .

Zinc logo

Zinc

Source

Microsoft Dynamics 365 Sales

Destination

Microsoft Dynamics 365 Sales  logo

Compatibility

93%

13 of 14

objects map 1:1 between Zinc and Microsoft Dynamics 365 Sales .

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Migrating from Zinc to Dynamics 365 Sales requires solving a non-standard data model problem: Zinc stores candidate profiles and semi-structured reference check records that have no native equivalent in Dynamics 365's entity model. FlitStack AI designs a custom Dataverse table (Background_Check__c) with fields for check type, status, result, verifier name, verification date, and a notes field for unstructured comments. We map Zinc candidates to Dynamics 365 Contacts using email as the merge key, then link each check record to its Contact via a lookup relationship. Check status values (Pending, In Progress, Complete, Failed) migrate as picklist values on the custom entity. We preserve original completion timestamps as custom datetime fields since Dynamics 365's standard CreatedDate reflects migration time, not the original check completion date. For integrations with ATS platforms that Zinc maintained (Greenhouse, BambooHR), we document those connections for manual rebuild in Dynamics 365's Power Automate flows. FlitStack uses scoped read access on Zinc and Dynamics 365's Data Export Service for the migration run, with a 24–48 hour delta window capturing any records created or updated during cutover. The entire operation is scoped read-only on both systems — your team keeps working in Zinc throughout the migration.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Zinc logo

Zinc

What's pushing teams away

  • Lack of live chat support forces users to rely on a chatbot or email, which some find inadequate for time-sensitive hiring queries.
  • Admin visibility into usage volumes — how many checks remain or have been used — is limited in the standard UI, frustrating finance and HR operations teams.
  • Custom check builder lacks an accessible backend view for some administrators, making it hard to audit or manage check usage at scale.

Choosing

Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales

What's pulling them in

  • Deep Microsoft 365, Teams, and Outlook integration makes Microsoft Dynamics 365 Sales a natural fit for Microsoft-first organizations already invested in that ecosystem
  • Sales Enterprise and Premium tiers offer unlimited custom tables and advanced AI-driven forecasting and predictive analytics not available in lower tiers
  • Professional tier pricing at $65 per user per month offers a lower entry cost than Salesforce for SMB teams with straightforward CRM needs
  • Flexible customization options allow businesses to build bespoke apps, tailor forms and views, and integrate with other Dynamics 365 modules
  • Microsoft Copilot AI tools are embedded directly into the sales workflow on Enterprise and Premium, automating routine tasks and providing deal intelligence

Object mapping

How Zinc objects map to Microsoft Dynamics 365 Sales

Each row shows how a Zinc object lands in Microsoft Dynamics 365 Sales , including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

Zinc

Candidate

maps to

Microsoft Dynamics 365 Sales

Contact

1:1
Fully supported

Zinc's Candidate record maps to Dynamics 365 Contact. Email is the primary identity field used for merge-key resolution against existing Dynamics 365 contacts. If a matching email exists in Dynamics 365, the records merge; otherwise a new Contact is created with a custom field preserving the Zinc Candidate ID.

Zinc

Candidate

maps to

Microsoft Dynamics 365 Sales

Lead

1:many
Fully supported

If the Zinc candidate has not yet advanced to a formal hiring stage, FlitStack creates a Lead record in Dynamics 365 rather than a Contact. The split logic uses a check_status field: candidates with zero completed checks route to Lead; one or more completed checks route to Contact.

Zinc

Check / Reference Check

maps to

Microsoft Dynamics 365 Sales

Background_Check__c (custom entity)

1:1
Fully supported

This is the primary non-standard mapping. Zinc's Check record has no native Dynamics 365 equivalent — we create a custom Dataverse table called Background_Check__c with fields for check type, status, result, verifier name, verification date, and notes. The entity lives inside a managed solution for clean promotion across Dynamics 365 environments.

Zinc

Check

maps to

Microsoft Dynamics 365 Sales

Background_Check__c (lookup to Contact)

1:1
Fully supported

Each Background_Check__c record carries a lookup field (ContactId__c) pointing to the Dynamics 365 Contact that corresponds to the Zinc candidate. The lookup resolves after the Contact is created or matched, enforcing referential integrity. Records without a resolvable candidate email are flagged for manual review.

Zinc

Check Status

maps to

Microsoft Dynamics 365 Sales

Background_Check__c.Status__c

1:1
Fully supported

Zinc's status picklist (Pending, In Progress, Complete, Cancelled, Failed) maps value-by-value to a custom picklist on Background_Check__c.Status__c. Each value retains its original display label from Zinc to maintain reporting continuity. Probability weights for pipeline forecasting are assigned per status value within the Dynamics 365 picklist definition, allowing sales managers to view expected close rates based on verification status.

Zinc

Check Type

maps to

Microsoft Dynamics 365 Sales

Background_Check__c.CheckType__c

1:1
Fully supported

Zinc supports multiple check types: Employment Verification, Education Verification, Criminal Background, Reference Check, Credit Check, etc. Each type maps to a corresponding picklist value on Background_Check__c.CheckType__c. If Zinc uses a custom check type not pre-defined in our mapping table, we add it as a new picklist value during schema setup.

Zinc

Check Result

maps to

Microsoft Dynamics 365 Sales

Background_Check__c.Result__c

1:1
Fully supported

Check results (Clear, Consider, Discrepancy, Unable to Verify, etc.) map to a custom picklist on Background_Check__c.Result__c. The value mapping preserves the result label from Zinc exactly to maintain reporting continuity. Results are stored as custom picklist fields on the Background_Check__c record and can be used in Dynamics 365 views, reports, and Power BI dashboards without requiring any transformation or re-labeling.

Zinc

Verifier Info

maps to

Microsoft Dynamics 365 Sales

Background_Check__c (verifier custom fields)

1:1
Fully supported

Zinc stores verifier name, title, company, phone, and email. We map these to individual custom fields on Background_Check__c: VerifierName__c, VerifierTitle__c, VerifierCompany__c, VerifierPhone__c, VerifierEmail__c. Optionally, if the verifier is a known Contact in Dynamics 365, we create a secondary lookup to that Contact record.

Zinc

Check Notes / Comments

maps to

Microsoft Dynamics 365 Sales

Background_Check__c.Notes__c

1:1
Fully supported

Zinc's free-text notes and reference comments migrate as a large-text custom field (Notes__c) on Background_Check__c. This preserves the original text verbatim. We do not parse or normalize this field because the structure is non-uniform and normalization could lose context. The field is surfaced in the Dynamics 365 form for recruiter review.

Zinc

Requester

maps to

Microsoft Dynamics 365 Sales

Background_Check__c.RequesterName__c / RequesterEmail__c

1:1
Fully supported

Zinc tracks the requester (recruiter or hiring manager) who initiated each check. This data has no native Dynamics 365 equivalent since OwnerId maps to the Dynamics 365 user who owns the record. We preserve the Zinc requester as custom fields on Background_Check__c for audit continuity. The actual Dynamics 365 record Owner is set during migration based on the requester's email match to a Dynamics 365 user.

Zinc

ATS / HRIS Integration

maps to

Microsoft Dynamics 365 Sales

Power Automate Flow (manual rebuild)

1:1
Fully supported

Zinc maintains OAuth integrations with ATS platforms (Greenhouse, BambooHR, Lever) that push candidate data bidirectionally. Dynamics 365 has no native ATS connector. These integrations are documented by FlitStack with the OAuth endpoints and trigger logic, then rebuilt manually as Power Automate flows or Dataverse connector apps after the migration.

Zinc

Candidate Email

maps to

Microsoft Dynamics 365 Sales

Contact.EmailAddress

1:1
Fully supported

Email is the merge key used to match Zinc candidates to existing Dynamics 365 contacts. FlitStack applies email normalization before matching: removing periods from Gmail addresses (john.smith @ gmail.com → johnsmith @ gmail.com) per RFC 5321 to reduce false-positive duplicates.

Zinc

Candidate First Name

maps to

Microsoft Dynamics 365 Sales

Contact.FirstName

1:1
Fully supported

Direct name field mapping from Zinc's first_name to Dynamics 365 Contact.FirstName. FirstName in Dynamics 365 has a 120-character limit, which comfortably accommodates most candidate names. If a null first name is encountered in Zinc, FlitStack preserves it as an empty string in Dynamics 365 rather than skipping the field, ensuring data completeness.

Zinc

Candidate Last Name

maps to

Microsoft Dynamics 365 Sales

Contact.LastName

1:1
Fully supported

Direct name field mapping from Zinc's last_name to Dynamics 365 Contact.LastName. LastName is a required field in Dynamics 365, so FlitStack validates this field during the extraction phase. If Zinc returns a null or empty last name, FlitStack sets a placeholder value ('Unknown') and flags the record for manual review before finalizing the migration, ensuring no records fail validation due to missing required fields.

Gotchas + challenges

What specifically takes care here

Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.

Zinc logo

Zinc gotchas

High

Integration settings do not migrate automatically

Medium

Custom check templates with bespoke rubrics require field-level mapping

Low

Audit logs are not accessible for export

Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales gotchas

High

Professional tier 15-table custom table limit blocks migrations

High

October 2024 pricing increase applies at renewal for all customers

Medium

Custom fields must be created in the UI before API writes

Medium

Power Platform request limits apply to bulk migrations

Medium

Activity records orphaned to inactive owners fail silently

Pair-specific challenges

  • Zinc has no standard CRM objects — the entire schema must be designed from scratch

    Unlike HubSpot or Salesforce which share common CRM object models, Zinc stores candidate and check data in a purpose-built structure that has no native equivalent in Dynamics 365 Sales. FlitStack must design a custom Dataverse entity (Background_Check__c) with all required fields, relationships, picklists, and security roles before any data can move. This custom-entity design phase is the longest single step in a Zinc migration and requires Dynamics 365 admin rights to create tables in the target environment. Teams that skip this schema design step will have data validation failures when the migration run starts because Dynamics 365 will reject records destined for non-existent entities.

  • Semi-structured verifier notes require normalization into a structured custom field

    Zinc stores reference comments and verifier notes as free-text fields that vary in length and format — some verifiers write one sentence, others write detailed narrative assessments. Dynamics 365's custom text fields have a 4000-character limit (or 128 for nvarchar fields). FlitStack normalizes these into a custom large-text field on Background_Check__c, but the normalization process truncates anything exceeding the limit and flags records at risk. Teams that rely on verbatim verifier narratives for compliance audits should review the truncation log before signing off on the migration. If any narrative exceeds the limit, it is split across multiple field instances and a custom suffix indicates continuation.

  • Dynamics 365 Dataverse API and Power Platform rate limits affect migration throughput

    Dynamics 365 Sales runs on Dataverse, which enforces tiered API request limits that vary by license tier. The Dataverse Web API allows 6000 requests per user per 5 minutes for Enterprise licenses. FlitStack paces migration writes to stay within these limits, but Zinc-to-Dynamics migrations with 50,000+ check records and complex lookups can exhaust the request budget during peak write windows, causing HTTP 429 throttling responses. We handle throttling with exponential backoff, but the retry logic extends the migration timeline. Teams should provision a dedicated migration service account with elevated API allocation or coordinate with their Dynamics 365 admin to temporarily increase Dataverse capacity during the migration window.

  • Candidate email normalization is required before merge-key resolution

    Zinc candidates store email addresses exactly as entered, including Gmail addresses with or without periods (john.smith @ gmail.com vs johnsmith @ gmail.com). Dynamics 365 Contact.EmailAddress follows the same format. When FlitStack uses email as the merge key, Gmail addresses without normalization produce false negatives — the same person appears as two separate contacts because one email has periods and one does not. We apply RFC 5321-compliant normalization before lookup (removing periods from Gmail domains), but this can occasionally match incorrectly when two candidates share a normalized address. Teams with high Gmail usage should review the normalization match report before finalizing the migration.

  • ATS/HRIS integrations that Zinc maintained do not transfer and must be rebuilt

    Zinc connects to ATS platforms (Greenhouse, BambooHR, Lever) and HRIS systems (Workday, Bob) via OAuth integrations that push candidate records bidirectionally. Dynamics 365 has no native ATS or HRIS connector — these integrations must be rebuilt from scratch using Power Automate flows or custom connector apps registered in Azure AD. FlitStack documents the OAuth endpoints, trigger events, and data payloads from Zinc's integration log so the Dynamics 365 admin has a rebuild reference. However, the actual flow development is a separate workstream that typically takes 2–4 weeks per integration and is not included in the standard migration engagement. Teams should plan for this gap between go-live and full workflow continuity.

Migration approach

Six steps for a successful Zinc to Microsoft Dynamics 365 Sales data migration

  1. Audit Zinc data export and design Dynamics 365 schema

    FlitStack initiates a scoped read export from Zinc's API to enumerate all candidate records, check records, check types, and picklist values. We generate a data audit report covering record counts per type, null-rate analysis for required fields (email, last name), and check status distribution. Simultaneously, we design the Background_Check__c custom Dataverse table inside a managed solution, defining all fields (Status__c picklist, CheckType__c picklist, Result__c picklist, verifier fields, timestamps), setting field-level security, and creating the ContactId__c lookup relationship. This schema plan is delivered as a shareable XML solution file that your Dynamics 365 admin imports before migration validation runs.

  2. Resolve candidate-to-contact merge keys and clean data

    FlitStack extracts all candidate email addresses from Zinc and runs them against Dynamics 365's Contact table to identify existing matches. We apply email normalization (Gmail period removal, case normalization) before matching to reduce false negatives. Candidates with no matching email in Dynamics 365 are flagged for new Contact creation. Candidates with null email are flagged for manual review — these records cannot be automatically resolved and require your team to supply an email or designate them as anonymous leads. We deliver a pre-migration merge report showing which candidates will merge vs. create new contacts so your team can correct false positives before the migration run.

  3. Migrate Contacts first, then check records with lookup resolution

    FlitStack sequences the migration in dependency order: Contacts (or Leads) first, then Background_Check__c records second. The Contact migration populates all standard fields plus the Zinc_Candidate_ID__c custom field. The Background_Check__c migration then uses Zinc_Candidate_ID__c (not email) to resolve the ContactId__c lookup, ensuring that foreign-key references are valid before the records commit. If a Background_Check__c record references a Contact that failed to migrate, the check record is held in a staging table and retried after the contact is corrected. This sequencing prevents orphaned check records in Dynamics 365.

  4. Run sample migration with field-level diff

    Before the full run, FlitStack migrates a representative sample of 50–100 records spanning multiple check types and status values. We generate a field-level diff comparing the Zinc source values against the Dynamics 365 destination values for every mapped field. The diff report surfaces picklist mismatches (values not yet added to the custom picklist), truncation events on long text fields, lookup resolution failures, and any records where the email normalization produced an unexpected merge. Your team reviews and approves the diff before the full migration run commits.

  5. Cut over with delta-pickup for in-flight checks

    FlitStack executes the full migration run against Dynamics 365 using the Data Export Service or Dataverse Web API depending on record volume. A delta-pickup window (typically 24–48 hours) runs after the primary migration to capture any check records created or completed in Zinc during the cutover. The delta window uses Zinc's updated_at timestamp to pull only changed records since the migration start time. An audit log records every operation (create, update, skip, error) for reconciliation. One-click rollback reverts all records created by the migration if reconciliation reveals critical gaps.

Platform deep dives

Context on both ends of the pair

Zinc logo

Zinc

Source

Strengths

  • Structured digital reference reports replace unstructured phone calls, producing consistent, comparable data across hires.
  • Fast turnaround from request to completed reference — multiple reviews cite 48-hour or next-day completion timelines.
  • Integration ecosystem connects to major ATS and HRIS platforms, automating request dispatch and result ingestion.
  • Configurable check templates let companies tailor questions to role level and department without rebuilding from scratch.
  • High customer satisfaction — 4.7/5 on G2 with 83% five-star ratings across 174 reviews.

Weaknesses

  • No live chat or real-time support channel — users are directed to a chatbot or email for assistance.
  • Admin and finance users have limited self-service visibility into check consumption, volume usage, and remaining quota.
  • Integration settings and webhook configurations must be manually re-established after any migration, with no automated export of these settings.
  • Custom check templates with non-standard scoring rubrics may not map cleanly to alternative reference-checking platforms.
Microsoft Dynamics 365 Sales  logo

Microsoft Dynamics 365 Sales

Destination

Strengths

  • Native integration with Microsoft 365, Teams, Outlook, and SharePoint for unified productivity workflow
  • Unlimited custom tables and complex workflows on Enterprise tier enable deep customization for complex sales processes
  • AI-driven predictive analytics and deal intelligence on Enterprise and Premium tiers help sales teams prioritize pipeline
  • Dataverse unified data layer provides a consistent API and data model across all Dynamics 365 and Power Platform apps
  • Strong security model with Field-Level Security and Record Ownership rules for governance-conscious enterprises

Weaknesses

  • Sales Professional tier caps custom tables at 15, creating a migration ceiling for highly customized SMB environments
  • October 2024 pricing increases of $15 per user across all tiers apply to existing customers upon renewal
  • Implementation typically requires costly certified partners, adding 30–50% to total project cost
  • Updates and platform releases can disrupt customizations and plugins, requiring regression testing after each wave
  • Non-Microsoft integrations require additional configuration or middleware, limiting flexibility for heterogeneous tech stacks

Complexity grading

How hard is this migration?

Standard CRM migration. All 8 core objects map 1:1 between Zinc and Microsoft Dynamics 365 Sales .

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Zinc and Microsoft Dynamics 365 Sales .

  • Object compatibility

    A

    All 8 core objects map 1:1 between Zinc and Microsoft Dynamics 365 Sales .

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Zinc: Not publicly documented.

  • Data volume sensitivity

    B

    Zinc doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Zinc to Microsoft Dynamics 365 Sales migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Zinc to Microsoft Dynamics 365 Sales data migrations

Answers to the questions buyers ask most during Zinc to Microsoft Dynamics 365 Sales migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Zinc to Microsoft Dynamics 365 Sales migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Zinc to Dynamics 365 migrations complete in 48–72 hours of clock time for under 5,000 candidate records. Larger setups with 50,000+ records or multiple check types extend to 7–10 days. The longest single step is designing and validating the custom Background_Check__c Dataverse table schema before data can move. Data cleansing (null emails, duplicate candidates) during discovery can add 3–5 days for dirty datasets.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Zinc.
Land in Microsoft Dynamics 365 Sales , intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day