Importing Legacy Users to Dynamics 365 Online


  • Users need to be created in Office 365 and assigned a Dynamics 365 license to be added to Dynamics 365.
  • Migration projects often require historical users created to properly map ownership of historical data.
  • This post outlines is a simple, faster way to import historical users to Dyn365 Online without adding them to Office365.
  • There are some caveats to this process to be aware of.

Importing Legacy Users

When you are migrating to Dynamics 365 online from On-premise, one of the big chores is migrating the data from the existing On-premise system to the Online system.

Part of that work is to establish the ownership of that data.  As most Dynamics 365 pros know, Dynamics 365/CRM has the concept of record ownership as part of the security context.  Records can be owned either by an organization, a team or in most cases, by users.

For Dyn365 “first party” apps, this may be the particular salesperson that works on an opportunity or the support rep that works on a case.  Dynamics users could also directly represent project managers, workers tracking billable time, etc.  Ownership of data also plays an important role in such items such as phone calls, emails and activity based records.

Custom entity owned by a user record

For some organizations, maintaining the true ownership of historical data is important for analysis or even compliance reasons.  Note that I am sure there are GDPR implications with historical employees that also need to be considered.  This is out of scope of this post.

In all organizations, there will always be a certain amount of user turnover.  Obvious companies do not want to pay for licenses or subscriptions for past employees.  Employees that have left typically will have their Active Directory and Dynamics 365 user accounts disabled (and sometimes deleted).  From a historical point of view, Dynamics 365 records will continue to show these users as the “owners”, even if the related user accounts are now deactivated.


If you are migrating to Dynamics 365 Online via the FastTrack services, the historical users in your current on-premise system will be brought over as part of that process (as it is a true database copy).

However, if you are not using the FastTrack services or if you are migrating from another CRM system, you will need to address the issue of historical users.

If you need to maintain this ownership information, this presents a bit of a problem when migrating from on-premise to online.  In order to migrate the data from one system to the other while maintaining the correct ownership means that not only your current users need to be created in Dynamics 365 online but also all the historical users that have ownership to historical data in the system.

For some organizations with high turnover, this could mean 100’s of historical users.  In order to add a user to Dynamics 365, they would need to be first added to Office 365, then given a Dynamics 365 license, wait for the user to be created in Dynamics 365 (this takes anywhere from a few minutes to sometimes up to an hour), assign the user a security role with access to the historical record types, and then have the license removed from that Office 365 user, which would then disable the Dynamics 365 user.  This process has the potential to take days.

Historical Users Added and Assigned a License temporarily

When historical data is imported, the ownership of the records can be matched to the appropriate active or historical user.

I have myself and I have talked to others that have gone through this very tedious process of shuffling users and licenses for the purposes of maintaining ownership.

I have learned that there is a faster, more convenient way to import legacy users into Dynamics 365 Online but there are a few caveats.

The process is pretty simple, you just need to use the regular Dynamics 365 import tools and import the list of historical users.  Since the users are not created via Office 365, they will automatically be flagged as disabled users in Dynamics 365 when they are imported.

Simply create your list of “legacy users” that will not be assigned Dynamics 365 subscriptions in tool like Excel.

List of Past Employees

Then use the regular Dynamics 365 import tool to import this information directly to the user entity.

Dynamics 365 Import Tool

As you likely know, you cannot assign a security role to a disabled user.  This would be a potential problem when importing historical data as a record cannot be assigned to a user that does not have a least some level of access to the entity.

Error when assigning security role to disable user

However, I have found that when importing user records via the regular import process, whether it is a bug or for some other reason, the user gets assigned to the out-of-the-box salesperson role.

Imported Disabled user has Salesperson Role

We just need to manipulate the OOB salesperson role to have access to the particular historical records we need to migrate.  After the migration we can then retract those permissions.  It is a workaround, and fair warning it may be a hole patched eventually by Microsoft.

Another issue would be if that particular legacy user eventually did return to the organization and needed to become an active user.  Their “historical” user record would not be able to be re-activated since there is no way to re-link to an Office 365 user record (that I am aware of).  In this case you would need to create a new user and then use a tool (such as Kingswaysoft) to re-assign the historical records.


This post provides a method to import historical users into a fresh Dynamics 365 Online system.  While there are some caveats to be aware of, it may save a lot of time.


CRM Audio where George and Joel talk about historical users in Dynamics 365.

Nick Doelman is a Microsoft Business Application MVP.  While not dealing with Zombie user accounts in Dynanics 365 projects, Nick spends his time in the gym picking up heavy stuff and putting it down again.




14 thoughts on “Importing Legacy Users to Dynamics 365 Online

  1. Thanks Nick for sharing this. We were also thinking of the same lines while doing Data Migration.

    However just wanted to check with you how did you handle the migration of fields “createdon”. Actually, there is an “overridecreatedon” field available which we can use to set the “legacy created on date” value in this field. But it seems that it does not work with the disabled users.


    1. interesting… you might have to import your data assigned to a live user, update the date and then re-assign to the disabled user. I haven’t tried this but that is the first approach I would take.


  2. This is a good blog post about a method to import historical users into a fresh Dynamics 365 online system. Great! Thanks much for the clear explanations with screenshots. I was looking for something on Google but I’ve landed-up on this page and I completely enjoyed reading this helpful post. Finally, I have found what exactly I want from the related post link i.e. “Updating your Dynamics CRM/365 Customizations”. Awesome site navigation structure and thank you!

    Best Regards
    Nous Infosystems


  3. This got me out of a hole as we had over 1000 legacy users: many thanks. BTW, it still works in Feb 2019!
    Assigning Read Access on all the custom entities in the OOB Salesperson role was enough to allow records to be assigned to the legacy users.


  4. Hi, I’ve been trying to do this and set the “created by” to one of these imported “stub” users. It doesn’t work, Microsoft have had the case open on this for a couple of months. Have you been able to do this?


    1. Is this during import of data? Are you filling the “Override Created by” instead of “Created By”. To be honest, I haven’t migrated an on-prem to online lately, and things change rapidly.


  5. Hi Is it any other way to schedule a flow to import data from Active Directory on-prem to dynamics 365 on the azure cloud?
    i tried to use Azure AD data which is not up to date.

    thank you?


    1. To be honest I have no idea if the Power Automate On-premise gateway could support this or not. I suppose potentially using Power Automate Desktop could potentially work?


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s