Replaceable methods

Chain of command enables wrapping of methods – but you must call next. This ensure the “chain” is not broken, and everyone wrapping the method will indeed be called. However, sometimes it makes sense to break the chain. Here are some examples where this could be useful: In lookup methods. The base implementation will open…


Table map extensions

Requesting add a field or method extension capability to existing table maps Problem statement We have received requests to provide platform support for adding a field or method to table maps through extensions. Adding a field or a method to an existing table map, however, presents some challenges which can lead to unforeseen runtime errors….


Extending table maps used for versioning

Disclaimer: This post describes a proposed solution and is subject to change without further notice One of the table maps where we have received requests to support the ability to add a field is the PurchLineMap table maps. This table map is used to describe the set of fields which must be copied between the…


Extending table maps used as interfaces

Disclaimer: This post describes a proposed solution and is subject to change without further noticeTwo of the table maps where we have received the most request to support the ability to add a field or method, are the SalesPurchLine and SalesPurchTable table maps. The two table maps expose a set of common fields and methods…


Enabling extensibility on Pricing

Disclaimer: This is only a proposed solution and is subject to change without further notice   Here is an overview of the changes being done to make the pricing area extensible. Pricing is a heavily customized area and modifying the price search is currently impossible without overlayering. This article outlines a proposed solution for some…


Extensible X++ – Method signatures

  Method signatures are not extensible – and will not be.   Extensible parameters would be intrusive – in so many ways: Breaks derived classes (signatures of overridden methods must match), Requires recompilation, No side-by-side support.   Here are some alternatives.   The request for adding a new parameter to a method as an extension…


Extensible Inventory Dimensions

Background Adding new inventory dimensions is currently impossible without succumbing to overlayering. As you are reading my blog, you’ll know we need an extensible alternative. This post outlines the solution we are proposing to enable extensible inventory dimensions. There are several technical limitations influencing the design of the proposed solution. The most significant is the…


Extensibility Documentation

We just completed the first wave of an overhaul of the official extensibility documentation. There is a lot of vital information if you are part of the extensibility journey, including: How to log extensibility request, How to migrate from overlayering to extensions A topic defining intrusive customizations Many “How do I?” topics with step-by-step description…


New extensibility support in the July 2017 Update

We recently released the (so far) latest and greatest version of Dynamics 365 for Finance and Operations. This is the first release after Announcing application extensibility plans – and our first opportunity to demonstrate our dedication to this important (albeit huge and challenging) endeavor. The number of extension points we’ve added is too large to…


Extensible X++: Chain of Command

As you can see on the Dynamics Roadmap a new capability is being introduced in X++; it enables strongly typed extension capabilities of public and protected methods; including access to public and protected members. Oh; I almost forgot: This is my new favorite X++ feature. See this video to learn more. THIS POST IS PROVIDED…