
Plug-in Package Ignores New Assemblies
Add a plugin assembly to an existing Dataverse plug-in package and it is never registered. Create the plugin assembly record yourself, then update the package.
One post a week, on Sunday. Dataverse, .NET, and whether the tools we rely on still deserve to be there. The email version is called Earns Its Keep.

Add a plugin assembly to an existing Dataverse plug-in package and it is never registered. Create the plugin assembly record yourself, then update the package.

Flowline is a free, open source Dataverse ALM CLI: attribute-driven plugin registration, auto-wired web resources, orphan cleanup. In public preview.

A solution mapping file lets pac solution pack ship a DLL nobody tested. Three defenses of --map, answered in full, and why two of them don't hold.

Compound Engineering and Microsoft's HVE both promise faster AI-assisted delivery, but only one compounds. HVE skips the step that teaches the next loop.

pac solution pack can ship a DLL that never ran in your dev environment. My dev flow makes deploy promote only what I actually tested.

If your unpacked solution came out of an environment, your Dataverse ALM is environment-centric with git in the middle. Production has state git can't rebuild.

AI is making CRM and ERP migration cheaper and faster. Vendors are responding with API policies that ban the tools that could help you leave.

I replaced Taplio with Typefully and built my own LinkedIn analytics dashboard with Claude, from LinkedIn's free export. No new subscription needed.

AI pair programming is more useful than AI code generation. It pushes back on my designs, and that changes how I make architecture decisions.

Power Automate connectors solved a real problem. AI solves the same problem without them, which changes what your automation skills are worth.

Catching exceptions is not the same as handling them. Crash fast, handle errors once in a global handler, and use try...catch only where you can recover.

I spend maybe 10 to 20% of my time coding now, and I don't miss it. AI moved the job from writing code to deciding what is worth building in the first place.

Generated TypeScript form types in Dynamics 365 promise safety and need regenerating every time a form changes. I check whether the field exists and move on.

One app, many customer Dataverse environments, same credentials. A new ServiceClient per request is too slow, so I cache them in a factory instead.

The Dataverse ServiceClient in a desktop app, with no secrets stored on the machine: pass it your own MSAL access tokens through ConnectionOptions.

We treated the dev environment, then the golden environment, as the master branch in Dataverse ALM. Production is the master branch. Branch from a copy of it.

Plugins need early-bound classes on .NET 4.6.2, Azure Functions run on .NET 6. I multi-target one entities project with MSBuild conditions to serve both.

Posts made through the WordPress REST API land in the Classic Block, which broke my RSS emails. Wrapping each paragraph in wp:paragraph comments fixed it.

Don't fire Form OnLoad twice to rerun logic after a save. Dynamics 365 has a Data OnLoad event for that. One-time setup goes in OnLoad, the rest in Data OnLoad.

Power Pages pricing only beats Wix or WordPress for a handful of people. Past 15 users or 175 visitors a month, it gets expensive. So who is it actually for?

You can drive yourself in Bali. I wouldn't. A car with a driver costs about 35 euro a day, and the driver knows the roads, finds parking and takes the blame.

Bali traffic looks like chaos and runs on unwritten rules: what's ahead of you is yours, honk before you overtake, claim your gap, and don't take it personally.

Power Pages is sold as secure out of the box. Its security is an add-on for contacts on top of Dataverse, and one misconfiguration exposes your internal data.

Switching Dynamics 365 forms by record type: map a choice value to a form ID, clear the required fields that block navigation, and hide the form selector.

Replace the settings table with Dataverse environment variables, then read them from a C# plugin in one query that falls back to the default value.

Solution export fails with a Query Builder Error after you delete a field. The cause is an orphaned solution component. Find it with FetchXML and clear it.
Also 173 shorter notes going back to 2022, on Dataverse, .NET and whatever else came up that week.