Quantcast
Channel: Dynamics AX Manufacturing R&D Team blog
Viewing all 104 articles
Browse latest View live

Product Configuration - Physical data model for user selected values

$
0
0

A constraint-based configurator was shipped with Microsoft
Dynamics AX 2012. In this post, we will provide an overview of the data model
that is used to persist the values that you can select when you configure a
product using the constraint-based configurator.

 


 

 

 

At first glance, you will notice that there are several
tables involved. If you are not familiar with previous versions of Dynamics AX
and the Product Builder configurator, this might not surprise you. However, if
you are familiar with the Product Builder, you will know that the old
configurator persisted all user selections in one table, namely the
PBATableInstance Table. This implies that retrieving the user selected values
is not as simple as writing a select statement against a single table. In the
following, I will use a report as an example and show you how you can retrieve user
selections in tables.Building a report

The report** that we use as an example displays all the user
selected values that are related to the configurations for a given product configuration
model.

**Disclaimer:
The report is not performance optimized. The purpose of the report is solely to
illustrate traversal of the data structure.

 

In the report, each element is indented to show the
parent-child relationship between, for example, the HomeTheaterSystem root
component and the “Color” attribute. The “Color” attribute can be assigned
other values, such as “Red”, but in the data on which the report was executed
no such configuration existed.

Note: I have used the Contoso dataset.

Data requirements

The data required to build the report can be broken down
into three parts:


  1. Get the instances of the root component from a
    given product configuration model. Here we only want the instances that are
    created for product variants and not the ones that are created for configuration
    templates.

  2. Get the attributes and their user selected
    values for a component instance.

  3. Traverse the subcomponent instances recursively
    and repeat part 2.

 

Let’s take a look at how to retrieve the data requirements to
build the report. The following statements will meet the data requirements and you
can also see the table involved:

Get the instances of the root component from a product configuration model

 

 protectedvoid
  provideDataForModel(PCProductConfigurationModel _productConfigurationModel)

{

   PCVariantConfiguration              variantConfiguration;

   PCComponentInstance                 componentInstance;

   PCComponentInstanceRootComponent    rootComponentInstance;

   PCClass                             rootComponent;

   // get all
  configurations made for the given product configuration model

   whileselect componentInstance

   // only get instances which belong to a variant configuration, not a configuration template

  join TableId from variantConfiguration

  where variantConfiguration.RecId == componentInstance.ProductConfiguration

  // find the
  root component instances of the selected model

  join TableId from rootComponentInstance

  where rootComponentInstance.ComponentInstance == componentInstance.RecId

  join  rootComponent

  where   rootComponent.RecId ==  rootComponentInstance.RootComponentClass

        &&      rootComponent.RecId == _productConfigurationModel.RootComponentClass

    {

        //  handle data for component

        …

    }

}

 

Get the attributes and their user selected values for a component instance

 

    PCComponentInstanceValue    componentInstanceValue;

    EcoResAttribute             attribute;

    EcoResAttributeValue        attributeValue;

    EcoResValue                 value;

    

    // get all attribute value assignments
  related to the component instance

    whileselect  value

        join TableId from attributeValue

        where  value.RecId == attributeValue.Value

        join TableId from componentInstanceValue

        where componentInstanceValue.RecId  == attributeValue.InstanceValue

        &&    componentInstanceValue.ComponentInstance  == _componentInstance.RecId

        join attribute

        where attribute.RecId == attributeValue.Attribute

    {

   // handle data for attribute and attribute value

    …

    }

 

The values as such are sub-typed to model their respective data type.

Traverse the subcomponent instances

 

   

    PCComponentInstance    componentInstance;

    PCComponentInstanceSubComponent  subComponentInstance;

 
    PCSubComponent  subcomponent;

    PCClass                  childComponent;

 

// get all the subcomponents that have been associated with values

whileselect component

        join TableId from subcomponent

        where  subcomponent.ParentComponentClass == _parentComponent.RecId

        &&    subcomponent.ChildComponentClass  == childComponent.RecId

        join TableId from subComponentInstance

        where subComponentInstance.SubComponent == subcomponent.RecId

        &&  subcomponentInstance.ParentComponentInstance == _componentInstance.RecId

        join componentInstance

        where componentInstance.RecId == subComponentInstance.ChildComponentInstance

    {

   // handle data for component

    …       

    }

 

 

Implementation of the report

 

The data in the report is hierarchical in nature because of
the relationship between components and subcomponents.

The report that we build includes the parent-child
relationship between a component and a subcomponent and it also includes the parent-child
relationships between, for example,  an
attribute and an attribute value. This data cannot be retrieved from Dynamics
AX using a single query[1]
so we will use a data provider to populate a temporary table. The table has the
following structure:



[1]
This is not completely true because in Dynamics AX 2012, each component is
brought about as a reference to the configured variant. Thus, you could
retrieve all the data and then resolve the parent/child relations once the data
is retrieved.

 

A quick explanation of why the fields are required:


  • ID : this is used because the report framework
    will not expose the RecId field of the temporary table

  • Name : this is the name, such as Color, that we choose to display for the
    element

  • Parent : this is a reference to the parent
    record ID that helps grouping the SSRS report hierarchically

  • UniquePath : this is used to distinguish the
    attributes that belong to subcomponents of the same type. The path will be
    unique since it describes the path from the root component to each element in
    the model.

 

For more information about how to build a simple
hierarchical report in SSRS, go to:

http://technet.microsoft.com/en-us/library/dd255243(v=sql.105).aspx

For details on the implementation, take a look at the
attached X++ project.

Enjoy


Use of ingredient types for batch balancing in production

$
0
0

In an earlier blog post, http://blogs.msdn.com/b/axmfg/archive/2012/12/05/what-s-new-in-microsoft-dynamics-ax-2012-r2-potency-management.aspx#10421522, we introduced the new capabilities in Microsoft Dynamics AX 2012 R2 that support potency management business processes for process industries. This blog provides more information about the four ingredient types that were introduced, None, Active, Compensating, and Filler, and the impact that they have on how quantities are calculated for batch orders.

There are many examples of the use of potency; in chemical industry the percentage of caustic can be characterized as an active ingredient in Pottassium Hydroxide, alcohol can be an active ingredient is liqueurs or fat can be an active ingredient in foods. The amout of active ingredient will often vary around a target value for these products, and the purchase price and the amount to consume in further production will often be affected by this variation. The batch balancing process, which is described in more details here, is focusing on how to take this variation into account

The key to setup formulas, where items with active ingredients must be taken into account, is by the use of the Ingredient types on the formula lines. For the example we will be looking at product A, B, C and D which each represent a seperate Ingredient type.

  

 Ingredient type: Active

You can specify the potency of a product by defining the percentage of its active ingredient. When a product with an active ingredient is included in a formula, the ingredient type on the formula line gets the value Active and cannot be changed. Products must have a potency specified for them before they can be used as an active ingredients in formulas.

The potency of a product is defined by the use of a base attribute of the product. The base attribute is specified from the Manage inventory tab on the Action Pane in the Released products form. Before the base attribute can be associated with a product, the product must have the following setup:  

  • The batch dimension must be active for the product. This is done by assigning to the product a tracking dimension group with an active batch dimension.
  • The attribute that will act as the base attribute for the product must be defined as a product specific batch attribute for the product. (Manage inventory > Batch attributes > Product specific). The associated attribute must have minimum, maximum, and target values.

 

 

The balanced quantity of an active ingredient is calculated according to the target value specified for the base attribute. Batch orders for products that have active ingredients in their formulas must go through a batch
balancing process. The batch balancing process is carried out from the Batch balancing form, which is available from the Batch orders list page and Batch order details form when the batch order status is Started. The batch balancing process estimates the amount of each ingredient in the formula that is required to produce the product. The estimation is based on the potency of the on-hand batches that are selected for the production.

 Example

Ingredient B has a base attribute X and a target value of 30, and it’s included in a formula that requires 30 liters of Ingredient B for every 100 liters of the product. A batch order is created with a batch size of 100 liters. The batch order is started, and during the batch balancing process the user points to a batch of Ingredient B that has a potency level of 35. Because the potency level of 35 is higher than the target value of 30, the balanced quantity of ingredient B is reduced with the ratio of the potency value and the target value of the batch compared to the estimated quantity. The calculation of the balanced quantity looks like this:

 (30/35) * 30 Liters = 25,71 Liters.

  

 Ingredient type: None

When using this type there will be no difference between the estimated quantity and the balanced quantity when performing the batch balancing operation.  

Example

Ingredient A is assigned to an ingredient type None, and is added to a formula for a finished product. The formula calls for 10 liters of Ingredient A for every 100 liters of the finished product. When a batch order requires 200 liters both the estimated and the balanced quantity of Ingredient A is calculated as 20 liters.

 Ingredient type: Compensating

A compensating ingredient can either offset or compliment the effect of the active ingredient in a product. Therefore, the quantity of a compensating ingredient that will be consumed depends on the potency of the product.

  • Opposing effect - If the amount of the active ingredient is higher than anticipated, less of the compensating ingredient is required. The earlier blog gave an example of ice-cream, where cream compensates for a higher concentration of fat in milk.
  • Complementary effect - If the amount of the active ingredient is lower than anticipated, you need to add more compensating ingredient. The earlier blog used potato chips as an example, where more oil was added to the boiling process when the degree of moisture in the potatoes is higher than anticipated.

The relation between an active ingredient and a complementary ingredient is set up in the “Compensating principle” form, which is available from the Action Pane in the Formula lines form. You need to select the line that represents a compensating principle, and then point to the active ingredient you want to compensate. In the compensating principle, you also specify a positive or negative compensating factor to determines how much to compensate for and whether the principle should be opposing or complementary. A positive factor is used for complementary, and a negative factor is indicates opposing.

 

Example

Ingredient B is an active ingredient that has a base attribute X and a target value of 30. It’s included in a formula that requires 30 liters of Ingredient B for every 100 liters of the product. Ingredient C is a compensating ingredient, and is included in the same formula with a quantity of 10. The compensating principle is set up with a factor of 1.10. With a factor of 1.10, the balanced quantity of the compensating ingredient will be reduced by the difference between the active ingredient’s balanced quantity and the estimated required quantity multiplied by 1.10

In a previous example, the balanced quantity of the active ingredient needed was calculated to 25.71, and the estimated required quantity was calculated to 30. In this case, the balanced quantity of the compensating ingredient would be calculated as follows:

Difference between estimated and balanced quantity:

25.71 - 30 =  - 4.29

Multiplied with compensating factor:

4.29 * 1.10 = - 4,72

Compensating estimated quantity will be reduced with -4.72 in order to calculate balanced compensating quantity:

 10 - (- 4.72) = 14.72

Because 1.10 is a positive factor, this is a compensating principle with a complementary effect. And because the active ingredient is more potent than anticipated, more of the compensating ingredient is required.

 

Ingredient type: Filler

The filler ingredient is a neutral ingredient used to reach the desired output quantity of the finished product. Adjustment to the filler quantities are calculated based on variations in the active and compensating ingredient compared to the standard quantity.

Example:

We have formulated a product with ingredient A, B, C and D for a formula size of 100 liters. We have calculated the balanced quantity of all the ingredient types except for the line with ingredient type Filler. The balanced quantity of the filler ingredient calculates as the difference between the batch size of 100 liters and the sum of the ingredients:

 

100 – 20 – 25.71 – 14.72 = 39.57

 

 

 

Working with Overlap in Microsoft Dynamics AX

$
0
0

Conducting Dynamics AX Manufacturing training for a class in Malaysia, it became clear that the current documentation on Overlap in Dynamics AX was not telling the full story.
Therefore, I decided to write this blog.

So, what is Transfer batch and Overlap quantity?

In Dynamics AX ‘Transfer batch’ is the field used to control an overlapped schedule. Apics define ‘Overlapped schedule’ as “A manufacturing schedule that overlaps successive operations. Overlapping occurs when the completed portion of an order at one work center is processed at one or more succeeding work centers before the pieces left behind are finished at the preceding work centers.”

Overlapped schedule is also known as lap phasing, operation overlapping, telescoping or send ahead.


‘Overlap quantity’ is a calculated field on the production order – ensuring that we avoid gaps in the schedule, when the successor operation to the operation with a Transfer batch value, has a shorter process time.
The ‘Overlap quantity’ determines the first transfer batch size for the operation; the following transfers to the next operation will use the ‘Transfer batch’ value.
 
 


Overlap quantity example

Say you have a production order for 10 pcs and it has two operations 10 and 20, each operation taking 2 minutes per pcs: 


Without overlap:

Normally operation 20 will start when the entire quantity (10 pcs) has been processed on operation 10 

 


With overlap:

When you have specified something in ‘Transfer batch’ field, let us say 2 pcs, it means the next operation (in our case 20) can already start when only 2 pcs has been processed on the operation 10. The value from ‘Transfer batch’ is by default copied to the ‘Overlap quantity’, on the production order.

 


Why does the Overlap quantity sometimes change when I estimate a production order?

The ‘Overlap quantity’ parameter on the production order route is calculated by the system. This is done during the estimation (or scheduling) of the production order, to prevent gaps in situations where a later operation have a shorter process time than the current operation. The fact that the successor would be waiting for the delivery from the predecessor would be causing a gap.
So, the calculation of an optimal ‘Overlap quantity’ is done based on the ‘Transfer batch’ and the operation process durations on the route. 

 

Overlap example with gaps (two operations):

Say you have a production order for 10 pcs and it has two operations 10 and 20, this time the first operation takes more time than the second does:
Opr 10: 20 min per pcs
Opr 20: 10 min per pcs
Again, we have a Production order for 10 pcs and Transfer batch quantity set to 2 pcs 

Without any change during Estimation the jobs on the route would have a gapped schedule and look like this:

However, as the first operation in total will take 200 min to complete and the second will take 100 min you will get the following information when estimating:

 

With the change from 2 to 6 we ensure that there are no gaps between the jobs in the second operation.

Overlap example with gaps (three operations):

Now let us spice it up a bit and add another operation – Opr. 30 with a run time of 5 min per pcs. We will also set a ‘Transfer batch’ = 4 on operation 20 

In this case, you get the following information during estimation:


Now the schedule will look like this:

 


Therefore, by updating the ‘Overlap quantity’ on the production order during the Estimation Dynamics AX ensures that production on the following operation can happen without any gaps – avoiding a gapped schedule.

Christian Rytt, Senior Program Manager at Microsoft Development Center Copenhagen

 

 

AX product configurator drives CAD and 3D printer.

$
0
0

More and more companies want to deliver configure to order scenarios at the cost of mass production - mass customization. This blog describes how the product configurator in Dynamics AX 2012 can drive programmable productions equipment like Cnc machines, 3D printers or robots.This post relates to the presentation on Convergence 2013 session DDAX19.

 The scenario is

  • Sales person settles all the configurable values in dialog with the customer utilizing the AX product configurator to guide the choices.
  • From the configured product model, the values flows into the CAD (Computer Aided Design) 3D model which is updated based on the values.
  • The updated CAD model is then persisted for 3D viewing and for CAM (Computer Aided Manufacturing) processing (generating code for the CNC- machine (e.g. a 3D printer) )

The values set during the configuration process are used to drive the dataflow towards the finished good.

The figure illustrates the workflow. The upper row represent systems and the lower row representing the created artifacts. The flow is driven from AX product configurator passing values to CAD/CAM systems and finally to the programmable manufacturing equipment here exemplified by a 3D printer. The 3D printer is a Cnc- machine and programmed the same way. 

One important aspect is that you must ensure at the product model parameter and the CAD parameters are semantically aligned. The code assumes that you have loaded the CAD system with the corresponding cad model.

 

Figure 1 Flow through systems (top row) and generated artifacts (lower row)

 

This workflow is implemented in X++ utilizing the Product Configurator API for extending configuration in AX 2012. Figure 2 illustrates the classes of the PC API. The PCAdapter hooks into the configuration workflow illustrated in Figure 3.

The customization is done by inheriting the PCAdapter class (Con2013PcAdapter is in green in diagrams) and bind the inherited class to a specific product model using the PCAdapterExtentionAttribute (see Figure 4).

The PcAdapter carries a reference to the SourceDocumentLine from which the customer information is fetched (see attached X++ code) and passes it on to the CAD model. Similar is the reference to the ProductConfigurationModel used to fetch values from the configuration. In the example the values of the parameter ‘speakerHeight’ is read (see attached X++ code) and passed on to the CAD model. The structure below PCAdaptorComponent also expose access to BOM Lines and RouteOperation, which X++ code could manipulate and update potentially based on calculations form the CAD system.

  

Figure 2 Product configurator extension framework

To support the workflow .Net wrappers for the CAD (in Figure 3 CADInterface) and CAM (in Figure 3 CAM2Printer) system are needed. The C# for this code is attached. The 3D printer drivers introduced by Windows 8.1 substitutes the CAM2Printer component.

 

Figure 3 Product configuration workflow with extension and CAD/CAM integration

The code below show the central parts of the X++ extension Class Con2013PcAdaper. Please note the model binding to the ‘Speaker Solution’ using the PCAdapterExtensionAttribute in the first line. The code using the InteropPermission instance is pluming code to handle security when calling external dll’s.

[PCAdaptorExtensionAttribute('Speaker solution')] // name of configuration model

publicclass Con2013PcAdapter extends PCAdaptor

{

}

publicvoid run()

{

    InteropPermission   permission;

    AxConfigCadInterface.LoudspeakerCad cadInterface; // Wrapper for CAD system

    real size ;

    str cName ;

    str FilePath;

    str ModelStore;

    System.Exception    exception;

    System.Exception    innerException;

 

    try {

        ModelStore = 'c:\\data\\modelStore\\';

 

        permission = new InteropPermission(InteropKind::ClrInterop);

        permission.assert();

 

        size = this.getAttrValue('speakerHeight',

               productConfigurationModel.getRootComponent()).parmIntegerValue();

 

        cName = this.getCustomerInfo();

 

        // SET CAD parameters

        cadInterface = new AxConfigCadInterface.LoudspeakerCad();

        cadInterface.SetParamenters(cName, real2double(size));

        // CREATE A UNIQIUE filename

        FilePath = strFmt('%1\\%2-%3',ModelStore ,cName,this.getUniqueID());

        // EXPORT models in formats

        cadInterface.SaveModelAsJT(FilePath);

        cadInterface.SaveModelAsSTL(FilePath);

        CodeAccessPermission::revertAssert();

 

        // ADD viewer model URL

        this.createDocuRef(FilePath);

 

         // Send STL file to printer via CAM system

        if (WinAPI::fileExists(strFmt('%1.stl',FilePath)))

          WinAPI::shellExecute(strFmt('%1Cam2Printer.exe',ModelStore),

                               strFmt('\"%1\"',FilePath) );

    }

    catch

    {

        exception = CLRInterop::getLastException();

        innerException = exception.get_InnerException();

 

        info(strFmt('%1', innerException.get_Message()));

    }

Figure 4 Con2013PcAdapter class definition and run() method in X++.

With the viewer model attached to the quotation line (Figure 4 code: this.createDocuRef(FilePath)),  an extra menu entry “3D viewer” is introduced on the SalesQuotationTable form using a few lines of code (see code in attachment). The code on the menu entry opens the 3D model in the default 3D JT model viewer installed on your windows installation. Windows Store provides the free 3D viewer for JT files running Window 8.  The configured model is shown in Figure 5 below.
See the code changes in the attached X++ project.

 

Figure 5 Window 8 3D viewer for JT

How to install

Preconditions: AX 6.2 R2 installed and Visual Studio 2012 

Install Autodesk inventor 2013 or 2014 from autodesk.com.

Autodesk  DeveloperTools.msi (http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=1079044)

Install JT 3D Viewer from Microsoft Store on the Windows 8 (Only window 8 win32).

The CAM slicing and printer communication depends on the your 3D printer hardware. For the demo we used Slic3r for slicing and Pronterface for communication to the printer. With Windows 8.1 new 3D printer drivers will support this.  See http://microsoft.com/3d 

Download code.

The zip file constains:

  • ·         Ax X++ code on in the Convergence2013PcCad3dPrinter.xpo file
  • ·         C# autodesk wrapper
  • ·         CAM2Printer code

Open AxConfigCadInterface.sln in visual studio 2012

  • ·         Precondition:  Autodesk developer tools (SDK). Update reference in project AxConfigCadInterface to Autodesk.Inventor.interop.dll which is a part of Autodesk (SDK).
  • ·         Compile AxConfigCadInterface.sln. For simplicity the CAD interface in designed for the demo speaker model only.     
  • ·         Copy AxConfigCadInterface.dll and Autodesk.Inventor.interop.dll to AX client bin directory.

Import Convergence2013PcCad3dPrinter.xpo into AX developer environment and compile it.

 

Figure 6 X++ demo code

 

How to run

  • ·         Open the CAD model in Inventor (both 2013 and 2014 works). Use CAD model speakerModel.ipt
  • ·         From the Sales Quotation line configure a speaker in AX. When you press OK on the configuration form the CAD&CAM integration code is executed.
  • ·         From the Sales Quotation line open the 3d Viewer which will visualize the configured 3D model.

I hope you find this interesting and useful for starts building integration scenarios driven by AX product configurator.

 

 

 

Product configurator, new Calculations concept

$
0
0

In cumulative update 6 for Dynamics AX 2012 R2 we are introducing a new concept
called Calculations in the Constraint-based product configuration models.
Calculations have many similarities with constraints in the way they are
created and maintained, but constraints are focused on limiting the number of
possible combinations and Calculations to enable mathematical expressions. One other
important difference between Constraints and Calculations is that Calculations
can work with decimal numbers. So for instance if the cable length for a home
theater system is decided by the room size it could be expressed as in the
screenshot example below.

If[ RoomSize / 1.33 > 7.5, 3.33, 6.66]

 The image below shows how Calculations are defined for a product configuration model.



A Calculation, much like other product configuration model concepts, has a name
and a description to allow you to state the purpose of the Calculation.

Calculation expressions are uni-directional and the Target attribute receives the value
from the expression. The attributes can not be of type free text.

(It is possible to use a Text with a fixed list, also known as an Enumeration, but for a Target attribute of this type the return vale has to be the Integer order of the text value in the text list)

An attribute can both be used as a target attribute and
in expressions for other target attributes. The order of the calculations will
be determined accordingly.

The Calculation expression holds the logical or mathematical expression that
represents the Calculation. The expression syntax is similar to the syntax
available for expression constraints, but a wider range of operators are
available, such as the If operator shown in the example above. Also, both
decimal numbers and unbound integers can be used both as Target attributes and
in the Calculation expression. You can type the calculation expression yourself,
or build it using the new expression editor (Screenshot below). This is also a
new capability in CU6, and I will give a more detailed introduction in my next
post.

This enhancement makes it possible to manipulate decimal numbers at run-time during
configuration; you no longer need to express this type of operation through the
dedicated application programming interface represented by the PCAdaptor class.

In the screenshot above, the Target attribute is of type decimal number and it can be
used as a property on a bill of material (BOM) line or a route operation, but
it cannot be included in a constraint or a condition. If you want to control
the inclusion of a certain BOM line or route operation, this can be achieved by
using a Target attribute of type Boolean and then using the Target attribute in
the condition on the BOM line or route operation. Please see example below:

Target attribute:                     widthLengthRatioBoolean

Calculation:                            widthAttribute > lengthAttribute

BOM line condition:                widthLengthRatioBoolean

Route operation condition:     !widthLengthRatioBoolean

In this example the widthLengthRatioBoolean attribute takes the value true if the
widthAttribute is greater than the lengthAttribute and false if it is equal to
or smaller than lengthAttribute. The BOM line condition will include the BOM
line only if the calculation returns true, whereas the route operation will
only be included if the calculation returns false.

The introduction of the Calculation concept means that an attribute can get its
value set by four different sources:

  • User, value entered by the user during the configuration
  • Default, value set in the product model
  • Calculation, value resulting from a calculation expression
  • Constraint, value set by a constraint

In the matrix below the rows state, which input sources have the ability to overwrite
an existing attribute value. Overwriting a value set by a constraint would result
in a model, which is in contradiction, and thus the configuration cannot be
finished and saved. This is indicated by the * in the Constraint column cells.

So one example here is that a calculation can overwrite a value set by a constraint,
but then the configuration cannot be saved.

Input order matrix

 

Can   be overwritten?

User

Default

Calculation

Constraint

Can
  overwrite?

User

 

Yes

Yes

Yes  *

Default

No

 

Yes

Yes  *

Calculation

No

No

 

Yes  *

Constraint

No

No

No

 

 

 

Whitepaper "Lean manufacturing - Capable to promise and Kanban job scheduling" for CU6 now available for download

$
0
0

With Microsoft Dynamics AX 2012, two new concepts were introduced for lean manufacturing:

  • Event kanbans,  which support build-to-order and assemble-to-order scenarios, and also – in combination with the product configurator – configure-to-order scenarios.
  • Capable to promise (CTP), a new delivery date control method that can be used to calculate the expected delivery date at the time of order entry, based on an update of  the dynamic master plan.

 

In the recently released cumulative update 6 for Microsoft Dynamics AX 2012 R2 these concepts have now been combined to work together.

 

The white paper starts by explaining the fundamental mechanics of kanban job scheduling for simple and complex production flow configurations. It then introduces the concept of capable to promise in general (lean and non lean applications), and explains how CTP interacts with planned and actual kanban jobs. Finally, it explains how CTP can be combined with event kanbans, and what changes are introduced in cumulative update 6 for Microsoft Dynamics AX 2012 R2 to provide better support for build-to-order and assemble-to-order scenarios with CTP.

 

You can download the whitepaper from these locations (requires registered Microsoft account):

 

Download URL - Customersource - Partnersource

Product configurator, new expression editor

$
0
0

In Cumulative Update 6 for Dynamics AX 2012 R2 we have included a new expression editor for
the Product configurator. You can use the editor to create expression Constraints,
Conditions and Calculations. (Calculations is a new concept, which was
introduced in Cumulative Update 6, and was described in a previous post in this
blog).

The screenshot below shows the expression editor as it will appear when you click
the drop down for the expression column for a new Constraint or a new Condition.

 Constraint expression editor 

The editor has a text field, in which you can type an expression, and a tabular list
section in the lower part of the form. The tabs in the list represents the
elements or symbols you can include in an expression Constraint. They are:

  • Attributes
  • Operators
  • Values (attribute values)

The All symbols tab displays all entries from the three other tabs (a combined list).
The items that appear in the list are filtered depending on the user input in
the Expression field. In the example below, the user has started writing an Implies constraint (“im”). The only two
matches are the Implies and the Times operators, and thus they
are the only symbols remaining in the list.
 

You can add operators, attributes or values to an expression by typing, or by selecting an
element in the list with the mouse (double-click, press the Enter key or use
the Insert symbolaction in the list action pane to insert the symbol). You can also
press Alt + Arrow down to set focus on the grid, then use arrow keys to move in
the lists and then press Alt + I to insert symbols from the grid. If you move
the cursor in the expression field, you can press F5 to refresh the lists in
the symbol grid.

The editor attempts to validate the syntax as you build an expression. If you type in an
unknown text and hit the space bar, an error is displayed. Below is an example
where the user typed in “XYZ”.

You can also use the Validate action to validate the syntax at any point.

 Calculation expression editor

When the expression editor is used for Calculations, there are more operators available and you can
include attributes of any type except free text. The screenshot shows the available
operators if you type “s” in the Expression field.

Understanding the default configuration concept for constraint-based products

$
0
0

Introduction

The default configuration concept enables users to start the product configuration process when the main product master data are available within a legal entity. You can learn more of the details of this concept in this post.

The default configuration concept

You must use the configuration technology Constraint-based when you configure product masters and the product masters must be configured with only one active product dimension, the Configuration dimension. We refer to the products masters as constraint-based products throughout this post.

To create a constraint-based product you must specify a valid product dimensions group which complies with this requirement.

image

Figure 1 Error message when the wrong dimension group is selected

You use the Configuration dimension to capture the final product configuration of a certain product model. The product model is represented in the system as a new product variant with a specific configuration dimension value. This is how Dynamics AX distinguishes between different results of the final product configuration. This allows you to complete a lot of tasks, such as:

  • Record and view on-hand inventory for individual configurations.
  • Run master planning against specific customer requirements (and across different legal entities).
  • Reuse existing product definitions in order to create products that are identical to existing products. You can also apply existing product definitions across legal entities.

Once you have released a constraint-based product to a legal entity, you can kick off a product configuration process from the following source document lines:

  • Sales order line
  • Sales quotation line
  • Project order line
  • Production order line
  • Purchase order line

The product dimension Configuration must have a value before you can start the product configuration process for a selected constraint-based product on an order line. Also, all active product dimensions must be specified before you can save an order line. These requirements are based on a series of technical solutions which are consistent with the experience that many users have from the Product Builder functionality.

Note - This is always the case for stocked products .For non-stocked products, you can specify a product category instead of defining the particular SKU.

The default product configuration concept is dedicated to solve the above described issue. It enables end users to proceed with the product configuration as soon as the product has been released to the legal entity.

clip_image003

Figure 2 The Default configuration is just there, after the product release

When a constraint-based product is released to a legal entity, the system automatically creates and releases a default product variant with the configuration value Default. The Default parameter is derived from the Default configuration ID field on the Constraint-Based product configuration models tab in the Product information management parameters form. This form is located under Product information management> Setup. The Default configuration ID value is set automatically during system installation. It references the SYS Label @SYS331038, but you can always change the value.

clip_image004

Figure 3 Product Parameters form

The process to create and release the default product variant is completely transparent and once the Default configuration ID parameter is set, no further action is required. If the product is released to multiple legal entities, the same default product variant will automatically be released to all of those legal entities.

Once the default product variant is released to the legal entity, the system will also update the default product variant fields on the released product. The default configuration dimension value is provided when you enter the item number on the order line. Any end user can change this setup in order to, for example, always have a basic configuration of a specific product suggested on all order lines

clip_image005

Figure 4 The default product variant dimensions are set to match the Default Configuration ID

Summary

The default configuration concept makes it possible to start the product configuration process at the point where the main product master data are available within a given legal entity. In order words, it facilitates the first step in the overall process of configuring an order line and it goes without saying that the first step is a prerequisite to move on in the process. Thanks for reading.


Attribute based sales prices for the Product configurator

$
0
0

Product configurator – Attribute-based sales prices

In Cumulative Update number 7 to Dynamics AX 2012 R2, we have introduced an
alternative to the cost-based sales prices in the Product configurator, namely
attribute-based sales prices. This new feature will allow you to build sales
price models with sales prices based on components and attributes rather than on
the physical bill of material and the route. You can build several sales price
models for a product configuration model.

Before you start building your price models, you must define a default currency. The
default currency is used when you build your sales price models. You can also
decide whether you want to attach an Excel-based price breakdown to the order
or quotation lines. The price breakdown will enable you to share details with
customers about how you arrived at a specific sales price for a configured
product. You can maintain these settings in the Product information management parameters.

With these properties in place, you are all set to start building your sales price models.
Click the Price models action on the Action Pane in Product configuration models.

The Price models list opens.

After having added at least one entry to the list, you can click Edit to display the Price
model
form. In the header of the form, you see the default currency and you can add new currencies for your price setup.

In the left pane you see all the components and user requirements of the product model.
Each node in the product model tree can have one base-price expression and an
optional number of expression rules. An expression rule consists of a condition
and an expression and each expression rule covers a product option that helps
control the price of the product.

The example above has a base price of a static number of 900 and two expression rules. The
first rule sets the price for the cable according to the selected length. The
second rule deducts 110 from the price if the same color is applied to all components.

When you build your conditions and expressions, you have the same operators available as
those that are used for calculations in a product model. Moreover, the expression editor supports

both conditions and expressions.

Once you have specified a base price and a set of expression rules for one node, you can
click on another node to continue building your price model.

If you want to maintain your prices in several currencies, you can add new currencies by clicking
the plus icon on the Action Pane and then you can select from the list of available currencies in the system.

In the example below, EUR has been added as a currency. When a configurable product is sold, the system

checks if the prices have been set in the currency of the customer. If this is not the case, the default currency

is converted to the currency of the customer using the currency exchange rates in the sales company.

What you can observe immediately is that for each price element there are now two expression
fields:

  • Default, which shows the expression you created in the default currency.
  • Expression, which is the field you will use to express the price for the new currency.

Please observe that the condition field for the expression rules is “owned” by the
default currency. This means that you cannot modify the condition for the new
currency.

Also, you cannot add expression rules for an additional currency. To create expression rules
that would be relevant only for a currency other than the default currency, you
can set the price expression for the default currency to zero. Then set the
appropriate expression for the non-default currency.

To test how the sales prices behave in a configuration session, click Test on the Action Pane. The Configure
line
form opens and you can select attribute values and immediately see the impact on the price.

If you want to see how the total price, in this case 3,466.90 US Dollars, was calculated,
you can click View price breakdown on the Action Pane. This will open Excel and display both the absolute

value and the contribution as a percentage for each active price element. If you have set
the Price breakdown parameter, this Excel sheet gets attached to the order or quotation line.

When your price models are in place, you must establish at least one selection criterion
to pick up the price model when you configure to quote or to order. You build
the selection criteria using the standard Dynamics AX SysQuery form.

To get started with this, click Price model criteria on the Action Pane in Product configuration models.

The Price model criteria list opens.

Enter a name and a description, then select which price model the query is related to,
what order type it should be used for and its validity period. When you click Edit, the SysQuery form is

displayed showing the primary tables for the selected order type. In the example below,

the order type is Quotation type prospect.

You can add to the list of tables by right-clicking on the tables in the header. Under Fields

on the Range tab you can add and remove filtering options.

Once your queries are created, you need to place them in the proper order in the

Price model criteria list. At configuration time, the system starts looking from the top of the

list and uses the first query that matches the data on the quote or the order line. So if you
place a general query at the top of the list, this is the one that will be used
even though there might be a query further down the list that targets the exact
customer or prospect of the configuration. Use the Up and Down arrows to change
the order of the queries.

You can filter the Price model criteria list to view Valid, Expired, or All queries. Use the

View action to set the filter appropriately.

Queries for price model criteria can be duplicated. When you create a duplicate, you must
enter a new unique name and a start date.

When you click OK to save a new query, the expire
date of the query that you duplicated is set to the day before the selected
valid from date.

In a combination with matching sales price models, the queries provide great
flexibility in targeting sales prices for particular customers, regions, periods,
and other criteria. To create new sales price models, you can either duplicate
an existing model or start from scratch.

The final step is to specify attribute-based sales prices for the product model version.
Select Attributebased in the Pricing method field in the Versions form.

 

 

Supply chain excellence in manufacturing

$
0
0

Today I had the opportunity to take part at a Master Class on Supply chain management with Professor Martin Christopher from Cranfield University, Bedford, UK. The master class was hosted by Implement Consulting and the attendants were coming from all Industries in Denmark.

 

Professor Christopher succeeded to draw a relevant picture of the future trends and challenges to global supply chain management and to manufacturing in particular, and I would like to share a couple of quotes and thoughts.

 

  • Move from forecast driven to demand driven - Instead of planning to replenish inventory, establish supply chains that allow you to fulfill demand as a single event.
  • For products, where individuality and responsiveness are relevant, the agile supply chain - and the agile manufacturing process - must be designed for responsiveness,      not for the lowest cost. Responsiveness has to be built in the process and comes with a certain cost.
  • Substitute information for inventory - sharing information on demand and supply chain execution across the supply chain helps reducing or even eliminating inventory.
  • Flexible capacity - Move from static capacity to flexible capacity models, that allow to scale according to actual demand. Instead of acquiring manufacturing and distribution capacity based on forecast before the fact, a now model of
         acquiring capacity options that can be used on specific actual demand is emerging in the markets.
  • Economics of scale vs. Economics of scope - Instead of the volume of products, the bandwidth of products that can be delivered out of a supply chain drives the economic success.

 

It was an inspiring morning, leaving me with a lot of thoughts and ideas.

If you are inspired as well about these topics, join Roxana, Sverre and me at our session on Mass customization in a distributed supply chain in Microsoft Dynamics AX 2012 R2 at Convergence EMEA in Barcelona next
week, where we will share our vision on how the combination of product configuration, intercompany planning and lean manufacturing can bring you to the next level of supply chain excellence.

 

Now available: Cumulative Update 7, featuring the product change case management

$
0
0

With the recent release of Cumulative Update 7 for Microsoft Dynamics AX 2012 R2, the case management functionality of Microsoft Dynamics AX has been enhanced for documenting and releasing product changes to production.

Many manufacturing companies will welcome this simple built in possibility of creating product change cases to document component substitutions in bills of materials or formulas, or changes in the production route, and of being able to visualize the impact of such component changes.

The new product change functionality provides enhanced support for approval and activation of the changes to bills of materials, formulas and routes that are associated with a product change case, which reduces the effort needed for releasing product changes to planning and production. This new capability also offers a new opportunity to integrate changes from an external PLM solution into Microsoft Dynamics AX with the context of the PLM change order with enhanced support for validation, approval and activation in production.

The diagram below illustrates the overall product change process, and highlights those elements (with black outline) that are supported by the new product change features in Cumulative Update 7 for Microsoft Dynamics AX 2012 R2.

Meet me at Convergence EMEA 2013 at the Manufacturing booth if you would like to see the feature in action.

We will soon share more details about this new functionality in this blog.

 

 

Download it now!

Microsoft Dynamics AX 2012 R2 Cumulative Update 7 (KB2885603) – build #6.2.1000.4051

Material availability check on in the kanban board for transfer jobs

$
0
0

One of the basic applications of kanbans is to replenish purchased material in kanban supermarkets in production. Replenishment is handled using a kanban transfer job on the kanban board for transfer jobs. The status of a kanban transfer job can be one of the following

  • Not planned
  • In Progress
  • Completed

A transfer job changes from status "Not planned" to "In Progress" when the user selects the Start button in the kanban board. The “In progress” status is useful when a transfer job will run for a long time. For short-termed transfer jobs where, for example, the material is stored close to the place of consumption, the “In progress” status can be skipped and instead be set directly to “Completed”. For the scenarios where the “In progress” status is used, we have identified the following two challenges

Challenge 1

A user can start a job, even though the required materials are not available, because inventory isn’t updated until the transfer job is completed (similar to posting an inventory transfer journal)

Scenario: A worker starts the transfer job without using the supply status, found in the picking list tab page, to check for on-hand inventory. When he arrives to the picking location to pick up the material, he discovers that the material is not available.

Challenge 2

The system does not allocate the materials to the job when it is started

Scenario: A worker starts the transfer job after using the supply status to verifying that material is on-hand. He walks over to the picking location, but the material is no longer available because it was picked for another job.

 

To prevent these situations from happening, we have introduced the following capabilities in CU7

  • The availability of materials is verified when a transfer job is started
  • The quantity of the materials required for a transfer job are reserved when a transfer job is started

If a worker tries to start a transfer job when the material is not available, the job cannot be started and go to status “In progress”. The worker will be notified that material in not on-hand in the messages section in the transfer board.



 
    
If the required quantity for the job is available, the system makes a physical reservation for the material. In that way it cannot be allocated to other jobs. One thing to note here is that the reservation is not canceled if the status of the transfer job is reverted from “In progress” to “Not planned.” The worker must cancel the reservation on the Reservation form, which is now available from the picking lines in the transfer board. The menu item to the On-hand form has also been made available there.

 

 

 


 

Product Configuration: Setting values based on system variables - example, current user ID

$
0
0

In this blog post we will describe how you can  set values
based on the current user ID by leveraging system-defined table constraints
together with the build-in query range methods.

 

If you are familiar with the Product Builder configurator,
you may by familiar with the User Profile
feature where you can associate a collection of default values with a given
user. Use the following description to achieve a similar behavior using the
Product Configurator.

Creating the System Table

 

The table we create for this example should look like this and have two columns, that is, one for
the User ID (uses the  UserID EDT) and one for our user-specific value (an Integer to keep it simple).

 

 

 

Once the table is created, we can add the user specific data.

 

As seen above, we have added the value 42 for the Admin
user ID. The intention is that when the table constraint is created and used in
model, the attribute, which will be bound to the UserSpecificIntegerValue
column, will be assigned the value that corresponds to the current user ID.

 

Creating the Table Constraint

Now that the System Table is created, we can create the actual table constraint. This is done by
opening the Table constraint definition
form, under Product information management -> Common -> Product configuration models.

Create a new table constraint by clicking the new button.

 

Select System defined, and enter the name of the table created previously.

 

Add a column for the user-specific integer value and choose an integer attribute type with ranges.

  

Now comes the part which gives the attribute a user-specific value. This can be accomplished by
opening the Select query (SysQuery) form and entering the range specified
below. The content of the table will be filtered to just return the records
associated with the current user ID.

 

Click OK to complete the table constraint creation, click Next in the Wizard, and then click OK again.

Using the system-defined table constraint in a Product configuration model

Having just created our system-defined table constraint, we are now ready to use it in a Product
configuration model. Below I have create a very simple model with 3 attributes:

  1. One integer attribute to hold
         the user-specific value
  2. Two boolean attributes for
         each of which I will be using the Hidden modifier with a condition
         expressing that the attribute is only to be shown if the user-specific
         value matches that of the current user. 
         The "Only Admin" attribute will be hidden if the user
         specific value is different from 42.

 

 

Similarly, I have added an attribute named "Only Dmitry", which only will be
visible if the user log on to Dynamics AX is associated with User ID Dmitry.

 

Once the attributes have been defined, it's time to attach the table constraint to the
model. This is done by creating a new constraint in the constraints section and
selecting Table constraint in the opened dialog.

Then select the new table constraint and associate the user-specific value attribute with
the user-specific value column, as shown below.

 

Launching the model and understanding the results

We are now ready to launch the model we created with the attached table constraint. As can be seen
below, once the model is loaded, the User Specific Value is assigned the value 42 by the configurator. The "Only
Admin" attribute is shown and the"Only Dmitry" attribute is hidden.

 

 

This example can be extended to include several other concepts like hiding subcomponents and
grouping user specific value into table constraints. An obvious use case would
be that you hide some parts of the Product configuration model from the order
takers (Susan persona). This could be engineering-specific details and the
product designer (Emil persona) would still be able to see them.

 

Furthermore, the above pattern can be used together with other of the build-in query range
methods.

 

  • currentCompany
  • currentLanguageId
  • currentUserLanguage
  • currentLegalEntity
  • currentParty

 

Note:

It you are running
on a build that has a performance fix to run the XML generation in IL, you will
need to generate IL for the SysQueryRangeUtil class.

 

I hope you find this useful 

 

 

 

'Demand forecasting in Dynamics AX 2012 R3' whitepaper available for download

$
0
0

Download the paper from http://www.microsoft.com/en-us/download/details.aspx?id=43128 if you want to learn more about:

- demand forecasting in Dynamics Ax 2012 R3 value proposition and market positioning

- what this forecast tool is, but also what it isn't

- functionality details

- demand forecasting parameters and how to set them up

- troubleshooting and improving demand forecasting performance

Microsoft Dynamics AX Production floor app is available in the Microsoft Windows App store

$
0
0

Along with Microsoft Dynamics AX 2012 R3, Microsoft has released the Windows 8 Production floor app that works with the product. This app is compatible only with installations of Microsoft Dynamics AX 2012 R3 or later.

With the Production floor app, you have a mobile, actionable overview of the production jobs that need your attention today. You can quickly perform daily production tasks such as starting jobs, reporting jobs as finished, and registering breaks and absence. Large font sizes and input controls improve readability and make the app easy to use while you’re on-the-go.

Want to try it out? You can download the app from the Microsoft Windows App store  http://apps.microsoft.com/windows/en-us/app/cc07f817-e74c-48aa-86ad-1c0345fff989 and run it in a demonstration mode that lets you explore the features without a connection to Microsoft Dynamics AX.

 
 

Choosing the right coverage setting for when to Fulfill minimum

$
0
0

Why this blog post?
Multiple people have asked how the four different options to Fulfill minimum works and I was missing a detailed description of this. Therefore, I decided to describe the different options to ‘Fulfill minimum’ in Microsoft Dynamics AX.

So here we go:
Fulfill minimum defines when the Minimum (in this case 10) should be achieved. The minimum and the Fulfill minimum parameters are active for all Coverage codes, except for Manual that is not planned at all.

 


Today’s date

With ‘Today’s date’ planning will try to fulfill the minimum with a supply delivered today. However, unless the supply can be delivered on the same day (zero lead time) you will not be able to achieve this.

Example:
Product @Min is purchased with a lead time of 5 working days (7 calendar days)

 
 


Today’s date + procurement time

With ‘Today’s date + procurement time’ planning will fulfill the minimum with a supply delivered today + lead time + any safety margins. Compared to ''Today's date' adding the procurement time will prevent futures in most situations.

Example:

Product @Min is purchased with a lead time of 5 working days (7 calendar days)

 
 

First issue
With ‘First issue’ planning will place the supply to cover the minimum at the same time as the first issue (e.g. a sales order). This ensures that you do not carry unnecessary inventory for new products until there is an actual demand for them.

Example:

Product @Min is purchased with a lead time of 5 working days (7 calendar days) and Coverage code Period to combine demand within the Coverage period into one supply order.
Two sales orders for one pcs each exists: first on 17-07-2014 and second on 28-07-2014
 

 


Coverage time fence

With ‘Coverage time fence’ planning will place the supply to cover the minimum at the last day of the Coverage time fence.

Example:

Product @Min is purchased with a lead time of 5 working days (7 calendar days) and a Coverage time fence of 100 days. 

 

 
 

I hope this explained the meaning of the Fulfill minimum parameter.

 

Lean manufacturing: Picking activities and kanban line events

$
0
0

When using Lean manufacturing in Microsoft Dynamics AX 2012, you can model production flows that use multiple activities to produce a single product. This was described in the whitepaper, Lean Manufacturing: Production flows and activities, in the section “Semi-finished” on page 26. In that context, “semi-finished” refers to the output product from an activity that has not yet reached the next BOM level and requires additional activities.

With R2, we extended this functionality with the capability to distribute the material consumption over the different activities of the production flow. In order to achieve this, specific picking activities must be created and assigned for each process activity of the production flow. This determines which kanban line will be associated with which kanban job.

In this blog, I will walk you through a small scenario, to illustrate how to define a production flow that uses this capability, and to provide a couple of hints to help you understand the possible issues in this process.

Assume the following production flow:

A finished product is produced from one lean production flow with a kanban rule spanning over two activities. The finished product needs two components, the first is consumed by process 1 and the second is consumed by process 2.

Additionally, both components are pulled to the activities by using a withdrawal kanban line event kanban.

In the following we will explain the critical elements of the definition of the production flow. We will not include every step of the configuration, to keep the focus on the elements that influence and enable the specific desired behavior.

We start with defining the products and the bill of material (BOM):

Consider that the BOM and BOM version do not specify a site, and the lines specify resource consumption. This allows us to produce the same product on multiple sites or multiple alternative production flows. The warehouse
and locations will be determined out of the production flow during creation of the kanban.

Now we will define the work cells, the production flow, version, and the respective activities.

We define two work cells for the two activities, WCP1 and WCP2 as resource groups:

SpProd is the warehouse on the production shop floor on Site 2. Each work cell has a dedicated input and output location. The input location of WCP1 is Input, the input location of WCP2 is SpAsm.

The finished products will be put to location Pack when the kanbans are received.

We will now create a production flow and version:

And then create the activities for that version:

The first activity is Process 1, activity type Process.

In the next step, we select the work cell WCP1. As this activity is not the activity that finishes the product and posts the receipt of the product back to inventory, we must deselect Update on hand receipt. Instead we select receive Semi finished product, to specify that this activity requires one (or multiple) successor activities to finish the product.

As the first process activity in the production flow, the Pick up semi finished check box must stay unselected. Because this check box is unselected, the next step will open the Picking activity definition and show the default picking activity that has been created for the input location of work cell WCP1:

The picking activity is set up to Update on hand and Register scrap by default. Click Next.

In the last step we assign an activity time, and finish the creation of the activity. (Note that time and capacity are not specifically discussed in this blog, as they do not influence the discussed behavior. However, they are mandatory data to set up to make the scenario work.)

We will now create Process 2.

Again, we assign a Name and select the activity type Process.

As the second activity in the flow after Process one, we have to specify the activity as Pick up Semi finished product. If you forget this setting, you will receive an error when you attempt to create the activity relation between these two activities.

As this is the last activity in the production flow, the activity must be set to Update on hand receipt. The output of the activity must be posted to inventory. This configuration deselects and disables the Receive Semi Finished product check box.

Because the activity is set to Pick up Semi finished product, the Next button will take you directly to the activity time definition. Notice that there is NO default picking activity defined for this activity. You may define picking activities in a later step by using the activity details form. We will return to this, as this must be done for the given scenario.

Back to our activity, again, we have to specify a runtime to complete the creation:

Then we can finish the creation of the activity.

If everything has been correctly created, you should be able to create the activity relation between the two activities now:

The next step is to create the two transfer activities that will be used to pull the material to the work cells.

Again, add a new version activity:

Select the name Transfer 1 and the type Transfer and click Next.

For transfer activities, the second page of the activity wizard is different. To make the configuration simpler, you can directly select the work cells that replenish or are replenished by this transfer activity. In our case, we select WCP1 as the replenished work cell, as the activity should pull material to this cell. (Note that the relation to the work cell is not persisted in the data model. This is just used to provide the input and output locations from the selected work cells.)

Use the default settings for finished products and update the on hand for this activity. (There are variations to this scenario that would not update the on hand inventory, but that is another story.)

On the next page, note that the Transfer to location has been included from the replenished work cell WCP1. Select a source warehouse and location for the transfer, and select Shipper in the Freighted by field:

Finish creating the activity by assigning an activity runtime. Then you can assign Transfer 1 as a predecessor activity to Activity Process 1:

Be aware that this only works because there is a default picking activity on activity Process 1, that matches the target warehouse and location of the transfer activity. If one of these conditions is not met, an error message is displayed.

We will now repeat the activity creation for Transfer 2, to replenish WCP2:

Again, specify a process time to complete the creation of the activity.

However, our attempt to connect this transfer activity to Process 2 will fail:

As mentioned earlier, Process 2 does NOT have a default picking activity.

In order to create the activity relation, we need to create a default picking activity for this activity. We can do this in the activity details form:

Open the details form for Process 2, open the FastTab for picking activities, and add a new line:

Add a default picking activity for warehouse SpProd and Location SpAsm. A default picking activity has NO item and no product dimensions.

Close the form and repeat the creation of the activity relation and you will get the following result:

We are now almost done.

In order to configure the expected picking behavior of Process 2, we need to get back to this activity again and change the picking activities once more. For this, open the details again:

To ensure that Component 2 is picked for Activity 2 and that a kanban line event is created for this activity, there must be a valid picking activity for Component 2. The previously created default picking activity (no item) would be valid for this as well. However, it would also catch Component 1 to be picked at activity 2. Therefore, the picking activity should be updated with Component 2 and the default picking activity should remain on Process 1.
Remember that for any product that should be picked on Process 2 instead of Process 1 you will need to add a line to the picking activities of Process 2. You can also do this after the production flow has been activated.

You can now activate the production flow. (Depending on your capacities, you may have to adjust the takt requirements of the production flow version. Again this mandatory setup, but it is not important to the outcome of this scenario.)

We will now proceed with creating the kanban rules. We start by creating the two kanban line event rules for Component 1 and Component 2:

The kanban rule type is Withdrawal. Select the activity Transfer 1 and the replenishment strategy Event. The kanban line event should be set to Automatic. The product selection is Component 1.

Create a similar rule for Component 2 and activity Transfer 2:

Finally, create the kanban rule for the finished product:

Select Manufacturing type. The replenishment strategy could be any. In this case we use Fixed. The first plan activity is Process 1. Check multiple activities, which activates the last activity field. Fill in Process 2, which opens the selection of the Kanban flow form. As this is the first rule created for these activities, you need to generate the flows by using the Generate flow button and then confirm the warning message that will be shown.

There will be one resulting line: Process 1 > Process 2. Select the line and close the dialog with Ok.

Enter the default quantity and the fixed kanban quantity to complete the kanban rule definition.

If you now go to the Kanbans FastTab and click Add, you can create the first kanban:

After the creation of the kanban, open the kanban details form and view the Jobs and Pegging FastTabs:

Two kanbans and the respective kanban cards have been created and pegged to each of the activities of the parent kanban.

Summary:

To model more complex material flows for Lean manufacturing for Dynamics AX you need some basic understanding of the underlying concepts:


  • Use kanban line events to pull material to kanban activities

  • Use activities  that consume or receive semi-finished products (work in process between two BOM levels) to model lean manufacturing processes that require multiple process activities to produce a product

  • Use picking activities to allocate material consumption to specific activities in a production flow

  • Understand and use default picking activities in production flows that have multiple activities

When you have understood these basic concepts, the full power of the Lean manufacturing for Microsoft Dynamics AX is available to you.

 

 

 

Support for Recycled By-products in AX 2012 R3 CU8

$
0
0

This new functionality is available with KB 2989470 / HF 2989470 and will be included in Microsoft Dynamics AX2012 R3 CU8. To find the HF you can use LCS Issue Search.

What’s new?
To support recycled or recurrent products in process industry, it is now possible to use the same product as both input and output on a formula. As an example, this is useful in plastic molding where consumed plastic regrind can be recovered from the manufacturing process. Other examples are processes where you put metal scrap from the stamping/forming process in a foundry.
The recurring co-product solution in Microsoft Dynamics AX2009 had some limitations on the costing side and was not ported to AX2012. This new solution use by-products with a stronger support for costing.

Feature solution
This new feature enables the consumption and reuse of the same by-products in the production of formulas and batch orders, by allowing BOM circularity for output that has the production type, By-product.
For costing purposes a new Burden type, Recycled, was added to handle the cost of the recycled by-products. Use of the Recycled Burden type deducts the joint production cost that is allocated to the formula and co-products, by using the standard cost value of the recovered by-product.
By-product output from planned and firmed batch orders is ignored during planning. This is done to ensure that demand for the recycled product isn't pegged against by-product output from the same order, or other orders from the same process or BOM chain. This means that the recycled by-product cannot be pegged until it is on-hand (posted from the batch order).
Finally as a small additional improvement on the Explosion form, it is now indicated when a formula output is a by-product. This is done by adding '(By-product)' to the line.
 
Set up recycled by-products
In order to allow BOM circularity, the recycled item must use standard cost and use the production type By-product or in special cases Co-product. On the formula the recycled product input is a normal formula line, and the output on the same or other formulas is a co-product output of the Production type, By-product, and the Burden type, Recycled.

  1. Product 
    1. The recycled functionality only supports standard cost, so ensure that you select an Item model group that uses the Inventory model, Standard cost, on the General FastTab:


    2. Ensure that the Production type is By-product on the Engineer FastTab for the product:
       
      Note: Products with production type Co-product can also be used, but then you will have to change the Production type to By-product on the formula or batch order, to use the recycled by-product functionality.

  2. Input - formula consuming the recycled product
    The recycled product is added as a normal formula line on the formula:


  3. Output - formula producing the recycled product
    On the formula (can be the input, or another formula) that produces the recycled item, the recycled item must be added as a co-product output of the production type, By-product, with the Burden type, Recycled:

    We are aware that the name Burden is not full correct with the Recycled option added. However, the nature of a hotfix release didn't leave room for renaming.

 

Let's try an example to see the feature in action:
 
We have the following three products:
M1 - Main ingredient, Standard cost - $10/Kg, Purchase, 100 kg On-hand
B1 - By Product, Standard cost - $5/Kg, Purchase, 15 kg On-hand
F1 - Formula item, Standard cost, Production, 0 kg On-hand
 
To produce F1 we use the following formula:
F1-FORM, Formula Size: 10 Kg

With the following lines
M1, 20 kg
B1, 10 Kg

Co/By-Product lines
B1, Production type = By-product, Burden = Recycled, 8 Kg 

In AX it looks like this:

With the B1 added as By-product under the Co-products output:


First sales order

To generate a demand for F1 let’s create a sales order for 10 kg:

Running the explosion on the sales order will generate a batch order to produce the 10 kg because we don't have any F1 on-hand:

Notice that the first line for B1 indicates that we get an additional co-product output of the type, By-product.
 
As both M1 and B1 are on hand, we can firm the planned batch order and start the production. (Planned orders -> Firm)
 
Processing the batch order
Let's report the batch order as finished with the expected input and output:

What happened to the cost?
I have set a material overhead of 10%, so looking at the cost perspective we get the following.

Batch cost:
     M1 20 kg = 20 * $10 = $200
     B1 10 kg = 10 * $5 = $50
     Overhead 10% = 10% * ($200+$50) = $25
     Total = 200+50+25 = $275

B1 cost share (8kg): 8 * $5 = $40 (note this is fixed to the Std. Cost - no overhead)
F1 cost share (10kg): $275 - $40 = $235 (Incl. all $25 in overhead)

For the formula product - F1:


And for the by-product - B1:
 

Second sales order
Let's create another sales order for 20 kg F1, to see how planning handles a shortage of the recycled by-product.

Running the explosion on the sales order will generate a planned batch order to produce the 20 kg. Notice the planned order for B1.

We still have plenty of M1: 

  • We have 80 kg and we need 40 kg for the additional order.

However, we are running short of B1:

  • Initially, we had 15 kg. The first batch order consumed 10 kg and output was 8 kg, so now we have 13 kg.
  • For the new order we need 20 kg, so a planned order for 7 kg is created to cover the missing ingredient.


Summary:
With HF 2989470 that is included in Microsoft Dynamics AX 2012 R3 CU8, it is now possible to recycle and reuse by-product output from batch orders.

  • The recycled product must use standard cost and have the production type, By-product or Co-product
  • On the formula, co-product output must be of the type, By-product, and have the Burden type, Recycled
  • Planning will now consider only on-hand inventory for by-products. So potential supply from batch orders is not used for pegging until the batch order output is posted.

Replacing work order types for production output in CU8

$
0
0

This new functionality is available with KB article 2988071 and will be included in Microsoft Dynamics AX2012 R3 CU8. To find the KB article you can use LCS Issue Search.

Whats new?

In Microsoft Dynamics AX 2012 R3, work order types represent warehouse work activities for various types of source documents. Work order types are the basis for work classes, work templates, and location directives, which are the building blocks for configuring warehouse work. In AX 2012 R3 there were the following work order types for production output

The work order type determines how the query for a location directive is set up. In AX 2012 R3, if you selected the Batch order put away work order type, the query combined both the production orders and the production co-products and by-products.

 

This design had some built in issues, for example, when reporting a formula item or a co-product or by-product as finished in production, the location directive could not find an applicable put-away location. Instead, the user was prompted to manually enter a location as shown in the illustration below

 To resolve this in AX 2012 CU8, we changed the work order types for production output. The following types are now available

 

Let’s walk through the setups we’ll need to handle a scenario for setting up work classes, work templates, and locations directives with the new work order types.

Scenario: The company uses formulas with co-product and by-product outputs. The by-products are always stored on a location called SCRAP.

The first thing we need to do is create work classes for finished goods put away, and co-products and by-products put away. Open the Work classes form by clicking Warehouse management> Setup> Work> Work lasses. For the work class for finished goods put-away, select the work order type Finished goods put away.

 

 For the work class for co-products and by-products put-away, select the work order type Co-products and by-products put away.

 

What we need to do next is set up the work templates that we’ll use to create the pick and put work for finished goods and co-products and by-products. Open the Work templates form by clicking Warehouse management> Setup> Work> Work templates. For a work template for finished goods put away, in the Work order type field, select Finished goods put away. When you set up the pick and put lines in the lower part of
the form, select the work class for finish goods put away for each line.

 For a work template for co-product and by-product put away, in the Work order type field, select Co-product and by-product put away. When you set up the pick and put lines in the lower part of the form, select the work class for co-product and by-product put away for each line.

 

The last step is to set up the location directives we’ll use to put away finished goods and co-products and by-products. Open the Location directives form by clicking Warehouse management> Setup> Location directives. For a location directive for finished goods put away, in the Work order type field, select Finished goods put away.

For a location directive for co-products and by-products put away, in the Work order type field, select Co-product and by-product put away. Then we’ll create two put lines.

Remember that the company wants to put by-product in a location called SCRAP. To make this happen, we’ll create one location directive for co-products, and one for by-products. We can differentiate the two through the setup of the query for each location directive. For the location directive for by-product put away, we’ll set up the query on the Location directives FastTab to use the Production co-by products table, and select By product as criteria for the query, as shown in the illustration below. We’ll use the same settings in the location directive for co-products put away, but we’ll select Co product as criteria.

We now need to set up the location directive for by-products so that it directs work to the SCRAP location. We’ll do this by adding a location profile ID that is specific for the SCRAP location to the query.

For the location directive for by-products, on the Location Directive Actions FastTab, we’ll set up the query to use the Location profile ID for SCRAP as criteria, as shown in the illustration below.

We need to do the same thing for the location directive for co-products but we’ll use a different location profile ID, as shown in the illustration below.

 

Summary

The work order types that are used for production output have changed in AX 2012 R3 CU8. If you are upgrading from the R3 version to CU8, you will need to re-configure your work classes, work templates, and location directives as outlined in the example in this blog

 

Warehouse work for raw material picking split per route operation

$
0
0

This new functionality is available with KB 2995227 and will be included in Microsoft Dynamics AX2012 R3 CU8. To find the HF you can use LCS Issue Search.

Whats new?

To support and efficient process for raw material picking in production, it is now possible to split warehouse work for raw material picking per route operation. As an example, this is useful in a so called bulk / pack production scenario. In this scenario there could be one operation for making the bulk material and one operation for bottling and packing. These two operations are both consuming materials, but will be carried out in different physical locations, maybe even different buildings. Splitting the work per operation will, in this case, secure a process where the warehouse worker is directed, by warehouse work, to deliver the picked materials to the exact locations, where the materials are consumed.

This blog will explain how this new capability is enabled by using the official demo data released for Microsoft Dynamics AX 2012 R3 CU8 Virtual Machine (VM).

In the company USPI there is a formula for making Pellets. This formula will be used for showing how this feature is enabled and used. The illustration below shows the Pellets production. The item numbers for the ingredients (or raw materials) as MW4004 - Polypropylene and MW4005 - Rubber are pre-fixed with MW and the four end items are pre-fixed with PW. PW4000 - Pellets is the formula item, and PW4001 – Chips and PW4002 - Blocks are co-roducts. PW4003 - Slag is a by-product.

As it can be seen in the illustration ingredients from the pellets production are consumed at two different operations. Let us see how work is now split per operation when releasing a batch order for the Pellets formula. First we create a batch order for Pellets and perform the following steps Estimate, Schedule and Release. In the Release step warehouse work is created

 

In the work details form it can be seen that two warehouse works has been created in the release step. The first work is for allocating materials to the extruder operation, which is the first operation in the route. The materials are allocated to the production input location: EXT

The next illustration shows the work details for the second work for the order. This work is for allocating materials to the Mixer operation. The materials are allocated to a production input location: MIX

Let us take a closer look how to enable this feature. First we need to setup the production input locations that will be applicable for the route operations. The Pellets formula has a production route with four operations

The first operation PPExtCut is consuming MW4004 - Polypropylene and MW4005 - Rubber. An applicable production input location for this operation is found through the Resource requirements for the operation. In the Resource requirements, criteria for finding an applicable resource or resource group during scheduling, is set up

The input location can be specified at the resource group but also on the relation between the resource group and the resource, as it can be seen in below illustration

In case no input locations can be found from the resource groups or resource group relations, then a default production input location is used as a fallback location. This default input location is setup on the warehouse

After setting up the input locations we need to specify which operations that are consuming which materials. This mapping is set up on the material lines using the field Oper. No. This is shown in the below illustration

If no operation is specified on the material line, then the production input location will be found from the resource group or resource group relation, applicable for the first operation in the production route. If no applicable input locations can be found, then the default output location for the warehouse is used. In below diagrams the defaulting hierarchy is shown. First diagram shows the rules that applies for finding the production input location for a material line that is mapped to the first route operation or does not have a location defined

 

Second diagram shows the rules that applies for finding the production input location for a material line that is not mapped to the first operation but to one of the following operations in the production route

In order to enable the split of warehouse work a minor change has been introduced to the work template for raw material picking. When a new template is created a Work break is automatically inserted. This work break is by the system configured to group work per route operation. It is possible to remove the work break, and in that case only one work will be generated when releasing to the warehouse from production. In that case the input location found from the first operation in the route will be used as production input location, and if none found on the route the default output location set up for the warehouse

If the hotfix is deployed to an existing installation, then the work template for raw material picking need to be recreated in order to establish the work break. An alternative is to insert the work break manually in the existing work template.

Again looking at the work details for the released batch order for pellets, we should now understand how the input locations for the two sets of work are found

 

Summary

In CU8 work for raw material picking can now be split per route operation. On the resource groups and the relation between the resource group and the resource it is possible to setup a production input location to be used in warehouse work. Installing this hotfix on an existing installation will require to recreate or update the work template for raw material picking. This new capability secures a more efficient picking process for production and batch orders, as the warehouse work will now direct the warehouse worker to the exact locations where the material is consumed.

 

 

 

 

Viewing all 104 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>