Beware of Legacy forms and how to fix broken case forms after upgrade

Beware of Legacy forms and how to fix broken case forms after upgrade

Been working with the upgrade of a customer from CRM 2013 to CRM 2016 on-prem and we ran into this weird error. The case form didn’t want to work after upgrade if we didn’t turn of the turbo forms. For those of you who are not aware of this, in 2015 Spring wave, there was a revision of how forms were loaded, called the turbo forms. After this version there is a setting in the first tab of System Setting where you can turn on “Legacy form rendering” if you want to go back to the old rendering method.

However, we noticed some other strange errors, for instance bool fields with Yes/No values with No as default, were shown as “False” when the form was in create state. Once the form had been saved this error went away.

Another error we saw was that if you tried to save emails, (not send them), you got an error message. The email got saved anyway, but you got a nasty message.

However, if we switched back to turbo forms, both this email error and the bool-error disapeared. Hence, it seems the legacy form controls are not nearly as well quality tested as the turbo form versions so I would strongly suggest that you do not use them unless you have no other option, and then try to move away from them as soon as possible.

So, trying to stick to my paradigm for troubleshooting; “Find where the error is first, then what the error is” – I wanted to go back to the case entity and find out why the turbo forms didn’t work.

Rickard and I, who were troubleshooting this together, enabled the dev-mode in IE (pressing F12, if you don’t know it) and opened a case. The odd thing was that the point where it broke was in one of Microsoft’s functions. I have been unable to recreate the error now so I cannot show it. And after some nitty gritty debugging in IE, we found that the script seemed to be missing “productid” and “primarycontactid” or in laymans terms, Product and Contact.

So, I added them to the case form, and magic! It worked.

But the story doesn’t end there. As I thought that this might be a good blog article and I wanted to recreate the error to have as a screendump, I removed the fields again… and mark my surprise when the form still worked… twilightzone.

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

Making CRM stick by using Dr. John Kotter 8 Step method – part 7 – Generating short term wins

In this series of posts on how to use Dr. John Kotter’s 8 Step method for implementing change specifically in CRM implementations, we have now come to the part about generating short term wins.

I think many of you who have been around in some CRM implementations, especially when using more Classic Project modells, like the waterfall, when replacing older systems with large amounts of functionality and integrations with a Dynamics CRM that management start to question the Project, and maybe suggest pulling the plug, a lot of effort has to be put into convincing the Project sponsors to continue the Project.

This is also the reason why new Project models, such as the agile model has been developed, as this makes sure to deliver short term wins early on, after each sprint. Many Dynamics CRM Consultant also try to phase implementations to make sure to deliver early on.

Dr. Kotter emphises that it is important to plan for short term wins not just to hope for them. They should be quantifiable/measurable so that you can show them to the Project sponsors as clear and undisputed wins.

In the Project, it is adivsable to define the short term wins that you are planning to achieve and assigning a person as responsible for making sure that this happens.

In one of the my upgrade Projects from CRM 4 to CRM 2013 including integrations to an ERP system we initially focused all the energy on the Technical parts of the integration and just making sure that we could get the same functionality that was actually working in CRM 4 to Work in CRM 2013, using the “Information” forms, not the new forms. However, the Customer had been checking out trials on CRM Online and when we started showing them the upgraded CRM 2013 they were disappointed, despite all our really hard Work! We had tried to slim the Project budget by excluding the form upgrade stuff, moving it to a later phase, but the Customer felt that there was no win, the spent a lot of Money in the upgrade, but for no win. So we added a few hours for fixing the forms, and this made the customer a lot happier. We should have planned for short term wins from the beginning, not just the long term win of the upgraded system, and the use of new forms in later phases. Remember customers don’t experience your input, they experience your output. Just like with communication.

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

Back to old times

Today I got involved in a project I havn’t been working in for about 2 years, a CRM 3 project that now was upgraded and there were some issues with callouts not executing properly on the production system but there were no problems on the test system. So, there probably wasn’t a code error.

After activating the crm tracing (alway a good thing to do when CRM is missbehavn’) it was quite clear that it couldn’t find the dll Microsoft.Crm.Platform.Callout.dll which of course is required by CRM 4 if you want to execute workflows since this assembly contains the classes that are inherited from in the callouts. It is a bit strange that this dll isn’t included in CRM 4 since callout are supposed to be seemlessly upgradable to CRM 4 and this is the one little stich that is missing. So, just had to dig it up and deploy it to the GAC and the callouts started working as they should.

During this I also thought there might be errors in with the assembly being unsigned and after some looking around, I found that in Visual Studio 2003 it isn’t found in the project settings so you have to fix it manually in the assemblyinfo.dll. However, this doesn’t seem necessary event though it doesn’t hurt.

So, what did I learn?
1. When in doubt, switch on CRM tracing.
2. Make sure you have a good store of all dll:s that CRM uses so that you quickly can find them. How many of you have the Microsoft.Crm.Platform.dll in the CRM 3 hosted version? It is quite rare and can be found on the installation disks but not anywhere on MSDN. If you need it, drop a comment. I approve all comments due to all the #¤#¤¤# comment spammers so you can enter your email and ask me not to publish the comment, and it wont be subject to email harvesters, if you want me to email you the file.
3. Don’t take promises of seemless upgradablity too serious. MSFT have done a great job with CRM, you don’t even have to recompile (and consider that CRM 3 uses .NET 1.1 and CRM 4 .NET 2.0 from an IIS perspective) so always do a test upgrade a couple of times before you do it live and make sure to write down all the steps you are taking. Let’s hope the upgrade from CRM 4 to CRM 5 will be truly seemless!

Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect

Logica
www.logica.com