What gets you up in the morning?

I love the X++ application. I love improving the code base in central places helping every user, every customer and every partner in the ecosystem. Having the ability to improve RunBase, InventDim, MRP, EcoRes, PriceDisc, SalesTable or the X++ compiler matters a great deal to me. I feel privileged to be responsible for and empowered…


Extensible product dimension sample app

We have just published a small sample app demonstrating how to implement a new product dimension using extension only. It is using the Extensible product and tracking dimensions framework available in 7.3. For the sake of demonstration, we have added a new product dimension named Flavor, and we are binding it to Inventory Dimension 1…


7.3 is now available

Dynamics 365 for Finance and Operations, Enterprise edition 7.3 is now general available. This release contains massive extensibility improvements: All models are now at least soft sealed (Warning when overlayering) Extensible product and tracking dimensions. Extensible price discount calculations. An application that is precompiled to support chain of command. (No need to recompile App suite…


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…