Microsoft's rule for Dataverse plugins is "keep them stateless, because the platform caches and reuses the instance." We drove about 3,000 plugin calls through a live sandboxed org to see what actually gets reused today. The instance never was. The statics were shared by every step, every record and every user, and lived anywhere from minutes to a day.
An icon picker for Dataverse tables bundles 21,698 icons from six sets. The hard half was not bundling them. Dataverse names tables after what they mean — Account, Opportunity, Work Order — and icon sets name icons after what they depict — building, trophy, clipboard. No set has ever drawn an icon called "account". These are the notes on closing that gap, in the order the work happened, including the parts that went wrong.
Handlers registered in the form designer are stored in form XML with the function name typed in by hand, and nothing you use on code can see them. Events2Code lists every one of them, generates a single OnLoad bootstrap that registers them through the Client API, and — if you ask it to — unregisters them from the form. Version 1.0.0 is in the Tool Library today.
Stage, mode, filtering attributes and pre-image columns live in environment rows, not in the repository, so a code review sees half the artifact. Plugin Step Codegen reads the steps and images registered in the connected environment and writes them above the class as [Plugin], [Step] and [Image] attributes. Version 1.0.0 is in the Tool Library today.
A pull request can be read line by line and still tell you nothing about when the code in it runs. The stage, the mode, the filtering attributes and the columns on the pre-image are rows in an environment, changed through a registration tool by whoever had the credentials that afternoon. Nothing in the diff moves when they change, and nothing in the build fails.
Open a Dynamics document template in Word and you see a document. The content controls look like ordinary grey placeholder text, and three of them can read description while pointing at three different columns on three different tables. What decides which is which is an XPath expression bound to a custom XML part inside the file, and Word will not show it to you without clicking each control in turn.
Event handler registrations made in the form designer are stored in the form's XML — one entry per control, per event, with the library name and the function name typed in by hand. Rename the function in source and the form stays registered against the old name until a user opens it and the console says so. There is no compiler, no find-all-references, no test that covers the wiring.
Open a Dynamics document template in Word and three content controls can all read description while pointing at three different columns on three different tables. Document Template XRay reads the file instead of the screen and lists every binding with its table, column, section and location. It is free, it installs from the XrmToolBox Tool Library, and today it is published.