Maximo Open Forum

 View Only
  • 1.  Returning item to a storeroom for the first time

    Posted 3 days ago

    One department manages inventory in 5 different storerooms. When they try to return an item to a new storeroom, they get an error message stating that the item/storeroom is invalid. This happens because the "Add Item to Storeroom" was never performed for that item in that storeroom. 

    Can we brainstorm some ideas on how best to handle this?

    I know that with DataSplice, we have a custom function that creates the item in that storeroom with a 0 balance before returning the specified quantity to that storeroom. I was thinking of an automation script to do something similar in 7.6.1.2. Even if I create a new row for that item/sr combo, I wasn't sure whether the current screen would recognize that the item/sr combo was present in the database. I've also thought about adding every item in that department to all the storerooms, but that would create a lot of database records.

    What's the best way to handle this?


    #Inventory

    ------------------------------
    sun kim
    ------------------------------


  • 2.  RE: Returning item to a storeroom for the first time

    Posted 3 days ago

    I don't like trying to make Maximo support flows like this. If someone is returning something to a storeroom that has never existed in the storeroom, you don't know where it should be stored in the storeroom, what the cost method should be, what the value of the inventory on hand is (Maximo uses the storeroom cost to determine a return cost by default and your cost for the storeroom would be 0), etc. And this means that your users are performing returns on something that may not have an underlying transaction in Maximo. While Maximo allows this today (you can perform a return on a work order even if the item has never been issued to the work order), this has always seemed extremely wrong to me. This can lead to users "creating" inventory that doesn't exist or changing the value of inventory (positively or negatively) by processing a return at a different cost than the issue transaction. This is something I hope IBM changes in the future to require an association of the return to an issue transaction. In inventory usage you can link a return to a specific issue transaction and that helps ensure cost information and everything else is consistent. 

    I realize some customers avoid cost information from an inventory perspective, but I think that drastically restricts important decisions on assets like repair vs replace. Understanding true cost of maintaining the equipment is critical. 

    Even on a smaller scale from a problem perspective, understanding what to keep on hand per storeroom is more complicated when parts are returned to different storerooms. It looks like the original storeroom consumed 1 but it was never used. This can lead to the part being reordered for the original storeroom, increasing the amount of stock kept on hand even though that additional stock may not be necessary.


    Assuming you go the path of implementing the customization, creating and saving the inventory record (opening an isolated set using MXServer and calling save) I think would be possible. You'd likely need a validate event on the item and storeroom fields (since someone could set one before the other and you'd need both to create it). Worst case scenario if Maximo throws an error before you can add the inventory record, you could add a non-persistent attribute to represent the itemnum and then use that to create the inventory record and copy it over to the out of the box itemnum attribute. 

    But I'd probably go through and add the item to every storeroom rather than worry about all the distinct flows a return could be processed. 



    ------------------------------
    Steven Shull
    Naviam
    ------------------------------



  • 3.  RE: Returning item to a storeroom for the first time

    Posted 3 days ago

    > But I'd probably go through and add the item to every storeroom
    > rather than worry about all the distinct flows a return could be processed. 

    I had Gemini help me create this automation script. I wrote an escalation that runs every hour to select the first 10 rows that fit the item criteria. It calls an action that calls the automation script. It will take a few days, but it will insert item/sr rows in small batches. I was hoping there was a class in Maximo something like AddItemToSR that would do this for me, but I wasn't sure.

    # JYTHON SCRIPT - ESCALATION ACTION
    # Object Launch Point: None (This is an ACTION Launch Point)
    # Launch Point Name: ACTION_ADD_STORE (or similar)
    
    from psdi.mbo import MboConstants
    
    storeroom_list = ["SR1", "SR2", "SR3"]
    
    # The escalation provides the 'mbo' variable, which is the ITEM record.
    if mbo and mbo.getString("DEPT") == '1234':
        
        # 1. Get the Issue Unit from the main item record.
        issueUnit = mbo.getString("ISSUEUNIT")
        
        # 2. If it's blank or null, set a default fallback value.
        if not issueUnit:
            issueUnit = "EACH"
    
        # Flag to track if we actually did anything
        records_created = False
    
        for storeroom in storeroom_list:
            # Check if it already exists in this storeroom
            invSet = mbo.getMboSet("$checkinv_" + storeroom, "INVENTORY",
                                  "itemnum = :itemnum and location = '" + storeroom + "'")
            
            if invSet.isEmpty():
                # It doesn't exist, so add it.
                # addToStore creates the record and returns the new MBO
                newInventoryRecord = mbo.addToStore(storeroom)
                
                if newInventoryRecord:
                    newInventoryRecord.setValue("ISSUEUNIT", issueUnit, MboConstants.NOVALIDATION)
                    # !! CRITICAL: Mark that we made a change so we can save later
                    records_created = True
            
            # Good practice to close sets in loops
            invSet.close()


    ------------------------------
    sun kim
    ------------------------------



  • 4.  RE: Returning item to a storeroom for the first time

    Posted 2 days ago

    Hi Sun Kim,

    This is interesting and I'm coming from a control process.  You mentioned that the item was being returned to a storeroom from which it was never issued from, and in fact that it never existed within.  This is fraught with issues.  Steven has outline a lot of the issues including that there is a process where you can return an item without there ever being an issue.

    Please consider the need to add the item to every store just to avoid an error that is caused due to bad process.  Have a look at that process and find out why they want to do it, and "just because" is not sufficient".  Consider looking at the transfer process instead, because that is what is happening.



    ------------------------------
    Craig Kokay
    Principal Consultant
    COSOL

    email: craig.kokay@cosol.global
    #IBMChampion
    ------------------------------



  • 5.  RE: Returning item to a storeroom for the first time

    Posted 2 days ago

    For this dept, there is no cost tracking. They are tracking museum exhibit furniture. We decided to use the inventory module for this instead of assets. And after many attempts to explain the concept of a rotating asset/item, we abandoned the idea due to training confusion. Technically, the rotating asset/item works in Maximo, but the flow and design within Maximo are just awful. It's complicated enough to explain the concept of issue/returns and transfers to people who have never managed inventory.

    I don't see a process issue with returning an item to a new storeroom. If it is returned there, the current balance increases by 1. As long as the moves are recorded and the items can be found later, Maximo is doing its job.



    ------------------------------
    sun kim
    ------------------------------



  • 6.  RE: Returning item to a storeroom for the first time

    Posted yesterday

    Good morning, Sun Kim

    Ahh, when you mentioned this is for the museum, that rang bells.  There is only one process that I have found that can add an item to a storeroom for which it does not already exist.

    Using the Issues and Transfer or Inventory Usage application, create a transfer doc.

    Now, this, of course, does not go with the premise that the item must have been issued (from a work order?).  It would seem that your solution makes the most sense for your process AND that the rule is that the item must have been issued.

    Q: To where/who is the item issued?

    Good luck.



    ------------------------------
    Craig Kokay
    Principal Consultant
    COSOL

    email: craig.kokay@cosol.global
    #IBMChampion
    ------------------------------



  • 7.  RE: Returning item to a storeroom for the first time

    Posted 6 hours ago

    Hi Craig. We ideally want to issue and return work orders so the work order location can be reported. If the work order is closed, then the inventory feature is used to return the item. The furniture is issued to exhibit locations, and when the exhibit is finished, it is returned to storage for reuse. They want to track the location usage of items so Design can recall, based on an exhibition, a specific display case for reuse. 

    I do feel adding inventory rows to remove the item/storeroom combo is not ideal, but I haven't figured out an optimal way to do this. Inventory Usage is something we can investigate in the future, since it will tie in nicely with work order planned items and can move items in batches.



    ------------------------------
    sun kim
    ------------------------------