Tag Archives: Errors

How to Display Informative Errors from ASP.NET Web API in Dynamics 365

When developing a Web API to interact with Dynamics 365, the model of interaction may be like so:

Plugin performs logic, makes call to Web API (GET, PUT, POST, etc.) -> Web API receives data, performs logic, sends response to Plugin -> Plugin receives response and performs logic with it.

However, if the Web API encounters an error while performing the internal logic, often the plugin will receive an unhelpful error message along the lines of “500 Internal Server Error”. This is due to an error occurring within the internal logic of the Web API. But this by itself is quite unhelpful, and contains no useful information that can be used to debug the issue.

This is particularly the case when used in conjunction with Sandboxed plugins in 365 Online, where you may be using a Web API to perform logic that you cannot accomplish within sandboxed plugins (SQL operations, performing logic from 3rd party libraries, etc.).

Take SQL operations for example. When performing a SQL operation that requires authenticating to a remote SQL database, you may want to know whether you’ve failed to authenticate, and whether that was because of a login error, an error with the database, or some other error. If you lose this error somewhere along the process of it being passed to the plugin, the issue will become a lot more difficult to troubleshoot. So how do you preserve the error messages until the end?

Catch Specific Exceptions in Your Web API

If you know the specific regions of code within the web service that the issues may occur, it is possible to either put try catch blocks around these sections, or check the data received for issues using conditionals before processing. For example, with an ASP.NET API, if the input for the request is not verified, it is possible for a null or incorrectly formatted object to be passed as input to the function. You could then put a check at the top to test the integrity of the data, then if the data is compromised, return an error informing the client that the input was not accepted.

Return Specific Errors From Your Web API

Now that you’re catching specific errors, it’s possible to return more specific errors. When raising errors from your Web API, it’s important to use accurate error codes, so that users who are familiar with http error codes can more easily solve the issue. A list of HTTP Status Codes can be found here:

When you’ve caught the error, and determined the appropriate status code to represent it, you can raise this error using the HttpResponseException. This will return the error with the specified code to the client.

clip image002 thumb How to Display Informative Errors from ASP.NET Web API in Dynamics 365

If you want to add a little more information to your error, you can fill out the body of the response also:

 How to Display Informative Errors from ASP.NET Web API in Dynamics 365

This allows you more direct control over the information transmitted back to the client. This will also make debugging from Dynamics 365 much more efficient. The above code is from a try catch block, where the program is trying to connect to a SQL database. Any errors raised by the connection (invalid password, invalid username, invalid connection url, etc.) are directly inserted into the ReasonPhrase for the Response Message, and returned with that to the client.

Catch and Display the Error in Dynamics 365 – Plugin

Once you have the Web API throwing useful errors, you’ll need to catch and interpret these in your plugin. This is actually fairly simple. Simply place your API operation into a try/catch block, and instead of catching a generic exception, catch a WebException – this is the type of exception returned by the Web API should it encounter any issues. You can then format this exception, and raise it as a plugin exception, which will provide a nice error message for the user. An example of how to do this is given below.

 How to Display Informative Errors from ASP.NET Web API in Dynamics 365
This returns an error similar to the one below.

 How to Display Informative Errors from ASP.NET Web API in Dynamics 365Which when debugging, is much more useful to the user than a generic Internal Server error. Throwing an InvalidPluginExecutionException also allows you to prevent the plugin from continuing to process with an invalid return from the Web API, however, you could use another method of handling and displaying this error, like tracing it to the plugin trace log. Note that in this example, we are simply raising a Plugin Exception with our formatted error string as input, but it’s also possible to pass an exception object to the InvalidPluginExecutionException, and there are also other parameters you may find useful.

Let’s block ads! (Why?)

Magnetism Solutions Dynamics CRM Blog

Understanding Data Quality: How Data Quality Errors Arise

Data quality is important to business. That you know. But do you understand what it takes to provide data quality In yesterday’s blog, we looked at one real-life example of a data quality failure. Today we’ll review how data quality problems can arise.

blog errors Understanding Data Quality: How Data Quality Errors Arise

Briefly defined, data quality refers to the ability of a data set to serve whichever need a company hopes to use it for. That need could be sending marketing materials to customers. It could be studying the market to plan a new product feature. It could be maintaining a database of customer data for help with product support services, or any number of other goals.

No matter what the exact use case for your data, data quality is important because without it, the data can’t fulfill its intended purpose. Errors within a database of addresses would prevent you from using the data to reach customers effectively. A database of phone numbers that doesn’t always include area codes for each entry falls short of providing the information you need to put the data to use in many situations.

blog banner landscape Understanding Data Quality: How Data Quality Errors Arise

The Causes of Data Quality Problems

Now that we’ve outlined what data quality means and provided a few examples of what it looks like in the real world, let’s delve a bit deeper into the types of problems that lead to data quality shortcomings.

blog error correction Understanding Data Quality: How Data Quality Errors Arise

Here are six common ways in which data quality errors can creep into your organization’s data operations, even if you generally adhere to best practices when it comes to managing and analyzing your data:

1. Manual Data Entry Errors

Humans are prone to making errors, and even a small data set that includes data entered manually by humans is likely to contain mistakes. Typos, data entered in the wrong field, missed entries and so on are virtually inevitable.

2. OCR Errors

Machines can make mistakes when entering data, too. In cases where organizations must digitize large amounts of data quickly, they often rely on Optical Character Recognition, or OCR, technology to do so. OCR technology scans images and extracts text from them automatically. It can be very useful when, for example, you want to take thousands of addresses that are printed on paper and enter them into a digital database so you can analyze them using Hadoop. The problem with OCR is that it is almost always imperfect.

If you’re OCR’ing thousands of lines of text, you’re almost certainly going to have some characters or words that are misinterpreted – zeroes that are interpreted as eights, for example, or proper nouns that are read as common words because the OCR tool fails to distinguish properly between capital and lowercase letters.  The same sorts of issues arise with other types of automated machine entry of data, such as text-to-speech

3. Lack of Complete Information
When compiling a data set, you frequently run into the problem of not having all information available for every entry. For example, a database of addresses may be missing the zip codes for some entries because the zip codes couldn’t be determined via the method that was used to compile the dataset.

4. Ambiguous Data

When building a database, you may find that some of your data is ambiguous, leading to uncertainty about whether, how and where to enter it.

For example, if you are creating a database of phone numbers, some of the numbers you seek to enter may be longer than the typical ten digits that you have in a United States phone number. Are those longer numbers simply typos, or are they international phone numbers that include more digits? In the latter case, does the number contain complete international dialing information?

These are the sorts of questions that are hard to answer quickly and systematically when you’re working with a large body of data.

5. Duplicate Data

You may find that two or more data entries are mostly or completely identical.

For example, maybe your database contains two entries for a John Smith living at 123 Main St. Based on this information, it’s difficult to know whether these entries are simply duplicates (maybe John Smith’s information was entered twice by mistake) or if there are two John Smiths (a father and son, perhaps) living at the same address. You need to sort out seemingly duplicate entries like this to make the best use of your data.

6. Data Transformation Errors

Converting data from one format to another can lead to mistakes.

As a simple example, you may have a spreadsheet that you convert to a comma-separated value, or CSV file. Because data fields inside CSV files are separated by commas, you may run into issues when performing this conversion in the event that some of the data entries in your spreadsheet contain commas inside them.

Unless your data conversion tools are sufficiently smart, they won’t know the difference between a comma that is supposed to separate two data fields and one that is an internal part of a data entry. This is a basic example; things get much more complicated when you must perform complex data conversions, such as taking a mainframe database that was designed decades ago and converting it to NoSQL, a category of database that has become popular in just the last few years.

blog laptop Understanding Data Quality: How Data Quality Errors Arise

Correcting Data Quality Errors

These are the types of data quality mistakes that are very difficult to avoid. In fact, the best way to think about data quality problems is to recognize them as inevitable.

It’s not because your data management process is flawed that you have data quality problems. It’s because the types of data issues described above are impossible for even the best run data operation to avoid.

Fortunately, there are solutions. Syncsort offers a range of data integration and data quality tools that can help you minimize the number of errors that are introduced during processes like data conversions, then find and automatically fix the data quality problems that do arise.

To learn more, check out our latest eBook, The New Rules for Your Data Landscape to see how organizations are adjusting their data management strategies as data shifts from IT to the business. Understanding Data Quality: How Data Quality Errors Arise

Let’s block ads! (Why?)

Syncsort + Trillium Software Blog

Filtering Errors in PowerBI

I just faced this problem when trying to analyze some information from google analytics in PowerBI. In my specific situation, I was trying to extract a number from some URL querystrings and filter the rows without the number. When I set the data type of the column to decimal, the rows without a number receive an expression error. Let’s build an example filtering errors in PowerBI.

The image below illustrate a small set of data in excel that will result in this problem. The objective is to extract the numbers and exclude all the rows without numbers. 

PBIError1 Filtering Errors in PowerBI

After importing the excel file in PowerBI, let’s extract all the content after the “=” sign using Transform => Extract=> Text After Delimiter. 

PBIError2 Filtering Errors in PowerBI

PBIError25 Filtering Errors in PowerBI

PBIError35 Filtering Errors in PowerBI

Now, let’s change the data type to decimal using Transform => Data Type

PBIError3 Filtering Errors in PowerBI

We have two errors in this resultset, as you may notice in the images below. There is no way to exclude these errors using the interface, we need to code in M to achieve this. There are two useful functions available to filter errors: Table.RemoveRowsWithErrors and Table.SelectRowsWithErrors, the names already explain what they do.

PBIError4 Filtering Errors in PowerBI

PBIError5 Filtering Errors in PowerBI

We need to open the Advanced Editor, inside View, to edit the M code.

PBIError6 Filtering Errors in PowerBI

PBIError65 Filtering Errors in PowerBI

We will add a new line before the “In” statement. In this line, we will create a new name for our result, like this:

After the “=” sign we can use the function, it has two parameters: The name of the result of the previous line and the column we want to check for errors.

Two more details to go:

  • The previous line need an extra comma at the end
  • After the “in” statement, we need to change the name of the final result set to our new name

PBIError7 Filtering Errors in PowerBI

The final result, without the errors:

PBIError8 Filtering Errors in PowerBI

Let’s block ads! (Why?)

SQL – Simple Talk

Troubleshooting Solution Import Errors

gggggg 300x225 Troubleshooting Solution Import Errors

Remember when CRM life was so much simpler that solutions did not yet exist? If you had separate development and production environments and you wanted to move your customizations, you simply clicked Export Customizations and voila! It was done. Those were the days.

Nostalgia Warning – in case you’ve forgotten, here’s a screenshot to jog your memory:

022817 1446 Troubleshoo1 Troubleshooting Solution Import Errors

With CRM 2011, the concept of solutions was introduced, giving us a new set of powers – by picking individual entities, workflows, etc., we now had the ability to group together and move only those customizations we wanted to include in our solution. The next great solutions advancement came with CRM 2016: we can now select specific components within each individual entity – so instead of moving the entire contact entity, for example, we have the option of moving only a certain view or field within the entity. And we can do this without having to hack the xml in the zip file.

(By the way, if you want to learn more about solutions, please have a look at our CRM Book: http://crmbook.powerobjects.com/system-administration/customization/solutions/)

But as wonderfully advanced as the CRM solutions concept is, it also has the potential to cause some serious headaches – failed imports, error messages, etc. – when certain things are even slightly amiss. With that in mind, in today’s blog, we will try to ease those headaches by providing you a what-to-do guide for when things don’t go so smoothly. We hope this helps ensure that you will always be able to successfully import your solution into an environment.

But hey, one quick warning: while we strived to make this guide as helpful as possible, dealing with CRM solution import issues can sometimes become quite time-consuming, especially when it requires you to look at XML code. We’ll try our best to guide everyone in this blog, but if you ever feel like you’re in over your head, please contact us – we’re here to help!

The solution import process is quite simple. Under “Settings” / “Solutions,” click Import, as shown below.

022817 1446 Troubleshoo2 Troubleshooting Solution Import Errors

Select the zip file of your Solution, and click Import. At this point, Microsoft Dynamics will calculate the solution.xml file and check that all dependent components are included for the import process. If a missing dependency is found, the next screen will display a dependency error, and you will not be able to import your solution until the missing components are addressed.

Often, if you are importing a solution that came from a different CRM org, a dependency error is caused by a Managed Solution that exists in the source CRM but not in the target. For example, let’s say you have two environments: development (dev) and production (prod). You create a solution in dev called “Email,” add the email entity, and export it. But when you try to import it in prod, you receive the following error during the dependency check:

022817 1446 Troubleshoo3 Troubleshooting Solution Import Errors

At first glance, it may seem daunting to fix a laundry list of dependency errors for a successful import. However, when we take a closer look at the “Managed Solution” column, we see that all the error rows indicate either PowerEmail or PowerSurveyPlus. In this example, it’s because both PowerEmail and PowerSurveyPlus are Managed Solutions that exist in dev but not in prod. To resolve this issue, we need to simply import both PowerEmail and PowerSurveyPlus into prod before importing our “Email” Solution.

So, as far as Managed Solution components go, always remember that they cannot be exported via an Unmanaged Solution. And to export from one CRM org or environment into another, we always recommend that the same Managed Solutions that exist in your source also exist in your target.

Looking at the same example above, let’s say we imported both necessary PowerPacks into our prod environment and then tried to import the “Email” Solution one more time. Again we failed the dependency check, though this time, the error screen contains just one item:

022817 1446 Troubleshoo4 Troubleshooting Solution Import Errors

What does this mean? Here, we begin by looking at the last column, “Required by,” which is formatted as follows: “Component (Entity).” In our example, it’s telling us that the “Email” component within the email entity requires a component that does not exist. Next, we look at the “Type” field – since it is Web Resource, we can deduce that the “E-mail” refers to our form called E-mail, which contains a reference to a web resource called new_email_js_lib (from the “Name/Id” field) that has not been included in our solution.

To successfully import this solution, we will need to add the web resource mentioned in the error screen (new_email_js_lib), export it again, and then try another import.

There are lots of other types of dependency errors that could occur when you don’t include the necessary components in the solutions, including:

  • A field that uses a global option set.
  • A system view that references newly-added fields.
  • Forms that contains newly-added fields.
  • A form that contains a non-existent quick view form.
  • A site map that contains newly-added components.
  • Forms or Business Process Flows that include missing security roles.

Thankfully, the message displayed is usually very helpful in telling us what is missing, as well as why it is needed. Back to the E-mail example above: we fixed our problem by including the missing web resource. But what would be another way for us to import the solution if we didn’t want to move that web resource? Well, since the only dependency in our example is required by the E-mail form, we can simply exclude that form from the solution.

Another error you may receive after selecting the zip file of your solution and clicking Import is: “This solution package cannot be imported because it contains invalid XML.”

022817 1446 Troubleshoo5 Troubleshooting Solution Import Errors

The most likely reason for this error is that someone previously edited the customization.xml file incorrectly, resulting in bad XML code. Often, it is as simple as an error in the capitalization of an identifier, a basic typo, or having a missing or invalid tag. To find out where the error is, look at the error screen and hover your mouse over “Technical Details.” This is actually a link that takes you to a page showing more detailed information. Clicking on the link will reveal something similar to this:

022817 1446 Troubleshoo6 Troubleshooting Solution Import Errors

In this example, we have a typo when specifying our cascade relationships: “NoCas1cade.” This is the result of someone manually editing an XML file and mistyping something. This can be easily corrected by opening the customization.xml file within the zip file (covered below), searching for the typo, and correcting it. Of course, not all fixes are as easily identifiable as this example.

Note: inside the solution zip file, there exist several files. One is “solution.xml,” which contains a list of dependencies required before the import can be attempted. However, this file isn’t foolproof, as there is still a possibility that a dependency is missing but is not listed in the solution.xml file. When this is the case, it results in the initial dependency check succeeding, allowing you to attempt to import the file. However, it will then fail the import, and an error log will be generated.

Besides dependencies, additional errors can occur during an import. When you first select your zip file and click Import, a progress indicator will appear. In the event of an error, the changes included in the solution file to that progress point will not be applied, and you will have the option to download the log file.

022817 1446 Troubleshoo7 Troubleshooting Solution Import Errors

Click on Download Log File, which will result in an XML file – be sure to open it in Microsoft Excel.

WARNING! Any time you deal with XML (or any other code, for that matter), always tread carefully and always make a backup copy before doing any edits. Simply right-click the zip file and copy it. That way, you will have a backup ready to be re-imported if any problems arise during your editing process.

The Excel file will contain two tabs. The first tab, called Solution, will contain some basic information:

022817 1446 Troubleshoo8 Troubleshooting Solution Import Errors

The second tab, called Components, will contain detailed information about each individual item being processed for import. 022817 1446 Troubleshoo9 Troubleshooting Solution Import Errors

This is what we will use to identify issues and determine necessary fixes. The “Status” column will list the components successfully processed before the error occurred. Subsequent components after the failure will remain unprocessed, since the first failure causes CRM to stop processing. In this way, it is easy to identify the source of the error, though there is also a downside: there may still be more issues, but we can only catch one at a time.

Our troubleshooting process will involve looking at the “ErrorCode” column. Based on the message from the screenshot above, the message received in our example is:

“An item with the same key has already been added.”

Some of the error codes are straightforward and to the point, while others require more digging. And on occasion, you will need to make edits to the XML files inside the zip file. Don’t worry: you don’t necessarily need to be an XML expert to work through some of these issues, though for a non-developer, simply looking at code can often be challenging work. However, if you are a CRM administrator, once you get the hang of looking at CRM XML, it will become increasingly familiar each subsequent time. Oh, and one quick and super-important tip: remember that XML is always case-sensitive!

Let’s have a look at different error codes you can receive in this log file, beginning with the example above.

An item with the same key has already been added.

Stated simply, with this error CRM is telling you that you’re trying to create an item that already exists. Unfortunately, this is one of the more generic error messages, so it isn’t always super helpful. However, the good news is that often, this happens for one of two reasons: the field already exists in CRM but is a different type, or it is the same type but the schema is capitalized differently. Let’s look at two examples that show how each issue can happen.

Example 1: there exists a field (type = text) in your contact entity called “new_ShoeSize.” You then attempt to import a solution that includes a field (type = whole number) with the exact name, “new_ShoeSize.” CRM will attempt to create a new field, but will error out because this name – or key, as referenced in the error code – is already taken.

Example 2: let’s say you have the same text field, “new_ShoeSize,” and this time you are importing a solution where the field is also of type text, but the schema of that field is all lower case: “new_shoesize.” This will result in the same error occurring. CRM will recognize that you have a new field called “new_shoesize,” but when it tries to create it, it will find that the name already exists.

Something to keep in mind is that similar types of problems may ultimately result in different ErrorCode readings. For example, capitalization differences in the schema (as described in Example 2 above) may, depending on your CRM version among other things, actually result in different error codes! Argh, right? Well, we hope to cover all of them in this guide. Remember that as long as you are able to start with an error code – any error code, you can usually identify your problem and possible fix.

The ‘XX’ attribute is not declared.

This error message refers to something in the customizations.xml file that CRM does not recognize as valid. For example, an import could error out with the message, “The ‘Label’ attribute is not declared,” followed by “validation failed at …” and then a sample of the XML file where the error occurs.

This means that when the solution file was created, something CRM can’t process (an undeclared variable) was inadvertently included. To fix it, we will need to examine the customization.xml file to remove the offending part of code. Let’s say you downloaded the log file and saw this message:

The import file is invalid. XSD validation failed with the following error: ‘The ‘label’ attribute is not declared.’. The validation failed at: ‘…ition></filter></filter></filter>{3e3ca60a-9732-48bd-b16f-f4682eff6f67}” <<<<>>>> label=”Priority (Case)” />0

Look at the error location, which identifies the spot just before the error. Since the error message states that “label” attribute is not declared, we know the error being generated is due to the very next statement:

label” <<<<>>>> label=”Priority (Case)” />

But wait, if it’s bad code, why is it there in the first place? Possibly your CRM was upgraded from a previous version and there is deprecated code, though it could really be for any number of reasons. The bottom line is that we need to remove it:

  1. Extract customizations.xml from the zip file.
  2. Open it with your favorite text editor, such as notepad.
  3. Search for the error you received. In this example, you would search for label=”Priority (Case)” and then delete it.
  4. Save the file.
  5. Copy it back to the zip file and it will be ready for another import attempt.

Now, don’t get mad, but here’s where it gets even trickier. If you look at the entire error message shown above, you may notice that there are further recurrences of “label=.” Recall that we stated earlier that CRM will fail on the first error and not attempt to process it further, potentially masking additional errors? Well, this is one of those times. In our case, each of the highlighted references will eventually error out during import attempts:

label=”Priority (Case)” />label=”Response By (Case)” />label=”Resolve By (Case)”</span> />0

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:


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:


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:


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:

022817 1446 Troubleshoo10 Troubleshooting Solution Import Errors

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:


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”?

022817 1446 Troubleshoo11 Troubleshooting Solution Import Errors

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:


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:

022817 1446 Troubleshoo12 Troubleshooting Solution Import Errors

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.

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

Let’s block ads! (Why?)

PowerObjects- Bringing Focus to Dynamics CRM

Microsoft Dynamics CRM – Quick Fix for #VALUE! Errors in Exports to Excel

You may have noticed some of your Microsoft Dynamics CRM reports running just fine, but when exporting to Excel, you’re not getting your desired results. This blog will help you with a Microsoft Dynamics CRM – Quick Fix for #VALUE! Errors in Exports to Excel.

The issue in Dynamics CRM is with reports being exported to Excel. It is not an issue when downloading to PDF, Word or other formats. But the cell values of the number and currency fields in your Excel file may not populate as expected.

Here is a sample custom report of Estimated Revenue and Actual Revenue information for Opportunities. I’ve run it in CRM and everything displays perfectly, and I’m getting my desired appearance and output.

Microsoft Dynamics CRM Quick Fix for VALUE Errors in Exports to Excel 1 e1447187541927 Microsoft Dynamics CRM – Quick Fix for #VALUE! Errors in Exports to Excel

However, when saving this report to Excel, cells are populating incorrectly.

Microsoft Dynamics CRM Quick Fix for VALUE Errors in Exports to Excel 2 e1447190575294 Microsoft Dynamics CRM – Quick Fix for #VALUE! Errors in Exports to Excel

This is what you get after you’ve exported to Excel.

Microsoft Dynamics CRM Quick Fix for VALUE Errors in Exports to Excel 31 e1447190607594 Microsoft Dynamics CRM – Quick Fix for #VALUE! Errors in Exports to Excel

This is a known issue, and the fix will come in a future update (2015 Update 1.2). In the meantime, a rudimentary, but probably the quickest and most manageable work around would be to choose to download this to Word.

Microsoft Dynamics CRM Quick Fix for VALUE Errors in Exports to Excel 4 e1447192313173 Microsoft Dynamics CRM – Quick Fix for #VALUE! Errors in Exports to Excel

Then cut and paste into Excel. Here’s what it should look like.

Microsoft Dynamics CRM Quick Fix for VALUE Errors in Exports to Excel 52 Microsoft Dynamics CRM – Quick Fix for #VALUE! Errors in Exports to Excel

What you will find when you use this workaround is that you will need to do a little re-formatting to column widths, etc. But you will have your report with values displaying correctly.

In addition to this really easy solution to this issue with #VALUE! displaying where actual number and currency values should be in cells, there are more detailed modifications. However, for your average User this would be the recommended path until Dynamics CRM 2015 Update 1.2 is released.

By Erin Karatkiewicz, Applications Consultant, with xRM³, a Microsoft Partner specializing in Dynamics CRM consulting, implementation, integration, and administrative services. Based in San Diego County Southern California. For help with your CRM, contact us clicking here.

by xRM3

This entry passed through the Full-Text RSS service – if this is your content and you’re reading it on someone else’s site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.

CRM Software Blog