Microsoft MB-820: AL Extensions Built to Upgrade
A Business Central extension adds a useful field to an item card. It passes tests in development, but an upgrade fails because the extension depended on undocumented data behavior in the previous application version. The lesson is not to avoid customization. It is to build extensions with deliberate contracts, versioning and validation so the business can receive platform updates safely.
Microsoft MB-820, Dynamics 365 Business Central Developer , is active. Its published objectives emphasize AL language, extension objects, testing, development tools, deployment and integration.
Business Central uses extensions to add functionality without modifying the standard application directly. Table extensions can add fields, page extensions adjust user experiences and event subscribers can attach behavior to supported extension points. The architectural question is whether the chosen object and event express the required business rule consistently. A rule applied only to one page may not protect records created by an API or background job.
Build an extension that requires an additional approval reference for a certain category of purchase. Identify where validation must run, what the error says and whether the API path behaves the same as the user interface. Compare an event subscriber with a direct UI customization. Maintainability improves when the extension’s purpose and trigger conditions are explicit rather than buried in an assumption about who uses a screen.
Filtering records, retrieving related data and updating state are common tasks, but performance can suffer if code executes broad queries or repeats an expensive operation per record. Understand records, queries, temporary tables and methods that affect transaction behavior. Business Central data often contains accounting and inventory consequences; a correct-looking field update may violate a wider process if it bypasses standard validation.
Imagine a codeunit that recalculates a custom discount for thousands of open lines. Test the code on data with duplicate values, deleted references and different companies. Inspect execution cost and permissions. If a transaction fails halfway, determine which updates remain and what users will see. A developer should know when to reuse standard application logic rather than recreating posting or reservation behavior from scratch.
An extension may expose or consume APIs to connect Business Central with a CRM, webshop or reporting service. The external system needs stable identifiers, supported authentication and predictable responses when data is missing or a validation fails. Version changes should avoid surprising consumers. A connector that retries requests after a timeout also needs a strategy to prevent duplicate business transactions.
Create a sample API page and connect it to a client that submits purchase data. Reject an invalid input clearly and verify that repeated calls do not create duplicates unintentionally. Decide what should happen when the receiving system is temporarily unavailable. Document which system owns the record and how reconciliation works. Integration success is not just receiving HTTP 200; it is preserving reliable business state across the connection.
AL automated tests can verify extension behavior without repeatedly performing every step by hand. Good tests establish preconditions, apply a meaningful action and inspect business outcomes. A test that only checks a new field is visible does not show that posted documents remain correct. Create test data independent of the developer’s personal environment so the result is reproducible.
Run a sales or purchase scenario before and after the extension applies. Include permissions, validation errors, changed values and a simulated upgrade. When possible, confirm that an older data state can be migrated to the new extension version without losing information. Unit-level tests and scenario-level tests answer different questions; both are valuable when the extension touches core workflows.
Application lifecycle management includes source control, packaging, dependency review and installation or upgrade handling. Changes to stored fields may require deliberate migration steps. A developer should understand how version numbers, extension dependencies and environment differences affect deployment. Rushed changes that succeed only in a sandbox can be costly if the production tenant contains more data or stricter security policies.
For MB-820 practice, maintain an AL extension through two versions: add functionality, introduce a schema evolution, run tests and rehearse deployment. Break an integration permission and create a conflicting validation to test failure handling. The essential skill is to develop Business Central behavior that the organization can confidently operate, upgrade and explain after the original developer has moved on.
