Unable to open Case entity forms – any of them…

Unable to open Case entity forms – any of them…

I just ran into one of the weirdest errors I have seen in my Dynamics CRM/365 carreer, and I have seen a few.

The problem we had was that the case entity had stopped working more or less totally. When trying to open any type of case form either as a normal user or in the form editor, I got a more or less anonymous error message. After a lot of banging my head against the wall and loosing some of my few strands of hair, I finally with the help of Deepesh excellent blog article:
https://dynamicsofdynamicscrm.com/2015/09/22/error-resolutionthe-case-of-the-form-which-stopped-loading-in-dynamics-crm/
it got me on the right track. I did some URL-hacking to try to access the form editor directly and accidentaly got to a mixed form editor. Very weird, but it showed that the form itself wasn’t broken, hence there was something wrong further down… probably the fields, just as Deepesh’s error. And after removing all custom fields, I got it working. Then tediously going back and removing them one by one, I found the culprit, a custom Lookup to the Product.

To give you some more background:

When trying to edit any case form, I got the following error:

When trying to create a new case, I got the following error:

And if I downloaded the file, the contents was: (I have hightlighted the part which has some, but only slight relevance)

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: System.Web.HttpUnhandledException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #D856E3CEDetail: 
<OrganizationServiceFault xmlns:i=”http://www.w3.org/2001/XMLSchema-instance” xmlns=”http://schemas.microsoft.com/xrm/2011/Contracts”>
  <ActivityId>a3831d4c-6557-4f8a-b558-ba8c01b97e21</ActivityId>
  <ErrorCode>-2147220970</ErrorCode>
  <ErrorDetails xmlns:d2p1=”http://schemas.datacontract.org/2004/07/System.Collections.Generic” />
  <Message>System.Web.HttpUnhandledException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #D856E3CE</Message>
  <Timestamp>2017-06-29T13:12:03.5384906Z</Timestamp>
  <ExceptionRetriable>false</ExceptionRetriable>
  <ExceptionSource i:nil=”true” />
  <InnerFault>
    <ActivityId>a3831d4c-6557-4f8a-b558-ba8c01b97e21</ActivityId>
    <ErrorCode>-2147220970</ErrorCode>
    <ErrorDetails xmlns:d3p1=”http://schemas.datacontract.org/2004/07/System.Collections.Generic” />
    <Message>System.NullReferenceException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #5CCC57F6</Message>
    <Timestamp>2017-06-29T13:12:03.5384906Z</Timestamp>
    <ExceptionRetriable>false</ExceptionRetriable>
    <ExceptionSource i:nil=”true” />
    <InnerFault i:nil=”true” />
    <OriginalException i:nil=”true” />
    <TraceText i:nil=”true” />
  </InnerFault>
  <OriginalException i:nil=”true” />
  <TraceText i:nil=”true” />
</OrganizationServiceFault>

Here are some facts:

  • We had installed a solution that is an upgraded solution, originally from CRM 4 via CRM 2011 and 2013. Not sure if the field definition from the earlier versions are causing this. Probably not.
  • I tried switching off all plugin steps. But it didn’t help at all. This is usually what Microsoft support will ask you to do when you have issues why I tried it myself. Always good to try and send this to Microsoft support when registering a support ticket.
  • I have tried spinning up a clean 8.2 Dyn 365 with no customizations, creating a solution with just the case entity and importing that. It did not work. Not very strange, as the problem was a field that is causing the problem. Adding solutions does not remove anything unless you are using managed solutions with patches etc.
  • I tried exporting a small solution with just the case forms and removed all custom fields from the customization file manually and reimported it. It did not work, which is not strange either, as the error was not on the form.
  • I tried creating cases via the API. That did work. I did not use the lookup field that I later found out was the culprit. Perhaps writing something to all fields in the case entity would have generated an error. The reason for doing this was that I wanted to see if I could get an exception in my code that contained more information than what I was getting in the UI. Hence I wasn’t at all happy that it did work.
  • I tried retrieving cases via the API. That did work. Again, not happy at all.
  • I tried to manufacture the URL to the form ( https://contoso.crm4.dynamics.com/main.aspx?appSolutionId=%7b<solutionguid>%7d&etc=<entityobjectid, 112 for case>&extraqs=formtype%3dmain%26formId%3d<Guid for the ofrm>%26action%3d-1&pagetype=formeditor) That did not work. No form URL with etc=112 works.
  • I tried to retrieve the form via the API, that works. Again, not happy, but at least it showed that there probably wasn’t any problem with the form.
  • I tried to manufacture a weird URL, with the correct form id with the incorrect EntityObjectID. That showed the form, but with the information that the form is for the “other” entity. Weird, but showed that there is actually nothing wrong with the form itself. I could even edit the caseform this way, move fields, remove fields, but not add new stuff. Totally unsupported way of editing a form, but when in love, war and when Dyn365 buggs out, anything is allowed.See below. This proved to be a very useful, as the form seemed for some very strange reason to be involved in this. The way I proved this was that I had an “original”, instance where the error showed and one where I had got it to work, after removing some fields, and removing all unnecessary fields from the main form. After this I created a solution which only imported the form from the non-functioning instance for the case entity and imported it into the working instance. I had not expected the result, but it actually stopped working. With the error described above. So for some reason the form was part of the problem.
    A weird Form Editor – the Case form loaded with the Account Entity (EntityTypeCode=1). Be careful when using this, and use at your own risk!
  • I got the same error as above when I try to open the case form in the normal UI.
  • When I try to create a new case, I get the error shown in the file “AnErrorHasOccuredWithTimeStampAndLog.png”
  • As for what happened with the system just before/during/when this error occurred, we were doing customizations on the case form from a spotty internet Connection, and the case for did work before.
  • In the field-section of the Case entity, I selected “Custom” fields, and I have a notion that most of these errors are probably caused by code which mix up custom lookup fields with built in ones. So I would start by looking at lookup fields based on system entities with custom relationships to case like:
    • case 1:N case
    • product 1:N case
    • account 1:N case
    • contact 1:N case
    • pricelevel 1:N case
  • However you might have several fields that are causing errors (I did), and that might make it very tricky to find what is wrong. Cause once you managed to remove the last field causing the error, and then restore the solution and then remove it again, you will find that you are back to a non-functioning entity, and you will have to work your way through each of the fields, with all their dependencies again, until you find the next one. Hence the methodology becomes
    1. Export solution
    2. Remove fields until you get the entity to work. Document exactly which fields you try and in which order. Always work in the same order. Remove a field, try to open the case, remove the next field, try to open case form, and so on. All the time documenting, which fields and in which order.
    3. When you get the case form to work, import the solution again.
    4. Remove the the field(s) that you know are causing the problems.
    5. If, after this, it still does not work, go to 2.
  • After I removed the fields, and cleaned the form, I recreated the fields with the exact same schema-names and that worked perfectly. Not sure though how it will work when I export it, I am still not sure what is causing this. Probably some erroneous code in the case logic.
  • I was able to replicate this error on other instances. So the problem is certainly connected to the solution itself. 


So to sum it up. This is most obviously a bug in the Dynamics 365 platform as it should never be able to go into this state. In my case entity the problem was two lookups AND the main “Case” form. After removing the fields and removing all non-necessary stuff from the form by using a URL hack described above, I managed to get it working.
If you run into this, I hope you manage to fix it. It isn’t easy and it will take some time. Hopefully I have given you some pointers.

    Gustaf Westerlund
    MVP, Founder and CTO at CRM-konsulterna AB
    www.crmkonsulterna.se

    Dynamics 365 Version 9.0 Business Edition and more

    Dynamics 365 Version 9.0 Business Edition and more

    Version 9.0 is soon here and it is set to be the largest release ever from Microsoft. The biggest news on my horizon is the relase of the all new Business Edition of Dynamics 365 (BE). This will be an interesting new product and I’d thought I’d write a few lines about it just to clear some things up based on my understanding of the product.

    Note that these are my thoughts, they are based on what I have heard and what information I believe is in the public domain (non-NDA). If you know that anything is wrong or have something to add, please leave a comment and I will try to fix it as soon as possible. Due to the high level of spamming I have to use moderation on all comments.

    Is it xRM?
    Yes, it is going to be based on the xRM platform but it will be using the all new and shiny “Unified Experience” UI which is probably going to be great in many aspects, looks great and everything but also will probably have a glitch or two as it is just coming out the factory doors.

    Ok, so can I customize it?
    Yes, to some extent you will be able to. It will have specific limits that set it distinctly appart from Enterprise Edition (EE). As of now Microsoft have not been very specific on the details but they have said that the limits will be on:

    • The amount of users in the system
    • Number of custom entities
    • Max amount of GB of usage on disk
    I am an ISV developer. Will my ISV 3:rd party addon work with BE?
    As far as I understood Microsoft, they will limit ISV addons to only be able to work with the OOB entities in BE. As creating entities in the “normal” CRM/EE has almost no cost, almost all ISV solutions I have seen have at least one custom entity, if not to contain customizations. So, my answer would not be a blanket “no” but a probable, “no”. If your addon isn’t too advanced, you could probably rewrite it to make it work, but with larger addons like for instance ClickDimensions or Resco, I don’t see how that would be possible.

    Can I use a sandbox with BE?
    No. No non-production instance will be included in the price and as far as I understood, you won’t even be able to buy a non-production or even production instance of BE.
    Can I upgrade from BE to EE?
    Yes. As it is based on the same xRM framework this will totally be doable on a theoretical plane. However, I don’t know how this will work on a short term basis if, for instance, you start with a BE in Nov 2017 and in Dec 2017 decide that it was too limiting too you and you want to upgrade to EE. The reason for my hesitation in this is that BE will be based on Unified Experience and EE will not at the time of release of 9.0. I would, however, expect 9.0 to catch up further on the line and after it has been upgraded to Unified Experience, then an upgrade of an instance from BE to EE should be no problem.
    I bought the interim EE offer for BE pricing level, will I be able to downgrade to BE?
    This is a tricky one. First of all Microsoft has not made any public statement on this that I am aware of in either one or the other direction. However, I do think that the key here lies in the level of customizations that you have done to you system. If your EE system falls with the limits of # of users, # of entities and # of GB that is set by MSFT, and also not having any ISV addons not allowed according to BE and any other limitations that Microsoft might come to set before the General Availability (GA) of BE then I think you have a very good chance of being able to downgrade. However, just as I mentioned above in the ISV section, the limitations might be too limiting and creating a lot of entities and adding ISV addons both free and purchased might make it hard to move to BE.
    Can I use the Marketing App of BE in EE?
    This is a really interesting case, as this is an area where the BE will have a featureset that exceeds EE, at least at the time when it is delivered. In the big overview of all Dynamics 365 Apps (for example the one above) – the Marketing Automation slot is filled by Adobe Marketing. However, for the BE there is a Marketing App which has been created from the bottom up by Microsoft on the xRM platform. Do note that for those of you who were unfortunate to have chosen Microsoft Dynamics Marketing, that product has been discontinued, so that is as of the General Availability of Dynamics 365 (dec 2016) you should really start thinking of moving away from it.
    However, the new and shiny Marketing App for BE is strickly speaking only for BE for the time being. I think that the feature set it has is perceived to be too small for the Enterprise segment, although I can perceive many customers using the Enterprise edition that would probably be more than happy with it.
    As for the future for the Marketing App in EE only Microsoft knows what they have planned and if I knew I couldn’t have written anything here either. What we know is that they have invested quite a lot of money in building some Marketing Automation features for the BE which is only aimed at the lower end of the customer segment. I would find it noteworthy if they did not leverage that investment in some way in the Enterprise segment as well. However, building a Marketing Automation solution that can match other Enterprise Marketing Automation systems is not something that even Microsoft can do at the flick of the hand, so I would not expect this to show up for at least a year or two. And it might of course be that they will slowly evolve the BE Marketing App until it is fit to grow into the larger Enterprise segment by just turning some switches, but I guess only the future will show.
    As of now, Adobe is the preferred partner for Marketing, something I personally would like to see more detail to. What does it acutally mean? Seems there is some integration engine but no availble whitepapers to dowload that describes what it does. http://www.adobe.com/enterprise/microsoft-partnership/digital-foundation-azure.html 
    If Microsoft are investing in building their own EE Marketing Automation App, which does not seem very far fetched althought it might take some time, you might need to take this into consideration if you are considering investing in a new Marketing Automation system for your organization and you are already running Dynamics 365.
    If you have any other questions on Dynamice 365 Business Edition, please ask them in the comment. Not sure I can answer, but I can try!
    By the way, my blog was awarded the 78:th best CRM blog of all in the world in all CRM categories. Hence the new shiny logo to the right. That was worth some celebration!

    Gustaf Westerlund
    MVP, Founder and CTO at CRM-konsulterna AB
    www.crmkonsulterna.se

    Don’t miss our new sales oriented blogging

    Don’t miss our new sales oriented blogging

    When blogging on this blog I try to keep content king why I would rather not blog than blog about
    something that I don’t think brings value to you as readers. I have the greatest respect for you as readers of this blog and I hence try to keep the content focused on what typically developers, architects and application experts might be interested in.

    Content is King

    However, there are a lot of other topics that are relevant as well and we have started blogging about those as well at CRM-Konsulterna. You can find it at http://crmpaketet.se/blogg/ where we discuss matters which are of more interest to salespeople. It is in Swedish as this is our primary market and it is also part of our new digitalization strategy which we are implementing with inbound content marketing (the blogging and articles) and technically driven by ClickDimensions as the Marketing Automation tool. This is a great new way of doing business but requires all the techy parts to really work so there is a lot of room for us tech-weenies to get our hands dirty. But the tricky part is getting the business end people on track, they are usually a bit slow (not dumb) when it comes to changes and hence it takes some time for them to accept these new ideas of digitalization.

    Gustaf Westerlund
    MVP, Founder and CTO at CRM-konsulterna AB
    www.crmkonsulterna.se

    Some dashboards are more equal than other

    Some dashboards are more equal than other

    Typically you are not allowed to remove components from the system layer in Dynamics 365/CRM

    Is this dashboard more pig than horse?

    but for some reason this does not apply to dashboards in some earlier versions of Dynamics CRM. It seems this bug has recently been fixed but if you have a version of CRM where this was possible or have been upgraded from this version, you might be missing it. I just tried this in the Online version
    8.2.0.798 and in this version it is not possible to delete dashboards but I have managed to in earlier versions.

    My friend Jerry Weinstock has blogged about this as well.

    One particular dashboard that the system is in dire need of for its mobile features is the “Sales Dashboard” as this is the default dashboard for the mobile and tablet clients. This cannot be changed although the default dashboard can be changed within the mobile client by the user after it has been started. See MSDN for more info in this.

    In case you do manage to delete it or it has been deleted, Power Objects blog have described how to restore dashboards from instance with this dashboard in it. In short, create an unmanaged solution in that other instance containing the “Sales Dashboard” and then export and import the solution into the instance missing it.

    Before closing the window showing the results, open the log of the import and get the guid of the dashboard and then use the url of another dashboard to insert the GUID into the url to get to the “Sales Dashboard” and change it’s name and/or the label of the the tab to what it typically is in case it doesn’t show up directly.

    In case you do not have one, here is a link to an unmanaged solution file (version 8.0) containing just the sales dashboard. SalesDashboard_1_0_0_0_target_CRM_8.0.zip

    Gustaf Westerlund
    MVP, Founder and CTO at CRM-konsulterna AB
    www.crmkonsulterna.se

    Update on BPF gotcha

    Wrote an article a few days ago on the BPF new architecture and effects that it might have.

    I spoke with Roger Gilchrist, a Principal Program Manager with the Product team during the eXtreme365 conference and he mentioned that using the “Process Stage” fields are actually not supported if you read the SDK very closely. This document is a very long document and it is not very clear in the UI and there is no other very obvious way of solving triggering on stage changes than the triggering on Process Stage changes, with which he did agree.

    The important lesson from that, I think is that not everything you see in the UI is actually supported for use.

    Gustaf Westerlund
    MVP, Founder and CTO at CRM-konsulterna AB
    www.crmkonsulterna.se