Some rules, applications, and guidelines for multitenant application extension development:
When multitenant application extensions are developed, there are a few best practices that can be called out. This article covers some of them.
Some of the common pitfalls in multitenant application development include the following:
Prefix/suffix missing. This is required to ensure a healthy app ecosystem that avoids name collisions.
DataClassification missing or set incorrectly – There is a tool to detect these, and it is not hard to automate.
Required translation files missing – These are required for specifying additional languages.
Missing permission sets - The least privilege execution policy requires proper permission set to be granted.
Permission errors – These must not be shown unless it entails a necessary action for the user.
Missing application area tagging – tenant applications can only be categorized with tagging
Usage category not set – This is required for search because the property helps to provide hints
Business open/close for a tenant implies a common handler into the invocation of code for the tenant. These must be properly maintained.
Upgrade procedures – An application can be upgraded properly if the standard operating procedure is followed.
Use logic owning the artifacts – they should not be updated or maintained if there is no ownership
Testing with elevated privileges hides the errors users might encounter.
Testing does not cover a specific scenario because the documentation for the scenario is not proper.
The configuration and environment settings can alter the behavior of the product and they must be set properly before testing.
The tenant application extension lifecycle also differs significantly enough from mainstream single-tenant applications to be called out here:
Migration – Data might need to be migrated between extensions. The process applies to both large- and small-scale data migrations. Upgrade can be treated as a large-scale data migration. Small scale data migrations are where a few objects are hand-picked between extensions. The migration’s direction is dependent on the dependency graph.
Translations can be applied to multiple properties and these captions are scoped to their entities. They can be changed from multiple places and might live in different artifacts, but they are associated with the entities they are for.
Tests can be isolated as database transactions in the tenant namespace. The difference between a normal run versus a test run is that a failure in the former means that it stops while a failure in the latter means that it can skip to the next.
Publishing and installing an extension requires an external registry and installation in individual tenant namespaces. The extension then becomes available to the users in the client.
Updating and upgrading differ in the behavior of the code before and after. Upgrade strives to maintain backward compatibility while update can replace wholesome.
Deprecation best practices involve the use of conditional directives to surround the code to be obsoleted.
No comments:
Post a Comment