Just wanted to share some of the habits while development / maintenance of Dynamics plugin projects which i feel are not correct and i feel they should be avoided
a) Registering different versions of the same assembly – Although having different versions of the plugin / workflow assembly is acceptable till dev / test, however one must make sure that before the solutions are deployed to UAT / Production, they must be combined.
If not, we just end up having multiple assemblies in production which can be a nightmare for maintenance.
b) Disabling / Enabling steps from the solution – This is another point one must keep into consideration while maintaining the different environments.
It just adds unnecessary complexity / effort to analyse what could be the root of the issue.
c) Maintaining Unmanaged Assembly in Production – Just in the case with all the other components present in a solution, its not a best practice to have unmanaged assembly instead of a managed one in production.
d) Running Workflows / Plugin Impersonation – In the scenario’s when a plugin is being impersonated to run under the context of a particular user or when an out of box workflow is running under the ownership of a particular user, we must ensure that the user set should be the service account user.
This is because in many cases, the license for the developer user is revoked. In such cases, the functionality will start breaking and could be difficult to trace.
e) Update plugins filter attribute – If we are having any update plugin, we must give some thought on the attributes on which the plugin step is triggering. This is because if we randomly choose any attribute, it could impact the performance of the system.
For further reading please refer to the Microsoft official site for best practices on Plugin development