Commodity Groups and Commodity Codes is a two-level hierarchy that is most often considered when developing the data for the Item Master application, the catalogue of items that are purchased or entered into an inventory storeroom. However, these codes are used across many applications in Maximo, and this document aims to reveal where they are used.

The first thing to bear in mind is that when we refer to commodity groups and commodity codes, we are really referring to codes used with materials (or tools), but the Service Group application is doing something similar but for services. Both Commodity Groups/Codes and Service Groups/Codes are mastered in the same object/table COMMODITIES with an ISSERVICE attribute to distinguish between the two, 1 for services, 0 for commodities. The same table is used to hold both the group level and code level values, there is a PARENT field which links the codes to the groups.

The second point to remember is that Commodity Groups/Codes and Service Groups/Codes are defined at the item set level. They are shared across the organizations that use the same item set, but if you have multiple item sets then you will need to enter multiple sets of records.

In this page we will discuss Commodity Groups/Codes. You will find a separate page for Service Groups and their Service Codes.

Commodity Groups/Codes

Commodity Groups and their Commodity Codes will be one of the first and most important parts of Maximo to define. They define a type or category of item that is used in searching, financial analysis and reporting across the Inventory, Contracts and Purchasing modules. They exist in 20+ Maximo tables, and I am excluding Service Groups in this, as they are also used in a further 10+ tables.

They are used to make it easier for users to find items they want from a storeroom, or the items they wish to buy. They streamline the procurement process to make it easier for requests to find the right buyer, who often is responsible for one or more commodity groups, and for the buyers to find the right vendor that supplies items or services for that commodity group. They are the starting point for consolidating to fewer vendors and moving towards purchase contracts or price agreements, ultimately to reducing the number of stocked items or working with a vendor who provides a range of items in your storeroom, which you pay for when you consume them, consignment items. 

Analysis of spend is often performed using commodity groups as one of the dimensions of the analysis, you might find that a commodity group is a segment of your general ledger structure or an element of the way you budget and manage commitments and actuals against that budget. Commodity groups and codes can also play an important role in determining tax exempt items, or the right tax code to apply when importing items. 

You may find that commodity groups and codes will be mastered by your finance or procurement teams. If not, do not start from scratch, consider using the UNSPSC – United Nations Standard Products and Services Code, which you can find here https://www.unspsc.org

The Add/Modify Commodity Groups action will be found in the List tab of Item Master, Service Items, Tools, People, Companies and Purchase Order applications. The action will also be found in the other tabs of these applications. 

Commodity Groups and their Commodity Codes exist in the same table (COMMODITIES) and together provide for a two-level hierarchy. However, commodities used in inventory, contracts and purchasing may have a flat structure, commodity groups with no commodity codes. The reason for this is that they are often aligned to the commodities found in an external finance or purchasing system. 

The Service flag indicates that the commodity group or commodity code is only used with service items.

In the Item Master and Tools application the Commodity Group is found in the List tab, a primary field used for searching. You will also find it in the List tab of the Inventory application. Commodity groups and codes are used with both stocked and non-stocked items.

As you are inserting a new Item Master record the Commodity Group and Commodity Code fields are near the top of the screen. Once referenced on an item you will not be able to delete the commodity or commodity group using the Add/Modify Commodity Codes dialog as you will receive the error message “BMXAA0262E – This commodity is currently referenced on an item or vendor record. Cannot delete.”. There is a similar check if the commodity has been associated with a person “BMXAA7977E – The commodity cannot be deleted. It is currently referenced on a person record.”

On Item Master, Service Items and Tools applications an item can only belong to one commodity group and one commodity code. In the Item and Tools applications you can only use the commodity groups and codes which are not marked to be used with services. In the Service Items application, it is only the commodity groups marked as Is Service that can be selected.

There are persistent fields for commodity group and commodity code on the table used for recording the condition of condition enabled items (ITEMCONDITION) but these fields are hidden from the user interface.

Commodity Group and Commodity Code fields do not exist as a persistent attribute in the INVENTORY object. In the Inventory application the Commodity Group is on the List tab, but when a query is made on it, it is actually searching on the item’s commodity group, you will not then be able to sort by this field. 

The Commodity Group and Commodity Code fields exist on the issues and returns object (MATUSETRANS) and the object used for transfers (MATRECTRANS). They exist on the table used for reordering items from storerooms (REORDERPAD). In all three cases they are hidden fields but can be easily added to the user interface with configuration.

In the Stocked Tools application there are persistent fields for commodity group and commodity code but this table, TOOLINV, is a view over ITEM and INVENTORY, so it is physically using the ITEM table for data storage.

In the Companies application you can associate one or more commodity groups and commodities with a vendor, or other type of company. This is used to identify the type of items or services that vendors supply. The table where this data is stored is COMPCOMMODITY.

In the People application there is also actions for Add/Modify Commodity Codes and Associate Commodities, but the latter is different from that seen in Companies. Here you have the option of identifying the person as a buyer for a commodity group in a particular storeroom. A buyer is typically responsible for one or more commodities and this allows performance to be analysed in the purchasing department. The reorder process does not add the buyer to the PO record in the tests I have performed.

There is an Associate Commodities action in the Purchase Contracts application, but no Add/Modify Commodity Codes action. This is the same dialog as found in the Companies application but operates against a different table, CONTCOMMODITY. It is the commodity groups and commodities that this purchase contract covers. Services can also be procured as part of a purchase contract, so you can select commodity groups which have been marked as Is Service. Note. The Associate Commodities allows you to select commodity groups which are marked as Is Service and which in the Service Groups application are of the type = PROVIDE. I would stick to the ones which are marked as PROCURE or BOTH, see Service Groups article.

The Commodity Group and Commodity fields also exist on the contract line (CONTRACTLINE) for a Purchase Contract, and Lease/Rental Contract (LEASEVIEWLINE). It is hidden on a Warranty Contract although it exists in the contract line table (WARRANTYVIEWLINE). On the contract lines you can only select commodity groups and commodity codes that are to be procured, not ones that you provide to other parties. This will make more sense if you read the article on Service Groups. 

In the Purchasing module the commodity group and commodity code will be copied from the same fields on the item. On the Material Requisition they are hidden, but you will see them on the lines of a Purchase Requisition (shown), Request for Quotation and Purchase Order. They are displayed on the Receiving application for a Material Receipt, but are hidden for a Service Receipt, but they exists in the SERVRECTRANS table, which is where service receipts are stored. They are displayed also on the Invoices application on the invoice line.

This allows analysis to be performed on purchasing spend across all purchasing documents.

In the Chart of Accounts application and the Resource Codes action you can align a component of the General Ledger (GL) structure with a commodity group, but not a commodity code. This works on the debit side of a financial process. For example, in the Work Order Tracking application if a user had issued an item that had a commodity group of PUMP to a work order then the actual material financial record (MATUSETRANS) would have a GL debit account whose third component was 200. If the work order’s GL account was 6000-200-000, the actual material line for this item would result in a GL debit account of 6000-200-200. The Inventory Resource Code is merged with the work order’s GL account.

On the Item Master application there is a Commodity Analysis Report which shows the spend by commodity group over a period that you specify. The first page is graphical.

You then receive a breakdown for each commodity group showing the POs and Items containing the commodity group. Notice the commodity code is a column in this report, it summarises at the commodity group level and not the commodity code level.