Have you ever wondered where some of those "missing components" come from when adding an entity to a solution?

For example, here's a production CRM system (which has been around since the 4.0 days and has been upgraded up to 2015 along the way), where I add the Account entity to a blank solution and I was presented with a list of web resources considered “Missing and Required” which looks like this:


I know that I already have each of these in the org that I am going to import the Account changes to, so my preference is to keep this solution lean and mean so I'll just say "No" to the prompt about adding the missing components. However, I am curious as to the reason why there is a web resource listed by the name of Account_main_system_library.js. Because in the full schema (the "default solution" in Production) when I look at the Account entity the only associated web resource files that I see on the Forms are these:

And in fact, I can not find any web resource with this name anywhere in the entire schema.  Here is an excerpt of the “All” view of web resources sorted by schema name and nothing by that name appears, hence my dilemma:


So why does the solution manager tell me when I try to add the Account entity that Account_main_system_library.js is a “missing required component”? Any ideas? By the way, the same thing happens for just about every out of the box system entity.

The answer has to do with how CRM performs its upgrades from one version to the next. Per Microsoft Tech Support the following explanation was given. It has some interesting details that we hope you find useful.

As you can see, the solution manager lists the Account_main_system_library.js as a missing required web resource component. This web resource was "created" by Microsoft initially in the CRM 2011 release so it could hold any existing 4.0 javascript that previously existed directly on the Account form. In CRM 4.0 we were using the client side scripts for FormXml data which then was replaced by web resources post the 2011 release.

During a CRM server upgrade, the system goes through the customizations and takes the following actions:

The Account_main_system_library.js would not be found in the schema/UI when searching for web resources because it is used by Microsoft internally; however, it is embedded in the customization.xml for the Account entity and is present in the entity definition. The same is true for many of the base system entities. Hence, whenever we add one of the base system entities to a solution it performs the check for each system solution and other managed solutions and that is when the "missing required component" is shown. Additionally, you may notice that the same web resource file may be listed multiple times because it may "exist" in the definition of multiple entity main forms.

For more information about this blog or C5 Insight contact us here!