Search code examples
formsuser-interfacedialogdynamics-365-operations

In Microsoft Dynamics 365, How can one successfully modify forms in the Application Suite?


I'm currently attempting to follow some of the recipes in Dynamics 365 for Finance and Operations Development Cookbook - Fourth Edition

Multiple recipes in "Working With Forms" suggest modifying existing models which then fail to save because -- even though I am admin in my virtual machine -- I somehow don't have permission to modify the application suite.

Do I need to do something to grant myself permission? Am I missing some steps?
Or is this obsolete? Is there some more modern way to modify the UI?

(I strongly feel something is missing since I have yet to see anything that looks browser based (e.g. HTML, CSS, JavaScript, etc.)


Solution

  • Short answer

    If you try to modify objects from standard packages like ApplicationSuite, you are doing a customization that Microsoft calls "overlayering"*. Although the documentation on overlayering sounds like this is something you can do, it actually isn't :)

    Longer answer

    Let me explain: In earlier versions of the product (e.g. ), overlayering was the normal way to customize the application. This made updates of the standard application a huge headache, which is why Microsoft decided with to go another way. They started providing various extension options to extend the standard application. This way, you can't alter the standard application anymore, but you can add new behavior to it. If all customizations are done this way, you can update the standard application without having to change the customizations, so no more update headaches.

    In the beginning of , you could still do overlayering. This is necessary to allow customers that are on earlier versions to go through the update from an overlayering to an extension model. You can see this in the announcements of the extensibility changes of early versions, where they announced what parts of the standard application become "soft sealed" (meaning the compiler shows warning messages for overlayering customizations) and "hard sealed" (compiler errors instead of warnings). As of version 8.0, all standard application models are hard sealed: https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/extensibility/changes-80

    Additional remarks

    That said, I don't think the cookbook tells you to do overlayering. I haven't looked through all recipes, but the ones I checked all use extensions. If you can provide a recipe that does overlayering, I can take a look.

    Oh, and regarding your last paragraph: You usually don't have to do any browser based development with HTML, CSS, JavaScript or similar, because the kernel takes care of translating the customizations you did in the AOT into a webpage for the ui. There are exceptions (see Build extensible controls), but in general, not web development skills are needed to do development.

    Footnote

    *Overlayering: Why is it called overlayering? Because code is organized in layers, which was an important concept in earlier versions. These days, all customizations are in extensions, so layers have little to no purpose anymore.