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…


Extending WHS – Adding a new location directive strategy

To create a new location directive strategy, follow these steps: Create an enum extension of the WhsLocDirStrategy enum. Add an entry with name and label for your strategy. Create a class extending the WhsLocationDirectiveStrategy abstract class. Implement the performStrategy() method Decorate your new class with the WhsLocationDirectiveStrategyFactoryAttribute, linking your class and enum entry together. Notice:…


Extending WHS – Adding a new custom work type

Custom work types allow you easily to implement simple confirmation steps in any flow. To create new custom work type follow these steps: Create a new class implementing the WhsIWorkTypeCustomProcessor interface Decorate your class with the WhsWorkTypeCustomProcessorFactoryAttribute using the name for the custom work type as parameter. Naming considerations for the work type name: –…


Extending WHS – Changing behavior of existing control types

If you need to change the behavior of existing controls, you can subscribe to these 4 delegates on the WhsRFControlData class: processingControl(), processedControl(), populationControl() and populatedControl(). Here are 2 of the delegate definitions: THIS POST APPLIES TO MICROSOFT DYNAMICS FOR OPERATIONS SPRING 2017 PREVIEW; IS PROVIDED AS-IS AND CONFERS NO RIGHTS.


Extending WHS – Adding a new control type

You can now create a new mobile device control as an extension.   Here is how: Create a class that extends WhsControl, and decorate the class with the WhsControlFactoryAttribute attribute specifying the name of your new control. Naming considerations for the control name: The name can be any string – prefix it with your organization’s…


Extending WHS – Adding a new flow

You can now create a new warehouse flow on the mobile device as an extension. To enable this: Create an Enum extension of the WhsWorkExecuteMode enum, and add an entry for your flow. If you flow is indirect (vs. work driven), create an Enum extension of the WhsWorkActivity enum, and add an entry for your…


Announcing application extensibility plans

As announced on Technical Conference 2017, Microsoft has started a journey to support customizations via extensions and will gradually remove overlayering capabilities. Read the announcement here: For this journey to be successful, a lot of new extension framework capabilities and application side extension points are required. I’m very proud of how far we’ve come already…


Subscribing to onValidatingWrite

Most event handlers are straight forward. One exception is when subscribing to a table’s onValidated and onValidating events. The trick is to realize that the DataEventArgs instance passed to the event handler, is a validateEventArgs – a specialization of DataEventArgs. Here is a template to use: [DataEventHandler(tableStr(<TableName>), DataEventType::ValidatingWrite)]public static void <TableName>_onValidatingWrite(Common _sender, DataEventArgs _e){    boolean result = true;    ValidateEventArgs validateEventArgs = _e as ValidateEventArgs;    <TableName> <table> = _sender as <TableName>;     if (<validation>)    {        result = checkFailed(“Validation failed”);    }    validateEventArgs.parmValidateResult(result);}   The platform will keep raising the…


Extending class state

A new and tremendously powerful feature was introduced in the Fall Release ’16. Now you can extend class instances, including adding state. This is available for any class in the system.   We already know we can extend class types. Which in essence allows us to introduce new methods that consumers of the class can…