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:https://community.dynamics.com/ax/b/newdynamicsax/archive/2017/03/30/announcing-application-extensibility-plans 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…


Responding through delegates

One typical extension point is when extensible logic is delegating the responsibility of a certain operation, and is expecting extensions to provide a result. It could be a conversion, a calculation, class construction or similar.   Let’s look at the pattern, and how to be a good-citizen.   Example The Batch table has a few…


Extending Dynamics 365 for Operations

Dynamics 365 for Operations has great support for implementing pure add-on solutions. A pure add-on solution is extending the existing functionality using non-intrusive extension points. In the Dynamics AX era implementing non-intrusive solutions was near impossible. My decade old Channel 9 video on Smart customizations is recommending being as little intrusive as possible. That is…