How does the Circularity check strategy option in the Inventory and warehouse management parameters work?
This option can be found under Inventory management | Setup | Inventory and warehouse management parameters on the Bills of Materials option from the left-hand navigation.
The Circularity check strategy option works in conjunction with the Level of circularity option, so the first thing to look at is selection made for the Level of Circularity option. The Level of circularity option has three available policy selections: Never, BOM, and Line. The selected setting for this option determines when the system will check for circularity in BOM structures. A circular BOM exists when an item has been defined as a component of itself within a BOM structure. A BOM will be considered circular regardless of whether it is a first-level component or a lower-level component in the BOM structure that is referenced. Circular BOM structures are not supported and therefore it is critical to check to see if such situations exist to ensure further issues do not occur. An example of further issues that could occur would be that if a circular BOM were to exist, cost rollup calculations and planning calculations would report the error, and the calculations would not be able to complete. Further description of the three available policies for checking BOM circularity are as follows:
Line – The circularity check occurs when the BOM line is saved. This prevents a BOM line from being added when the component item would cause BOM circularity.
Note: The line check policy provides immediate feedback about a BOM circularity error. It is strongly recommended that you use this policy for checking BOM circularity.
Never – There is no circularity check. You can perform a manual check using the Check function in the BOM line form to identify any BOM circularity errors that might exist. If circularity does exist, the circularity error would also be reported when you perform cost rollup calculations and planning calculations.
BOM – The circularity check occurs when you do one of the following activities:
- Close the Bills of materials form.
- Use the Check function in the Bills of materials form.
- Associate a BOM with a BOM version
Caution: The controls preventing a circular BOM do not apply to a production BOM on a production order. You can manually add a component or consume a component that would ultimately create BOM circularity. When the component consumption reflects BOM circularity, the inventory closing process might not calculate a sensible cost for a manufactured item that has an inventory valuation method using actual cost. In such an occurrence, the use of a manufacturing indirect cost of the surcharge type can also cause problems in inventory closing, because the calculated cost can grow exponentially.
Now that we have discussed the Level of circularity option, we can continue with our discussion of the Circularity check strategy option. There are two available selections for this option: Optimize for low complexity and Optimize for high complexity.
The Optimize for Low complexity will request data from disk as it is needed for the circularity check. For single level/simple BOM structures performance will be better by selecting this option for the Circularity check strategy.
When Optimize for High complexity is selected as the Circularity check strategy, the BOM structure and all of its’ dependencies are cached before the circularity check is processed. When processing a BOM with many lines it may take a moment for the processing to start since it is loading the information into cache. However, the Optimize for High complexity can significantly improve overall performance of the circularity check. This is especially true if you are running a task that will be performing a circularity check on multiple BOM’s or if you are doing a consistency check on the Bills of materials.
We're always looking for feedback and would like to hear from you. Please head to the Dynamics 365 Community to start a discussion, ask questions, and tell us what you think!