Professional Documents
Culture Documents
White Paper
Microsoft Axapta 3.0 and Service Packs
Contents
Introduction ...........................................................................................................................1
Proposed Solutions...............................................................................................................4
Inventory Closing Red Delivery ........................................................................................4
Inventory Closing Yellow Delivery ....................................................................................7
Inventory Closing Green Delivery.....................................................................................7
Conclusion ......................................................................................................................... 45
References......................................................................................................................... 46
This white paper also describes various scenarios for upgrading from Microsoft Axapta 2.5
to Microsoft Axapta 3.0, including specific configurations that customers should avoid.
Furthermore, this white paper describes how Microsoft Axapta development teams expect
to address inventory closing-related issues in service packs such as Microsoft Axapta 3.0
Service Pack (SP) 4, as well as necessary updates for Microsoft Axapta 3.0 SP2 and SP3.
Note that customers will need to use Microsoft Axapta 3.0 SP2 or later in order to take
advantage of the updates described in this document.
Updates that address inventory closing-related issues will be divided into three deliveries,
referred to here as “Red,” “Yellow,” and “Green,” depending on the content and
distribution plan of the updates.
• The Red delivery is a package of code that has been made available for
download.
• The Yellow delivery consists of an internal tool that will be available for service
personnel in order for them to help partners. This Microsoft Axapta Inventory
Closing White Paper, second edition is also considered part of the Yellow
delivery.
• The Green delivery consists of new ways of performing inventory closing that will
be integrated into future releases of Microsoft Axapta.
Note that different number formats have been used in the screen shots. For example, 36.0
may be displayed as 36,000.
It is also possible that some Customers may have issues running an inventory closing
routine, under one or more specific conditions.
Finally, under certain conditions, the value of the inventory as reported from the Microsoft
Axapta Financial Management module may not match the values from the inventory status
reports.
The functionality of inventory closing and related recalculation routines is described in the
section Recommended Method of Using Inventory Closing later in this document. The
details of the logic behind calculating inventory value is described in the Technical
Information document: “Recalculation: Simulated Inventory Closing” on the Microsoft
Axapta 3.0 installation CD.
Inventory closing-related issues are important because, if not addressed, they can
potentially prevent customers from financially closing their books and creating financial
statements.
A few partners have reported trying to solve this issue by changing the length of the
database fields, so the fields can hold the extremely large costing numbers. However, this
method does not solve the underlying technical reason for increasing cost values and may
mean that the inventory closing routine can run for months before the issues become
apparent.
Other inventory closing-related issues can be caused by a lack of knowledge of how the
inventory closing works and of the impact of various parameter settings. A few Microsoft
Axapta installations have had serious issues due to incorrect use of inventory closing
functionality and improper configuration of the installation. In some situations, manually
closing open transactions and resetting the inventory was needed to address the issues.
Upgrading
If users are using Microsoft Axapta 3.0 SP2 or SP3 or have just upgraded to these, it is
recommended that they install the Red inventory closing delivery package.
As part of the Red delivery, two jobs: updateInventTransIdReferenceLot and
updateInventTransIdReturn are installed. These two jobs correct markings and returns,
correcting issues that might have been introduced from elsewhere in the system.
Customers should run these two jobs after installation. They must run the
updateInventTransIdReferenceLot job before the updateInventTransIdReturn job.
Inventory Closing
R1 R2 R3 R4 R5 R6 R7 R8
Day 0 Today
Closing Date
Customers who are experiencing looping in inventory closing may find that changing this
parameter to a lower value can increase program performance. Looping may occur if
items are transferred between warehouses without having the items present physically or
financially (depending on the setup).
The following example shows how transfers between warehouses using an estimated cost
value are adjusted when only some of the items are financially updated. The adjustment
must then be applied to all of the looping items, so that the estimated cost of the transfer
transactions is updated for items to the new known cost value per piece.
This example shows 1 item physically received and then 10 items are moved from
warehouse MW to warehouse GW and then back to warehouse MW.
Then 1 item is sold at a cost value of EUR 10. Now the purchase invoice is updated for
the 1 item at a new cost value of EUR 100.
When running inventory closing, all the looped items must be adjusted to the new cost of
EUR 100. The last column shows the cost after Purchase 18 is financially updated with a
quantity of 10 and a cost of 100 per unit.
In order to improve performance when during a recalculation it is recommend that you
specify a low Maximum throughput value. However the value should be greater than the
maximum of BOM levels used.
When doing a closing, the maximum throughput value should be set to 100 in order to get
accurate cost values, therefore the limit should not be reached during a closing.
Note: There is a new closing procedure, for more information, see Figure 33.
Customers can modify the program’s security setup in order to limit the ability of others to
change configurations related to inventory closing. By default, users and administrators
can’t change the inventory models and dimensions, and so on.
Improvement of the Online Help and User Assistance
As part of the Green delivery, it is anticipated that the online Help and user assistance will
be updated to include guidelines and illustrations that are easier for the end user to
understand. There will be more examples backed up with conceptual and procedural help
text.
Customers can run reports to examine these issues. Figure 3 is an example of this type of
report. The report must display the critical transactions before the closing date.
In the update journal report illustrated in Figure 4, the production order is not yet
financially posted. However, the items are reported as finished and have perhaps been
used in a sales order or another production order.
If all consumption is reported for a production order and the production order is reported
as finished then the production order must be finally costed. It is recommended that the
specified date of costing is the same as the reported as finished date. Avoiding such a
situation can help ensure that the value from Item in Progress (IIP) and Work in Progress
(WIP) is posted to the finished item warehouse. The report must display the critical
transactions before the closing date.
In the examples illustrated by Figures 3 and 4, it is important that purchase and production
receipt transactions for an item are financially updated before closing, if the transactions
are physically updated.
In Figure 5, production order BOM lines are not financially updated, but the finished
produced items are reported as finished. A production order can only be updated with the
accurate cost during closing if all of its sub-assemblies have been costed. Figure 5 is an
example of the output for this part of the report. The report must display the critical
transactions before the closing date.
For an example illustrating that the correct inventory value can only be obtained at the
inventory close date, see the section Running Inventory Value Reports in this document.
Pre-closing Report Search Criteria
The report should check that:
• The posted quantity (financially updated quantity) of the item is less than zero
within the financial dimensions on the closing date. When this case exists, it will
not be possible to settle all issues against the receipts.
• Marked issues where the corresponding receipt(s) are not financially updated.
The production order is cost estimated in order to get an overview of the cost associated
to the production order. In this case, the cost price per unit is 13.5.
The production order of 5 units is begun with the parameters set up as shown in the
screenshot in Figure 8.
A sales order has a demand for 1 unit from the production order. In order to fulfill the sales
order demand, the production order is partially reported as finished with the quantity of 2.
The production order becomes partially costed. Users must clear the End job and Report
as finished check boxes on the Costing form in order to do additional reporting on the
production order to complete the remaining three units.
After costing the production order, the sales order for the single unit becomes invoice
updated. The cost amount for the financially updated and costed production order line of
two units is 67.500. This is actually the cost amount for the complete production order.
The cost amount for the sales order line of one unit is 33.75, which is half of the cost
amount for the entire production order of five units. The transaction for the three remaining
units cost amount does not become updated.
At the moment, these values are incorrect and they will first be corrected when the final
costing of the production order and the inventory closing have taken place.
The remaining three units on the production order are reported as finished and the
production order is ended. The production order is finally costed and the cost amount for
the two production order transactions are adjusted and settled according to the quantities
of the two transactions. That is, two units for the first transaction and three units for the
second transaction.
Cost amount for the first transaction = 67.5 x 2/5= 27
Cost amount for the second transaction = 67.5 x 3/5= 40.5
The cost amount for the sales order transaction is still not correct. It is still 33.75 and the
cost amount will be corrected when the inventory closing has been run.
When closing the inventory the cost amount of the sales order transaction gets settled and
adjusted to the correct cost amount of 13.5, as shown in Figure 7, under Estimated
Amount, in the Total cost price per unit field.
This example clearly illustrates the issue with incorrect cost amounts on sales order
transactions, when items are issued from a partial costing production order.
It is anticipated that code will be designed to update this function and will then be released
as part of the Green delivery. Until the update is released, it is suggested that customers
take care not to unintentionally begin an inventory closing.
The inventory evaluation method is expressed by selecting an inventory model group that
must be attached to any item. In the model group, users can enable the use of a standard
cost price in combination with any of the inventory evaluation method described.
The effect of the selected inventory model can be seen when closing or recalculating the
inventory. For more information on inventory models, see the following sections in this
document: Weighted Average Date Inventory Model, LIFO in Microsoft Axapta, and
Different Average Cost Values Within the Same Period Using the Weighted Average Date
Cost Model.
As Figure 14 shows, the order of settlements for the LIFO cost model in Microsoft Axapta,
where PO stands for purchase order and SO stands for sales order.
For example, settlements with PO3 would be made starting with the latest sales order
(SO3) and working back through SO2 and then SO1. In this way, Microsoft Axapta can
take account of negative inventory.
When users click Close or Recalculation, the following expanded dialog appears (the
dialog for recalculation has an additional section for selecting items):
At the bottom of the dialog, under the Weighted avg. group, are two fields that are only
relevant for average inventory models (the Weighted average or Weighted average date
inventory models). The Minimum settle quantity percent field and the Minimum settle
amount field minimize the number of settlements and therefore the risk of fragmented
settlements, which can result in poor program performance. Together with the fields
described in the next section, users can use the settings in these fields to make a
compromise between performance and precision.
Compromising Between Performance and Precision
It is possible to compromise between program performance and precision results, by
setting different values in the following fields:
• Maximum throughputs
• Minimum throughput adjustment
• The item-specific Minimum average quantity field, which has a fall back value in
the global inventory parameter
Generally it is not recommended to set the Minimum throughput adjustment parameter
below the value of 1. The Minimum settle amount field has a default value of 5. The lowest
value that can be selected is calculated by rounding the default currency multiplied by 10.
The value will need to be adjusted according to the local currency, average purchase
prices, and quantities. If purchase prices are below 5, a smaller amount must be used. For
The pattern continues accordingly. All settlements are represented in the database with a
settlement record. In this case, six settlement records will be created. For sales order
number 10, six settlement records will therefore be created after five months, one for each
purchase order that is included in the average. When all the purchase orders to a greater
or lesser extent contribute towards the current average, then a little bit of each purchase
order will be taken into the current sales order.
The critical challenge here lies in the fact that the first purchase will in principle continue to
contribute to the current average forever. This means that, as time goes by, more and
more purchase orders are included in a settlement calculation and this can eventually
result in a decrease in program performance.
The multi-user inventory closing system has therefore been developed with two new setup
options to limit the number of settlements. In the Minimum settle quantity percentage field,
users can specify the minimum quantity that should be taken from each purchase order
that is included in the average settlement, as a percentage of the current issue quantity.
The value of the Minimum settle quantity percentage field is used in the same way as the
Minimum average quantity parameter, except it is not corrected for all records, but is
dependent on the quantity of issues. (Users can find the Minimum average quantity
parameter by clicking Inventory management > Parameters and opening the Inventory
parameters form or they can see the value individually specified on the Item form.) If the
issue quantity is for one unit and the value in the Minimum settle quantity percentage field
is set to 10 percent, then a quantity of at least of 0.1 from each purchase order must be
included.
On the other hand, if the sales order is for 1000 items, then a minimum quantity of 100
items must, if possible, be taken from each purchase order when the average is calculated
for the current order. If the value returned by the percentage calculation is less than the
minimum average quantity, then the minimum average quantity is used.
The following form shows an example of average settlements where the Minimum settle
quantity percentage field has been set to 10 percent of the issue quantity.
As can be seen, there is a large difference between the cost values of the sold items. This
is, as mentioned earlier, why users should consider the best parameter setting for each
situation, in order to reach a sensible compromise between the ultimately correct cost
value and the desired level of precision in inventory calculations.
If zero is specified in the Minimum settle quantity percent and Minimum settle amount
fields, then the minimum average setup is ignored. This is not recommended however,
especially if the Weighted average inventory model is used.
Weighted Average Date Inventory Model
As an extension of the multi-user inventory closing that was available in Microsoft Axapta
3.0 SP2 and onwards, changes were made to the way that items are closed when users
select the Weighted average date inventory model. After Microsoft Axapta 3.0 SP2, item
transfers, purely in terms of settlements, will no longer make circularity settlements.
For example, assume the following three inventory records exist:
According to the inventory-closing model before the multi-user inventory closing, the pallet
transport records of –100 were settled according to the average, with 50 on the purchase
and 50 on the pallet transport itself. This would not be logical, which is why the
functionality was changed so that multi-user inventory closing will settle all 100 items on
the purchase order. This avoids a potential circularity issue, which could otherwise have
had a negative effect on program performance.
Because Microsoft Axapta 3.0 SP2 takes advantage of multi-user inventory closing, there
will be differences in inventory closing results, compared to previous releases and service
packs. This is because of the way that multi-user inventory closing transfers adjustments
between the item level and warehouses.
In Microsoft Axapta 3.0, SP1, inventory closing occurred, in principle, per inventory record,
while in the inventory closing in Microsoft Axapta 3.0 SP2, this occurs summarily in order
to improve program performance.
For example, consider a production order for the item F1, which consists of the raw
materials R1, R2, and R3, and imagine that it is as follows:
Item Adjustment
R1 100.75
R2 299.25
R3 –399.01
SUM 0.99
If adjustments from the raw materials should be transferred to the finished item F1, then
the multi-user inventory closing method in Microsoft Axapta 3.0, SP2 will not transfer
anything at all to the finished items level if the minimum throughput adjustment parameter
has been set to 1.00. In the inventory closing method used by Microsoft Axapta 3.0, SP1
and earlier, all raw material adjustments were transferred to finished items, as long as
each individual adjustment clearly exceeds the minimum throughput adjustment.
For more information about the Weighted average date model see the section Different
Average Cost Values Within the Same Period Using the Weighted Average Date Cost
Model in this document.
The item M1 is manufactured through the use of an operation and the two raw material
components R1 and R2. The item M1 is then used in another operation, along with raw
material component R3, resulting in the top level manufactured item called F1.
The challenge with BOM levels is that users often do not know the cost price of some of
the raw materials when they are consumed in production. It can be difficult to recalculate
cost not only for the current item, but also to the next item level, as shown in the following
example.
The value or cost price of the remaining F1 items stored in the inventory must be
reevaluated to 170, and item consumption for the sales order that was already posted
must also be increased.
Today, Microsoft Axapta handles this cross-level cost value adjustment.
The issues are similar to the BOM level example described earlier. The cost price for R1
must be adjusted through every warehouse if the cost price was not known when the first
transfer occurred.
The following example shows the transactions for a round trip transfer:
If it turns out that the real cost price for R1 is 100 instead of 10, inconsistencies with item
values would be created because the purchased item would have already been moved to
another warehouse. The value would be incorrect for warehouse B, unless the transfer
transactions are adjusted accordingly.
When the purchased item finally returns to the original warehouse A, the value must be
adjusted and transferred through all warehouses as shown in the next table:
It can be difficult to detect this round trip situation in advance. Microsoft Axapta has
therefore always used the same strategy for both item transfers and BOM levels. The cost
value must be moved around and adjusted on each reflected transaction.
This principle can help ensure that the real cost or actual value of the actual inventory is
correct. However, it can also be a difficult strategy to execute, as it requires full tracking
information on each inventory transaction. Maintaining this tracking information and
updating it further during cost value recalculations can be a resource-demanding task.
Circularity
From a technical viewpoint, one of the most challenging issues regarding item transfers is
the concept of circularity. Since the inventory on-hand is allowed to go negative, both
physically and financially, it is therefore possible to move items that do not actually exist
from one warehouse to another. If that occurs, a circular costing reference may occur. The
challenge can be explained through the following example.
The recalculation function will try to correct the cost value, as it is obvious that the value of
the transferred items on transfer order 1 is incorrect. From a technical perspective, two
equal receipts exist. The recalculation will assume that the moved quantity comes from
the purchase and from transfer order 2. A new price is calculated for the transferred items
in the following way:
Price = (1 x 100) + (9 x 10/10) = 190 /10 = 19
The transactions will be calculated as shown in the following table:
The new price for the transferred items will then be adjusted on all reflected transactions
across all warehouses, as shown in the next table:
Warehouse Warehouse
(A) (Q)
-10 Transfer 1
+10
-10 Transfer 2
+10
Figure 22: Quarantine orders
Even though the transactions have the same Lot IDs, the posting will be treated as if it had
been two separate transfers. This means that if the quarantine warehouse (Q) had
received more than 10 of the specific item with a different cost price, the ending of the
quarantine order of the 10 items can result in an issue with a different cost. This is
because all transactions will be using the selected inventory model (for example, the
Weighted average date model).
During recalculation and closing, the program makes settlements based on the principle
that the transactions are seen as different receipts and issues. There is no link between
the receipt in Transfer 1 and the issue in Transfer 2.
In the Storage dimensions setup illustrated in Figure 23, the Physical inventory field is
selected for the Warehouse and Location dimensions, but the Financial inventory field is
not selected on either of these dimensions
From a costing perspective, when posting receipts and issues between, for example,
different warehouses, the values in this case would only relate to the physical inventory
per dimension. This is because the cost between the warehouses is seen as a
summarized cost (and the Financial inventory has not been selected).
It is only when selecting the financial dimensions that the amount can be trusted.
Figure 26: On-hand with the same financial dimension display as in Fig 24
Of course, the physical inventory information can be used with the different dimension
displays, but the connection between physical and financial inventory should only be
made when using the same dimension display for physical inventory and financial
inventory.
Physical
If Include physical is cleared and the inventory is closed on 12 January, then only PO#2 is
included in the calculations. However, if Include physical is selected, then both purchase
orders are included (this applies only in version 3.0 SP2 and later).
In both scenarios the physical date is used when listing the receipts.
If, as illustrated in Figure 29, only two items exist or only two items have inventory
transactions, it is illogical to use more than two clients to close or recalculate the
inventory.
For example, if item close005–subit in the Figure 30 is a component of item Close001 and
both are adjusted, item Close001 will be added to the calculation list for the second
calculation level.
First Loop in the Calculation List
MUIC clients are not forced to wait until all clients have finished calculating with the
current item, they only wait for the additional items that are inserted in the calculation list.
The first loop is the initial calculation of the items in the calculation list on level one.
Because the assisting clients do not wait for other clients to finish calculation of the current
item in the first calculation level it means that one client can calculate one item while two
other clients calculate 10 items, depending on the number of transaction on each item.
Additional Loops in the Calculation List
After the first loop, the additional loops in the calculation list involve the calculation of
items in the calculation list on level two or above.
The assisting clients have to wait for other clients if no more items exists on the current
level. Only after one level has completed the clients begin on the next level.
If the adjustment is below the value of the Minimum throughput adjustment parameter, the
adjustment will be posted as a profit/loss to the second transaction.
In this example, if the Minimum throughput adjustment parameter was higher than two, the
adjustment would not be passed to the receipt transaction but instead posted as a
profit/loss.
The business logic behind this functionality is actually two adjustments to the second
transaction. First the adjustment passed from the original transaction, and then a
profit/loss adjustment:
Recalculation
The following example illustrates that the program manages recalculation differently from
closing. If users carry out the same adjustment described in the previous example and
then run a recalculation the result will be slightly different.
The adjustment should always be passed to the second transaction. However, the
adjustment should be disregarded in further calculations if the adjustment is below the
minimum throughput adjustment value.
After a recalculation, an item may show an inventory value even though there is zero on-
hand. This should be corrected by an inventory closing which posts the difference as a
profit/loss.
Different Average Cost Values Within the Same Period Using the
Weighted Average Date Cost Model
The Weighted average date cost model in Microsoft Axapta means that item issues are
valued at an average value, based on the items that make up the inventory value, which
consists of open item receipts falling on a date before the item issue. Using this model
means that the average cost is calculated as an average of the cost value based on
receipts within the same financial dimension. The receipts are only included as long as
they aren’t fully settled, so the average cost will fluctuate as the cost of the receipts
changes.
However, when the on-hand inventory reaches zero, the current average cost is reset
even if it is in the middle of a month.
In this example, the on-hand is zero between January 2, 2004, and January 5, 2004, so
the average is reset in the middle of January.
The following example illustrates how the average cost can vary a lot within the same
period:
In this example, the on-hand is zero on January 27,2004, so the average is reset and two
very different average costs are used: 45 and 80.This situation only applies when the
Weighted average date cost model is being used.
This shows that the inventory adjustment of 2.00 needs to be matched to the finance
posting with an adjusted settlement of the missing 0.50.
Recalculation
The method that Microsoft Axapta uses for recalculation is to use the remainder without
taking the adjustment of the 0.50 into account, therefore making an extra iteration loop
compared with the closing method.
Issue Receipt
100.00 100.00
+2.00
+0.50
+2.00
+0.50
The recalculation does not result in the program posting the remainder from the inventory
and reusing the settlements at the next recalculation. This means that a new calculation is
performed every time the recalculation is run and it gets more and more precise.
Overall, this means that the result of the recalculation can be more precise than that of the
closing. However, the result of a closing can be more precise if one or more recalculations
have been run before a closing is run.
The recalculation is not the final calculation, therefore the result can be a financial amount
but no inventory. This difference will be removed when running the final calculation in the
inventory closing.
1. Transaction adjustments
This option is used for adjusting selected receipts. For example, a purchase order
can be adjusted if the cost has changed. This option will also be used if a selected
batch has exceeded its expiry date.
These receipts will never be affected by an adjustment during recalculation and
closing, except when using standard cost on the model group.
2. On-hand adjustments
This way of adjusting is used for an adjustment of the total on-hand inventory of
selected items, for example, after the periodic counting or just before the end of a
year.
This adjustment option may result in adjustment of all open inventory receipt
transactions, which includes transfers that could be readjusted during closing or
recalculation (this should no longer be the case after the “Red” package or version
3.0 SP4).
Note that the purchase order (PO) is split and the fully settled transaction is closed on the
last closing date.
Example 2:
1. Issue 2 at a cost price of 100.
2. Receive 1 at a cost price of 80.
Closing
Adjustment of 20
SO -2@100
PO +1@80
Example 3:
1. Issue 2 at a cost price of 0.
2. Receive 1 at a cost price of 80.
3. Run inventory closing.
This example shows that the inventory value report will use the cost price of 0 from the
item master and will state a quantity of –1, starting from the receipt transaction and
continuing till after the inventory closing. The inventory value report will only be correct
after an additional receipt transaction of 1 and a new inventory closing. Then the inventory
value report will be correct for the inventory closing date.
Closing
Adjustment of 80
SO -2@0
PO +1@80
loopX = 0;
…
else
{
this.updateSettleRefItem(inventCostList.ItemId);
queryRun =
inventCostHelp.initQueryRunTrans(this.inventTable(inventCostList.ItemId));
while (queryRun.next())
{
loopX++;
mapLoopTrans.insert(loopX,queryRun.get(tableNum(InventTrans)));
mapLoopDim.insert(loopX,queryRun.get(tableNum(InventDim)));
}
loopMax = loopX;
loopX = 0;
while (loopX < loopMax)
{
loopX++;
this.updateItemDim(mapLoopTrans.lookup(loopX),mapLoopDim.lookup(loopX));
}
}
Conclusion
This document provides a detailed description of the inventory closing process in
Microsoft Axapta 3.0 and its associated service packs. It also explains the steps that
Microsoft Axapta development has taken and expects to take in the future to address the
inventory closing-related issues that have been reported. For further information, refer to
the flow chart in Figure 34 as a guide to addressing inventory-closing issues. In this flow
chart, there are links to relevant sections in this document. In order to get back to the flow
chart after following a link, press CTRL+END.
Microsoft and Axapta are either trademarks or registered trademarks of Microsoft Corporation or
Microsoft Business Solutions ApS or their affiliates in the United States and/or other countries.
Microsoft Business Solutions ApS is a subsidiary of Microsoft Corporation. The names of actual
companies and products mentioned herein may be the trademarks of their respective owners.
The information contained in this document represents the current view of Microsoft Corporation on
the issues discussed as of the date of publication. Because Microsoft must respond to changing
market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and
Microsoft cannot guarantee the accuracy of any information presented after the date of publication.
Complying with all applicable copyright laws is the responsibility of the user. Without limiting the
rights under copyright, no part of this document may be reproduced, stored in or introduced into a
retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying,
recording, or otherwise), or for any purpose, without the express written permission of Microsoft
Corporation.
Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual
property rights covering subject matter in this document. Except as expressly provided in any written
license agreement from Microsoft, the furnishing of this document does not give you any license to
these patents, trademarks, copyrights, or other intellectual property.
Help
Help
Help