web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Customer experience | Sales, Customer Insights,...
Answered

Managing contacts when they change companies

(4) ShareShare
ReportReport
Posted on by 8
How does your organization manage contacts when they change companies? Do you deactivate the original contact record and create a new one under the new account? Or do you change the account on the existing contact?
 
For example, Bob leaves CompanyA and starts a new job at CompanyB. CompanyA and CompanyB are not related. 
Categories:
I have the same question (0)
  • Assisted by AI
    Saif Ali Sabri Profile Picture
    2,654 Moderator on at
    In Dynamics 365 (Sales), the recommended approach is generally NOT to create a new contact just because the person changes companies.
    Instead, treat the contact as a person entity independent of the account, and manage their employment history separately.

    Recommended approach (best practice)

    1. Update the existing Contact’s Account

    When Bob moves from CompanyA to CompanyB:
    • Open the existing Contact record (Bob)
    • Change:
      • Parent Account = CompanyB
    • Leave all historical activities, emails, notes, etc. intact
    This preserves:
    • Full interaction history with Bob
    • Reporting continuity
    • Marketing history (if applicable)

    2. Preserve the previous relationship (important)

    Because CompanyA and CompanyB are unrelated, you should not lose historical affiliation.
    Use one of these options:

    Option A (preferred): Connections

    Create a Connection record:
    • From: Bob (Contact)
    • To: CompanyA (Account)
    • Role: “Former Employer”
    • Add:
      • Start Date / End Date (if your org tracks it via fields or custom attributes)
    Then update the contact’s Parent Account to CompanyB.
    This gives you:
    • Clear employment history
    • No duplicate contacts
    • Clean reporting

    Option B: Custom “Employment History” entity (best for advanced orgs)

    If HR-style tracking is needed:
    Create a custom table like:
    • Employment
      • Contact (lookup)
      • Account (lookup)
      • Start Date
      • End Date
      • Job Title
    This is the most scalable and reporting-friendly approach.

    What NOT to do

    Don’t create a new Contact just because they changed jobs
    → This fragments activity history and duplicates data

    Don’t deactivate the old contact
    → You lose engagement history and reporting accuracy

    When would you create a new contact?

    Only if:
    • It’s a different identity (e.g., same name but different person)
    • Different email address AND no reliable way to match identity
    • Compliance rules require separation

    Summary

    Best practice:
    Keep one Contact record per person, update the Account when they change jobs, and use Connections or a custom Employment History model to preserve past affiliations.
    ===========================================
    Here’s a clean way to automate this in Power Automate + Dataverse so every time a Contact changes company (Parent Account), you automatically log the previous employment as a Connection record.

    Goal

    When Contact.Parent Account changes:
    • Capture the previous Account
    • Create a Connection:
      • Contact → Old Account
      • Role: “Former Employer”

    🔧 Prerequisite (important)

    Enable change tracking behavior for Dataverse trigger:
    Use trigger:
    Dataverse – When a row is added, modified or deleted
    And configure:
    • Change type: Modified
    • Table: Contacts

    ️ Flow Design (Step-by-step)

    1. Trigger: Contact modified

    Action:
    • Dataverse → When a row is added, modified or deleted
      • Table name: Contacts
      • Change type: Modified

    2. Capture only “Account change” updates

    Add a step:

    “Get changes for a row (Dataverse)”

    • Table: Contacts
    • Row ID: Contact (from trigger)
    • Since: Trigger Window Start Token
    This gives you:
    • Has column changed → parentcustomerid

    3. Condition: Did Account change?

    Add a Condition:
    If:
    • Has Column Changed: parentcustomerid = true
    👉 If NO → terminate flow
    👉 If YES → continue

    4. Get previous Account value

    Now we need the old account, not the new one.
    Add action:
    Dataverse – Get a row by ID (Contacts)
    • Row ID: Contact ID
    Then use:
    • Pre-image is NOT directly available in basic trigger
    • So instead use:
      • Enable “Run after + auditing” approach OR
      • Preferred: add “Pre-Image” in trigger settings

    Best Practice (recommended)

    In trigger settings:
    • Add Pre Image
    • Include column:
      • parentcustomerid
    Now you can access:
    • Pre Image: parentcustomerid

    5. Extract values

    Create variables:

    Old Account

    • OldAccount = PreImage.parentcustomerid

    New Account

    • NewAccount = Contact.parentcustomerid

    6. Create Connection record

    Action:
    Dataverse – Add a new row (Connections)
    Set:
    • Record 1 (Contact):
      • Contact (from trigger)
    • Record 2 (Account):
      • OldAccount
    • Role:
      • “Former Employer” (create this role if not existing)
    Optional fields:
    • Description: “Auto-generated on account change”
    • Start/End date logic (if needed)

    7. (Optional but recommended) Write audit note

    Add:
    Add a note (annotation) to Contact
    Example text:
    Employment changed from [OldAccount Name] to [NewAccount Name] on [date].

    🧠 Optional Enhancements

    1. Prevent duplicate connections

    Before creating:
    • Search Connections where:
      • Contact = X
      • Account = OldAccount
      • Role = Former Employer
    If exists → skip

    2. Store Employment History properly

    Instead of Connections, create a custom table:
    • Employment History
      • Contact
      • Account
      • Start Date
      • End Date
    Then flow becomes more reporting-friendly.

    3. Handle multiple job changes

    This design automatically supports:
    • Unlimited job moves
    • Clean historical trail

    📌 Summary

    This flow ensures:
    No duplicate contacts
    Full employment history preserved
    Automated relationship tracking
    Clean CRM data model
  • Suggested answer
    Nagaraju_Matta Profile Picture
    178 on at

    Great discussion topic.

    In most implementations I’ve worked on, I usually reparent the existing contact to the new account and update details like title, email, or phone as needed. That keeps the full activity/timeline history intact and avoids duplicate contact records.

    I’d consider creating a new contact only where the relationship with the previous company needs to remain separately traceable for business, reporting, or compliance reasons.

    For me, the key decision is whether the business is tracking the person or the role within that company — that usually makes the right approach clearer.


    Thanks
    Nagaraju Matta

  • Suggested answer
    ManoVerse Profile Picture
    1,221 Super User 2026 Season 1 on at

    I agree with the Nag's comment that this largely depends on how your organization manages contacts and defines them whether as individual customers or company (account)-associated contacts.

    If your business model is account-driven where the company is the primary entity generating business, then creating a new contact under the new account is often more appropriate. This helps avoid confusion, especially since historical activities and records for that contact would be tied to the previous company (CompanyA). Additionally, when a contact moves to a new organization, their email domain typically changes, which further supports creating a new contact aligned with the new account to maintain clean and accurate business tracking.

    However, if your organization treats contacts as individual customers independent of the company, then it is better to update the existing contact record with the new company information( Company B) , ensuring continuity of the person’s history.

  • Suggested answer
    Hamza H Profile Picture
    1,997 Super User 2026 Season 1 on at

    Best practice in Dynamics 365 Sales is:

    • Do NOT create a new contact
    • Do NOT deactivate the old contact

    Instead:

    • Update the existing contact record
    • Change the Parent Account from CompanyA to CompanyB
    • Keep history intact (emails, activities, opportunities, timeline)

    Then:

    • Keep past relationship history with CompanyA via activity records
    • Optionally use a field like “Previous Account” or employment history tracking if you need reporting on movement

    Only create a new contact if it is truly a different person (not the same individual).

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Launch!

Jump in, show your community spirit, and win prizes!

Women in Power Builds Momentum

Expanding mentorship, skilling, and AI innovation

Congratulations to the May Top 10 Community Leaders

These are the community rock stars!

Leaderboard > Customer experience | Sales, Customer Insights, CRM

#1
Hamza H Profile Picture

Hamza H 140 Super User 2026 Season 1

#2
Nagaraju_Matta Profile Picture

Nagaraju_Matta 128

#3
Abhilash Warrier Profile Picture

Abhilash Warrier 70 Super User 2026 Season 1

Last 30 days Overall leaderboard

Product updates

Dynamics 365 release plans