A compiled plugin assembly can’t just be uploaded as-is — Dataverse requires it to be strong-name signed, and then registered using the Plugin Registration Tool before any step inside it can be wired to an event.

Strong-naming the assembly

In Visual Studio: Project Properties → Signing → check “Sign the assembly” → create a new strong name key file (a .snk file, optionally password-protected). This gives the compiled DLL a unique cryptographic identity, which Dataverse requires for any plugin assembly. Once created, keep the .snk file — recompiling with a different key changes the assembly’s identity and can complicate future updates.

Using the Plugin Registration Tool

  1. Connect the tool to your target environment.
  2. Register a new assembly — browse to the compiled, signed DLL.
  3. The tool reads the assembly and lists every IPlugin class it finds.
  4. For each plugin class, register a new step: choose the message (Create, Update, Delete…), the primary entity (table), the stage (Pre-validation/Pre-operation/Post-operation), and sync or async.
  5. Optionally, for Update messages, specify the exact filtering attributes — the step only fires if one of these specific columns actually changed.
  6. Add any required pre-images or post-images to this step.
Filtering attributes save real performance. Without filtering attributes, an Update step fires on every update to that table, even ones touching completely unrelated fields. Scoping a step to only the specific columns it actually cares about avoids unnecessary plugin executions — easy to overlook, and a common, quiet source of unnecessary server load on busy tables.

Updating an already-registered plugin

After changing code, recompile and use the Plugin Registration Tool’s “Update” action on the existing assembly — this keeps the same registered steps and images intact rather than requiring you to delete and recreate every step from scratch.