Further complicating matters is that this error message is only a snippet of the entire customization.xml file, so this error may have several more occurrences, as well. Your options are twofold: fix each error one at a time and try to import after every fix, or review the entire customization.xml file, doing a one-time clean-up of anything that matches the errors shown above. While the second option is definitely faster, please be absolutely certain that you are editing the correct things – don't inadvertently remove or change something you shouldn't have! So, if you are still new to this, our recommendation is to do the first method, and just change one piece at a time, until you are sufficiently familiar with solutions content to take a stab at the second option.
Cannot import security role. The role with specified role id is not updatable or role name is not unique.
This message states CRM found a security role name that already exists. You cannot have a duplicate security role name, so if you receive this message, simply find the duplicate security role name(s) that already exist(s) in the target environment.
When you locate the duplicates, if they have different GUIDs (meaning they were created manually in both environments), then you will not be able to import the solution until one of the security roles has been uniquely renamed.
The dependent component XX does not exist.
During the initial import, it is possible that a dependency will not be caught, allowing you to begin the import. If so, you may receive a message similar to the one below:
The dependent component EntityRelationship (Id=po_campaign_po_satisfactionsurvey) does not exist. Failure trying to associate it with SystemForm (Id=5c2404c5-69ed-4633-a193-0852d38f732a) as a dependency. Missing dependency lookup type = PrimaryNameLookup.
To fix this this issue, you will need to examine the error message in more detail. Our example above shows that a relationship is needed for a form that we are importing – likely, it is referenced in the related items, but does not exist in the target system. So, we would just need to add it to our solution if we want the form to be imported.
The label XX already exists. Supply unique labelid values.
There is likely a duplicated ID on the customization.xml file, and we will need to remove it. Let's say our error message was as follows:
The label 'Summary', id: 'c706accd-f53f-46f5-a254-b64766269216' already exists. Supply unique labelid values.
We will need to search the customization.xml file for this id, and we will likely see it twice in the same section. However it was created, it will not be possible to import until one of them is removed.
Please exercise caution when removing this, so that you only remove the necessary part. This seems like a good time to reiterate the importance of making a backup copy of your customization.xml file before you begin editing. Please do it!
Transaction (Process ID #) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
This is an infrastructure-related issue, likely the cause of another process acting on CRM that resulted in a conflict – for example, when multiple users attempt an import at once, or when other integrations/backups are running that result in a conflict for back-end resources.
Fortunately, this issue is typically resolved by just trying it again. However, for an on-premises environment, if you receive this message, we recommend checking with a systems administrator first to determine whether there are any other jobs impacting the SQL environment. It may be in your best interest to delay the import until a time where any running jobs have completed, instead of immediately trying the import again.
The import file is invalid. XSD validation failed with the following error:
You will see this error code if the customization.xml file was edited and contains errors. There could be many causes and variations of this error code. Here is one we saw not too long ago:
The import file is invalid. XSD validation failed with the following error: 'The 'labelid' attribute is invalid - The value '{ddcee403-c32b-459f-a4f5- 20e23fb32eb0}' is invalid according to its datatype 'FormGuidType' - The Pattern constraint failed.'. The validation failed at:
As you can see, the GUID shown above is an incorrect format because it contains a space. The obvious lesson here is to always be careful when editing code!
Plug-in assembly does not contain the required types or assembly content cannot be updated.
There are two general causes for this error – either the solution file includes a plugin that is missing some additional items, or something is preventing the target CRM plugin from being updated. If it is the first issue, then the solution file will need to be recreated with the correct components, since the plugin is malformed.
If the plugin is fine, but you are still getting this message, then the problem is that it is failing to update/overwrite the existing plugin. Some options are:
- Change the existing plugin to "isolation mode = none," in case it is a security issue.
- Delete the existing plugin, since you will be reimporting it with the solution file.
Error occurred while fetching the report.
This essentially means CRM is not able to find a place to add the report, so you may have to do some troubleshooting on the report server for an on-premises environment. Some things to check are:
- Is the report server running?
- Do other reports work? Be sure to try standard and custom reports.
- Can the report server URL be accessed from the CRM server?
An alternate solution is to just exclude the report from the solution file.
The ribbon item XX is dependent on ribbon control id=YY
This is another dependency-related error, although this one is specific to the ribbon, and it likely means you have a corrupted form. So, the problem itself is not the solution being imported, but rather the forms/entities the solution touches. In order to fix this, you will need to either edit the ribbon XML or use a ribbon editor, and examine the ribbon control in question.
For this problem, we advise seeking help from a developer (or PowerObjects!) since it may take quite a bit of troubleshooting.
Here's one example of this error: you have a button with a hide function. Then, somehow, the hide function gets removed, but the button is still there, and it still contains a reference to your function. One possible fix is to recreate the same function, which will enable you to make changes to your button – to either remove it or fix it.
Once this is done, you will be able to make changes to your form (and import your solution).
Required parameter XX is not found for control YY.
This means that within one of the control tags, CRM is expecting another tag, but does not find it. The fix will involve looking further at the message, and adding the necessary tag. Here is one example:
Required parameter QuickForms is not found for control classid="{5C5600E0-1D6E-4205-A272-BE80DA87FD42}" datafieldname="po_postedform" disabled="false">Edit.
Within the "Interests" definition, it is expecting a tag for but does not find it, and your fix will be to add an additional tag for QuickForms.
The wait operation timed out.
This error indicates that the import took too long and exceeded the time-out value allowed by Dynamics 365. This is performance-related, and may occur when you are importing processes – components that rely on the Microsoft Dynamics CRM Asynchronous service. You may want to simply try the solution import again to see if it works.
Otherwise, for a CRM Online environment, our recommendation is for you to open a ticket with Microsoft.
For an on-premises environment, there are two suggestions:
You may also simply retry the same import at a later time. Note: CRM performance is a separate discussion altogether. Please spend some time researching this before attempting any changes. The following MS blog will provide some background on different time-out values that you can set:
https://blogs.msdn.microsoft.com/crminthefield/2011/06/13/microsoft-dynamics-crm-timeout-settings/
Column names in each table must be unique. Column name X in table Y is specified more than once.
This error is nearly identical to "An item with the same key has already been added," which we covered earlier. It involves a field that already exists in the target environment but with different capitalization.
A previous blog covered exactly how to solve this particular error:
https://powerobjects.com/blog/2013/07/01/importing-solution-in-crm-2011-field-is-not-unique-error/
EntityMap XX – Import: failure. This entity map does not exist on the target system.
This is simply a fancy way of saying you forgot to add a relationship to your solution. To find out more about this error, examine the customization.xml file once more. Let's say this is the error message you received:
EntityMap po_employment -> incident - Import: FAILURE. This entity map does not exist on the target system.
In the customization.xml file, scroll down until you reach the section, where you may see something like this:
po_employment
incident
This is the piece of the file that CRM reads and does not like, because the relationship itself does not exist in the target environment. The fix is simple: go back to your original solution, and add the missing relationship, as shown below:

Cannot add a Root Component X of type Y because it is not in the target system.
This is also a dependency-related problem. To investigate, you will need to know to what component it is referring. First, let's figure out the type. The "type" in this error points to the entity code, which you can learn about here:
https://msdn.microsoft.com/en-us/library/mt608054.aspx
So if your message says it can't find a root component of type 24, for example, it is referring to a Form; if it is 20, then it's a Role, and so forth, as described in the linked-to page above.
The root component will be a GUID, which you will need to look for in the customization.xml file. Once you find it, it will take a deeper review of the file to determine how to either remove the component block from the file to re-import it, or to get the missing component into the solution or environment. Sorry, but for this issue, you will need some amount of proficiency in reading XML, since there is no clear-cut solution without doing some investigating.
Should be exactly 1 MessageProcessingStep registered for workflow.
We've seen this problem occur a few times, and it is the result of a process activation record that has been duplicated.
To better understand this error, here is a brief overview of how CRM processes (workflows) work:
You create a new workflow, and add some steps. This creates a new record of type process, where category = workflow, and type = definition. Have you ever done an advanced find, and looked at the view called "Activated Processes"?

This view filters out the other "types" so you only see the actual workflows that have been created. A process can also be of type "template," which is simply a workflow template. It can also be of type "activation."
What is a process of type "activation"? Let's go back to the workflow you created, currently sitting in draft mode. Once you decide to activate it, your workflow will be active. By doing this, you have just created a new process record, where the type = activation. And it is this record that CRM triggers the events defined in the workflow. When you deactivate your process, it also deactivates the other process (type = activation). Umm, yeah, it can be a bit confusing.
Getting back to the error and how it can be fixed – this error may have happened as a result of a bug or glitch that, when a workflow was activated, created more than one process of type "activation." And it will not allow you to reimport a workflow if there are two or more activation records. In order to fix it, you will have to manually delete the activation records for this workflow so that you have no more than one.
For those in on-premises environments, we have had successful results with a SQL delete command for the activation records. Please note that this is not a Microsoft-supported method, so please take a database backup before doing this, and do it only after work hours.
For CRM online customers, we recommend working with Microsoft to remove the duplicate record, as it cannot be done from the UI.
Invalid link type for system entity cascading actions.
This is an error we saw after an update of CRM 2013, though we have not run into it since. The error refers to the cascade definitions of a relationship, and there exists a nice blog with more information about this specific error, which is caused by a system relationship that changed behavior after an update:
http://cloudxrm.blogspot.com/2014/09/invalid-link-type-for-system-entity.html
No ErrorCode Listed!
We've gone through a lot of different Error Codes that can be generated for different issues during solution imports, but there is one more scenario we have yet to cover. Imagine you are doing an import, you receive an error, and you download the log file. When you open it, you see something like this:

In the "Status" column, you just see Processed, Processed, Processed, and then suddenly Unprocessed. No Failure, nothing to help you. Yikes! What do you do?
Well, the likely cause is the same problem we have covered a few times in the past – when a component you are importing already exists in the target environment, but there is a capitalization mismatch.
The problem with finding out which component is leading to the problem is that you won't be able to tell by the downloaded log file in Excel. As you can see in Row 16 above, the last ItemType processed was "Chart" from the Incident entity. But that is of no help whatsoever! The only way to find the culprit is to examine each component, one at a time. Ugh.
Trust us, we feel your pain. But one suggestion to make your job easier is to create a new solution in your source CRM, add just one entity, and try to import it. If it succeeds, keep adding additional entities until you receive the error, and then you'll discover the entity that likely contains a field that is causing the issue. Once you narrow it down to one entity, you will have to do a comparison of all custom fields, looking for any fields that exist in both environments but with mismatched capitalization of the schema.
General Customization Tips
Most of the problems presented in our examples can be avoided by following some best practices for customizing CRM. For any production CRM environment, our recommendation is to have a separate development/uat environment where you perform your customizations. Once things have been tested, those same customizations should be moved to your production environment via solutions.
This holds true even for small changes, such as increasing a column width of a specific system view or creating a new field. While it may be tempting to create the same change directly in your other environments, which is probably faster than moving it via solutions, we do not recommend this. Doing it this way has the potential for typos and mismatches, especially related to schema capitalization, that will cause problems for future imports. Additionally, other components, such as security roles and connection roles, will have mismatched GUIDs and will also fail your future imports.
Sometimes, editing the customization.xml file is either necessary or is the best approach compared to other methods. This is ok to do – as long as you do it carefully and knowingly. And take backups! It's so quick to do and takes up very little storage space. Just copy your zip file and save it – now you're ready to edit!
Most of the problems mentioned in this blog can be avoided by following this process. But if all else fails, feel free to contact our support team – we are ALWAYS happy to help you.
Happy CRM'ing
What a great post. Very valuable.
What would be your advance to be handling solutions for dev to production? In dev it is of course unmanaged. But do you make it managed in production?