The use case for a condition enabled item is to be able to reference one item with multiple condition rates, rather than having multiple items to manage where the description and cost distinguish one item from another. For example, a new pump costs $250, the same pump but refurbished might be worth $200 or 80% of the value of a new pump. A repaired pump might be worth $150 or 60% of the value of a new pump. There might also be a scrappage value of $10 or 4% of the value of a new pump. A condition enabled item allows one item to be used with multiple condition rates.
In the Inventory module there is a Condition Codes application which allows you to define a set of condition codes that are used across all condition enabled items. This is defined at the Item Set level. The Condition Rate that is added here is a default value that you can change on the item. The only thing which you need to focus on here is a set of codes and descriptions which are generic enough to allow users to find the right condition code for all types of condition enabled items. The minimum set of condition codes that will achieve this is preferable.
NEW existed at 100%. I have added REFURB (80%), REPAIR (60%) and SCRAP (5%). Notice our example was for scrap to be at 4%, we will still be able to achieve this for our new item.
The data is stored in the ITEMCONDITION object/table but with a null ITEMNUM.
There is a Condition Enabled check box on the Item Master application, right-hand column. Condition enabled items are not available for Service items and Tool Items.
PUMP150 is a new item. Condition Enabled items cannot be a Kit or have a lot type LOT. When you check “Condition Enabled?” the “Kit?” check box is made read-only, and you can see that the Lot Type is read-only. If you had set the Lot Type to LOT first, then the Condition Enabled check box would be read-only.
You cannot save the item until you have entered a Condition Code in the table window at the bottom of the Item tab, you will receive the error message “BMXAA2101E – The item is condition enabled. Please enter condition codes for the item.” Equally, you will not be able to use the New Row button on the Condition Codes table window if you have not set the item to be condition enabled “BMXAA2086E – Cannot add an Item Condition record, as the item is not condition enabled.”
You must have at least one condition code and that needs to be the one at 100% condition rate, otherwise you will receive error “BMXAA2104E – Please enter a 100% condition rate for the item.” If you were wondering, you cannot have two condition codes with a rate of 100% – “BMXAA2094E – More than one condition code with a 100% rate were specified for this item. There must be only one condition code with a 100% rate.” It is acceptable to have two condition codes for the same item which have the same condition rate, just not 100%.
The condition rate is copied from the Condition Codes application when you select the condition code, but you can modify the rate on the item. I did this for the SCRAP rate changing it from the default of 5% to 4%. The condition codes for an item are also stored in the object/table ITEMCONDITION but with an ITEMNUM value.
When you use the action “Add Items to Storeroom” from the Item Master application, you are adding the item with a Condition Code of 100% to the storeroom, you cannot change this. I have used a STANDARD cost rate and set the unit cost at $250, with a current balance of 5 in bin AB-6-New. This action can only be used for adding the 100% condition rate item, you use the Inventory application for entering the balance at other condition rates.
Item PUMP150 has now been added to the CENTRAL storeroom in BEDFORD site and I have now set item PUMP150 to ACTIVE state and rolled this down to organizations and inventory.
Incidentally, you cannot change a condition enabled item to be not condition-enabled when there are inventory records associated with it, you receive the error message “BMXAA2106E – Cannot convert item to standard, as item is associated with inventory records.”. The error will still be produced if there are no balances or if the inventory item is at OBSOLETE status. So, adding the item to a storeroom, will mean that the item will always be condition enabled. If you haven’t got to that step yet, then you get a warning when you change to being not condition enabled “BMXAA2040W – This action will remove all condition codes assigned to this item.”
In Item Master you can make an item into a condition enabled item when it already has storeroom balances. This effectively adds the condition code with a 100% condition rate to the records in the Inventory Costs and Inventory Balances table windows in the Inventory application, but as we saw it will be irreversible.
In the Inventory application, item PUMP150 exists in the CENTRAL storeroom at ACTIVE state with a Current Balance of 5. On the right-hand column you can see that it is marked as “Condition Enabled?”.
Further down the Inventory application main tab we can see that the Inventory Costs table window shows the Standard Cost of $250 at NEW condition code. In the Inventory Balances table window, there is the balance of 5 in bin AB-6-New, also with condition code of NEW.
You need to enter the Inventory Cost records for the other condition codes that you want to use before setting balances for them, otherwise you will receive error message “BMXAA1814E – Cannot add balances for this condition code. Please specify an inventory cost first.” When creating additional Inventory Cost records, you cannot select a condition code that you had not set-up on the Item Master application, and you cannot create a second record where the condition code has already been used for the item.
As you create new Inventory Cost records and select the condition code the Standard and Average Cost will be calculated based on the record with a condition rate of 100%. We could have changed the Standard Cost, but the condition rate would not have been recalculated based on what we entered. In the screenshot we just selected the condition codes and didn’t modify the standard cost.
With the Inventory Cost records created we can now reference the condition code on an Inventory Balance record for the PUMP150 item. I have entered a balance of 1 each for a condition code of REFURB and REPAIR. The current balance has been incremented from 5 to 7. The bins I used have a suffix, just for clarity. When adding a balance, you will need to enter a condition code to avoid the error message “BMXAA1895E – Item PUMP150 is condition enabled. Please enter a condition code.”
You cannot delete an Inventory Cost record if a balance record exists that references it – “BMXAA1900E – Cannot delete an inventory cost with associated balances.”. You may have multiple inventory balance records with the same condition code, the balances may exist in different bins.
All of the Inventory Adjustment dialogs show a condition code field. The Standard Cost and Average Cost adjustment actions also show the Condition Rate value alongside the Condition Code.
Towards the bottom of this article I review the handling of the rotating assets and the ASSET Issue Cost Type, and also condition codes with FIFO and LIFO Issue Cost Types.
In the Inventory application when you use the action “Issue Current Item” the condition code defaults to the one with 100% condition rate, even if there is no balance for this condition code. The Select Value on either the Bin field or the Condition Code field is selecting from Inventory Balances, and it will change both fields when a record has been selected. The unit cost changes according to the selected condition code.
Inventory Usage – Issues and Returns
On the Inventory Usage application, you use the Select Reserved Items button and select a reservation. Notice that for PUMP150 the reservation was for a REFURB condition code.
Once selected you can change the Condition Code from that identified on the reservation, in this case from REFURB to REPAIR and the unit cost will change accordingly. You cannot leave the condition code field empty as you will receive the error “BMXAA1895E – Item PUMP150 is condition enabled. Please enter a condition code.”.
I have completed the issue but at the original reservation with a condition code of REFURB.
On a different Inventory Usage record, I have used the action “Select Items for Return” and returned the item just issued. You can change the condition code; I’ve selected SCRAP and the unit cost has changed accordingly. There is a negative line cost of $10 on the GL account which was original charged during the issue.
There is now a current balance of 6 of which 1 is at the condition code of SCRAP. You can return at a different condition code to the one used during an issue. There isn’t anything stopping you from selecting a condition code of NEW if it was issued at anything other than NEW.
Inventory Usage – Transfers
When transferring a condition enabled item to a different storeroom, on Inventory Usage application you can choose the Condition Code of the item to transfer, the from bin and the unit cost changes according to the condition code selected. In this example, I will go through staging and shipping steps, and I have indicated Inspection Required. The Condition Code was defaulted to the NEW condition code, the one with 100% condition rate. You cannot leave the condition code field empty as on save you will receive the error “BMXAA1895E – Item PUMP150 is condition enabled. Please enter a condition code.” Something to look out for is that the condition code lookup will show staged bins.
Further down the Inventory Usage page in the Transfer Details section you can see the To Condition Code. This is a read-only field and reflects the condition code that was chosen.
On changing status to Staged I have chosen to be specific about the Stage Bin to use – AJE01 in this case.
On navigating to the Inventory application, you can see that there are now 5 inventory balance records with the AJE01 bin marked as the Staging Bin. These are temporary bins, the quantity is already picked, you should not be able to select them on a new Inventory Usage record, you can in Maximo 22.214.171.124 where I performed the test. If you really needed the quantity, you should cancel the previous inventory usage record.
I have now changed status to SHIPPED and we will pick this example up in the Shipment Receiving application.
Before we leave Inventory Usage. There are several other areas that could be tested, particularly with transfers and I really don’t want to make this document twice the size and lose the audience in the process. There are transfers within site, across site, across organization, with an internal PO, without internal PO, using staging or shipping or going straight to complete, reacting to a reservation, or not, with a rotating item or without, etc. One thought, if an internal PO was used to request a transfer then the reservation would hold the condition code to use and this will be the one selected onto the inventory usage record, that is what I would expect.
In Shipment Receiving application when you use the Select Shipped Items button and transfer the row to the Shipment Receipts table window, the “To Condition Code” field is initially read-only, but on save it becomes enterable. You cannot remove the condition code you will receive error “BMXAA1895E – Item PUMP150 is condition enabled. Please enter a condition code.”.
You need to consider why you would want to change the To Condition Code in a transfer, but if you do, then you need to do this before you complete the Change Inspection Status dialog, because after that point the status will be set to complete (COMP) and both the SHIPRECEIPT and the TRANSFER records will be read-only. The Shipment Receipt records are held in the object/table MATRECTRANS.
Inventory – Transfers
I was wondering what happens if I transfer a condition enabled item to a new storeroom, where Maximo would need to create the item, and the condition code was not the one with the condition rate of 100%.
In the Storerooms application WASTE is a new storeroom.
In the Inventory application I am using the Transfer Current Item action. The From Condition Code and To Condition Code default to NEW but I changed the From Condition Code to SCRAP and the To Condition Code was changed by Maximo. The unit cost is the standard cost for the SCRAP condition code.
It is as I thought. In the destination storeroom both the inventory cost record for the condition code that was transferred as well as the condition code with the 100% condition rate were created, with the cost information being transferred from the originating storeroom.
Work Order Tracking
A condition code can be selected for a condition enabled item on both the Work Plan Materials as well as on the Actual – Materials tab, when the item is being reserved from a storeroom or issued from a storeroom. The condition code on the planned materials can be copied to the actuals, but it can be changed to any valid condition code for the item.
However, this is only if you are ordering from a storeroom. With a planned material line of type Direct Issue, then the Condition Code field is read-only. But you can add a note to the item description to alert the buyer.
Let’s approve the work order.
In the Inventory application we have used the action “Reorder Direct Issue Itms/Svcs” to complete the reorder. When we use the Run Reorder button this created PR 1086 and PO 1224.
Here is our work around note that we created on the work order planned materials that has been copied through to the PO line, asking the buyer to use condition code REPAIR. You can change the condition code on the PR and PO lines.
There are condition codes on the lines of a material requisition (MR), purchase requisition (PR), request for quotation (RFQ), purchase order (PO) and invoice.
On the Create Requisition application after you have selected a condition enabled item you will need to enter a condition code, otherwise you will receive the error message “BMXAA1895E – Item PUMP150 is condition enabled. Please enter a condition code.” The Select Value shows the available condition codes for the item.
What I did notice in the tests I performed on Maximo 126.96.36.199 was that when selecting a condition code other than the one with a condition rate of 100% the unit cost did not change. It did, if you reselected the Store Location.
On the Purchase Requisition application, you do not need to enter a condition code, you will not receive an error message as you do for a material requisition. If you select a condition code and then selected a storeroom in the Charge To section, then the unit cost will be derived. If you enter a storeroom in the Charge To section but have not selected a condition code, it will assume a unit cost the same as the condition code with a condition rate of 100%. If you then select a condition code the unit cost is changed accordingly.
An “Issue on Receipt” charge to a work order will not derive a unit cost unless you have purchased the item previously, then it uses the last price from the Vendors table (INVVENDOR). There is a condition code on this table, but it is not displayed in the Item Master application. It is however used, at least on the Purchase Order application where I performed the test. If the last time the item was purchased a REFURB condition code was used, then it will default this condition code and use the last price from this record. If you remove the condition code it will use the last price on an INVVENDOR record where the condition code is empty. If no record is found in INVVENDOR with a match by item, condition code and vendor, then the unit cost will be 0:00.
In the Receiving application on the Material Receipts tab there is a condition code field which is defaulted from the selected purchase order line, but you can select a different condition code for the item. In this case I ordered as REFURB condition code and received a REPAIR condition code. If you leave the condition code field empty for a condition enabled item, then you will receive error “BMXAA1895E – Item PUMP150 is condition enabled. Please enter a condition code.”.
A Condition Enabled Item can also be marked as rotating.
We now have a new item PUMP250 which is marked as both condition enabled and rotating. I have applied the same four condition codes, NEW, REFURB, REPAIR and SCRAP with a condition rate of 4%. The item has been added to the CENTRAL storeroom and the default Issue Cost Type is set to ASSET. This means for PUMP250 in CENTRAL storeroom there is no Inventory Cost (INVCOST) records, the costing is held on the asset itself, in the ASSET object/table.
I’ll now change status to ACTIVE and rolldown the status to organizations and inventory. There are no balances yet.
In the Assets application I’ve created a new asset, 2207 and entered the rotating item PUMP250, the Condition Code field is now enterable and mandatory, the Select Value shows the condition codes I set-up for the item. I’ll pick NEW.
At the bottom of the screen I’ve indicated the Purchase Price and Replacement Cost of $300.00 and we expect to spend $100 on maintenance of the pump per year, Budgeted Cost.
In the Assets application using the action Move/Modify Assets the Condition Code fields will be found in the details area. It can be modified here. I will move into the CENTRAL storeroom and change the condition code to REFURB. The Location and Condition Code on the main tab have now been changed.
In the Inventory application for item PUMP250 and CENTRAL storeroom we now have a current balance of 1.00 with a condition code of REFURB. Maximo has also created an inventory balance record with a condition code that represents the 100% condition rate, NEW, but with balance of 0.00. Notice there is no Inventory Cost table window, it is replaced with the Asset Cost table window which is looking at the ASSET record. The Inventory Cost is 0.00. It might be more appropriate to use a purchase order, in which case the asset’s Inventory Cost will be the purchased price.
I am now going to issue and return the item.
In the Inventory application when you use the Issue Current Item action the Condition Code field initially defaults to the condition code with a condition rate of 100%, NEW. When you select the Rotating Asset the Condition Code field changes to the condition code on the asset – REFURB in this case. The Condition Code is enterable, and you can pick any of the values in the Inventory Balances table, NEW or REFURB. If you chose NEW, in this case you would end with an error “BMXAA3496E – Trouble processing item PUMP250. Cause: The balance in the bin will become negative as a result of this transaction..” because the balance is 0.00.
During an issue then, you can change the condition code, if there is a balance of the item at that condition code. I will double check that after I do a return of the asset. Asset 2207 now exists in the OFF301 location.
Postscript – While you can get into the Condition Code field to change to REFURB or NEW, Maximo recognises that the selected rotating asset is not at that condition code and will select a different rotating asset. Asset 2207 was at REPAIR. If I change to REFURB, Maximo selected asset 2210. If you go back and reselect 2207 in the Rotating Asset field, the Condition Code field is changed back to REPAIR – the two fields are tied together. During an inventory issue it looks as if the condition code comes from the asset and cannot be changed.
The same action can be used for a return by changing the Transaction Type to RETURN. You will need to select the location where the asset resides in order to select it in the Rotating Asset field. This might be achieved by entering the work order in which the item/asset was issued. The Condition Code field is defaulted to the condition code on the rotating asset, REFURB, I have changed it to REPAIR – on a Return all of the condition codes for the item are available to be used, not just those where there is an Inventory Balances record.
But I forgot, you cannot return rotating items through the Inventory application you need to use the Inventory Usage application, I received error “BMXAA6185I – Please use the Select Items for Return action to return rotating items.” sorry about that. At least I think it illustrated that the condition code of an item can be changed during the return process as well as during the issue.
In Inventory Usage the Usage Type is ISSUE and I have used the button “Select Items for Return” which has created a Return Usage Type on the usage line. The Condition Code defaulted to REFURB from the asset record and I have changed it to REPAIR. The reason why in most cases the Inventory Usage application and Select Items for Return button should be used is because it ties the return to the original issue.
Back in the Inventory application we have asset 2207 now with a REPAIR condition code and a new inventory balance record for this condition code.
Maximo also records an asset move history which you can see in the Assets application and action “View Asset Move History”. You need to look at the last two MOVED records to see that the asset was changed from a condition code of REFURB to REPAIR.
The Asset Move is registered in the ASSETTRANS object/table. There are two fields, FROMCONDITIONCODE and CONDITIONCODE. The FROMCONDITIONCODE is not displayed but it is written to the record, I checked.
Inventory – Reorder
In the 35+ tables and views with a persistent CONDITIONCODE field I spotted REORDERPAD, the table used during the reorder process. Hmm, how does it know what condition code to reorder? The reorder check box is on the INVENTORY table. There are only non-persistent condition code and condition rate attribute on this table.
In Work Order Tracking I’ve created a new work order, 1391 with three planned material records, all for item PUMP250, quantity 2 each:
- REPAIR at $150.00
- REFURB at $220.00
- NEW at $300.00
This will create sufficient reservations for a reorder. The work order has now been approved.
In the Inventory application and action Add/Modify Reservations we can filter for the item (or work order) to find the reserved quantity of 6. The INVRESERVE table also had a Condition Code field.
On the Reorder Details tab, the “Reorder?” attribute is checked with a reorder point of 0.00, all defaulted when the item was added to the storeroom. I’ve added two Vendor records for vendor ATI, the top one is condition code NEW and last price $280, the bottom one is condition code REPAIR and last price $140. The condition code can be found in the Details area for each record.
All set to try the reorder. How will it treat the REPAIR reservation will it use the REPAIR last price? How will it treat the REFURB reservation when there is no record of previously buying an item at that condition code. I am presuming it will handle a condition code of NEW regardless, or will there be no condition code on the reorder?
The Reorder Items action and Preview button shows that it aims to consolidate all the reservations to one based on the Condition Code of NEW.
PR 1085 and then PO 1223 were created. There is just the one line for quantity 6 of item PUMP250 and condition code NEW. Maximo is taking into account the entire balance across all condition codes, but it is assuming that purchasing will be buying items at the 100% condition rate, hence only one line for the NEW condition code. The purchase order and in particular the condition code can be amended, and additional lines created for other condition codes. However, if it is genuine to purchase from an external vendor items that are other than new then you need to find a way of alerting purchasing to modify the Purchase Order or raise a Purchase Requisition yourself and reference the work order on each line.
This did get me thinking though, if Reorder doesn’t handle condition codes, how about direct issue reservations made on a work order. I was right, in Maximo 188.8.131.52 they are not handled either, and so I’ve gone back to the page on Work Order Tracking and revised that section.
I’ve changed the purchase order 1223 so that instead of one line with quantity 6 I now have three lines of the same item but different condition codes, 2 each, with the unit costs that we had set on the work order a few pages ago.
The vendor is ATI and I have now approved the PO.
In the Receiving application we have used the Select Ordered Items button and selected all 3 lines on to the Material Receipts table window. The To Condition Code is set as per the Purchase Order, it can be changed, but it becomes read-only when you save.
I’ve subsequently used the Receive Rotating Items button and the Autonumber All button to create 6 new assets – at their appropriate condition codes.
Back on the Inventory application we now have 7 assets with their Condition Codes. The Inventory Cost is set to the purchase price when it is received directly into a storeroom. The Inventory Balances table window shows the three balances with their condition codes.
Incidentally, in Item Master you cannot change a rotating item into a condition enabled rotating item if there are assets, you will receive error message “BMXAA7916E – Cannot convert item to condition-enabled because the item is rotating and is associated with asset records.” This is a great pity, as the obvious step would be to create all assets at the 100% condition rate, thereafter you could manage at other condition codes, a probable oversight originally.
FIFO and LIFO Issue Cost Types
When the Issue Cost Type of an item is LIFO (Last In First Out) or FIFO (First In First Out), there is no Inventory Cost table, instead there is an “Inventory LIFO/FIFO Costs” table window based on the object/table INVLIFOFIFOCOST. This table records the cost of each new balance addition including its condition code at a particular Cost Date which it uses to determine which cost to apply when issuing or transferring an item.
The screenshot is from the Inventory Adjustment – Current Balance. You can adjust the balance of each condition code where there is an inventory balance record. If the Issue Cost Type is LIFO or FIFO the Specify Inventory Costs dialog opens for you to specify the unit cost and cost date for the adjusted quantities. If you leave the unit cost empty you will receive the error “BMXAA4195E – A value is required for the Unit Cost field on the LIFOFIFOCOST object.” The unit cost you enter is not calculated based on the condition rate.
Notice the Unit Cost of $6.50 is applied to the REFURB condition code.
If you adjust the current balance again, this time for the NEW condition code the default unit cost was the last one used. It is probably ignoring the condition code when looking up the last cost.
When I used the OK button I received the following messages:
- BMXAA1762E – Current balance has been adjusted.
- BMXAA1801I – One or more balance records contained the same value as the existing current balance. The current balance will not be adjusted for these records.
The second message was because the Current Balance Adjustment dialog has two records, NEW and REFURB, but I only adjusted the NEW balance, so the second message is informational, one of the current balance records I did not change, in this case the REFURB one.
After closing the dialog, we have the two inventory balance records, one for NEW and one for REFURB condition code. The Inventory LIFO/FIFO Costs table window has multiple NEW and REFURB condition codes, with their unit costs and cost dates, quite different from the handling of STANDARD or AVERAGE issue cost types, where there is only one condition code for each item.
20+ pages ago when I started this article, I thought condition enabled items, it’s just a flag on Item Master and a few condition codes, it’s much more than that, and the CONDITIONCODE field has been written into 35+ tables or views. So, it’s a subject that warrants a summary:
- What is it? The ability to record the same item, but at multiple conditions where each condition can have a different inventory value, for example NEW, REFURBished, REPAIRed.
- You use the Condition Codes application to define the codes and the default percentage rates
- On Item Master you can make an item condition enabled and enter the set of applicable condition codes.
- Each condition code for an item has a condition rate, there has to be one and only one condition code at 100% rate.
- The unit rates of items at other condition codes are derived from the unit rate of the condition code with 100% condition rate.
- A condition enabled item cannot be a kit item or an item marked as LOT.
- The “Add Items to Storeroom” action in Item Master only adds the item with the condition code with 100% condition rate. The other condition codes are entered in the Inventory application as required.
- Once a condition enabled item exists in a storeroom the item can no longer be changed to being not condition enabled.
- You can change an item to being condition enabled if it exists in a storeroom with balances, the condition code associated with the 100% condition rate is used.
- Inventory balances are held for a condition code and bin. The condition code will be required for a condition enabled item.
- The Inventory Cost records need to be created for each required condition code before creating the balance records for the same condition code.
- When you issue an item, you choose the item and condition to issue.
- When you return an item, you can return the item at a different condition to the one you issued.
- You can transfer an item with a condition code to a storeroom where the item does not exist. Maximo will create the item at the destination storeroom with the condition code and also a balance record with condition code with 100% condition rate.
- Items can be ordered with a condition code from MR to PR to PO and to Receiving. At PR, PO and Receiving it is possible to change the condition code from that which was ordered.
- On Work Order Tracking you can order from a storeroom at a particular condition code, but you cannot do the same for a direct issue, the condition code will be left blank. A workaround is to add a note in the long description of the work plan material to let the buyer know the condition code that you want to buy.
- The Inventory Reorder routine takes into account the reservations and balances of all condition codes for an item in order to determine the quantity to buy, but it assumes that you are only ordering the condition code with the condition rate of 100%.
- Condition enabled items can operate with a rotating item and a set of rotating assets.
- You cannot make a rotating item into a condition enabled item, if the rotating item has asset records.
- For a rotating asset the condition code is on the asset and is the default condition code when you move the asset, but you can change the condition code as part of an asset move. You can then change the condition code of an asset.
- When the Issue Cost Type is LIFO or FIFO then multiple records can exist for the same item at the same condition code, and the unit cost is not being calculated from the condition rate.