So, when started work on my new job, I told them that I had no experience with the Financial/Supply Chain product, but I’d be willing to learn it. One of the first things they asked me to look at was inactivating an item in inventory. They’d tried unsuccessfully for some time to inactivate it, but were never successful at getting the item inactivated. As a result, people kept ordering it, which was a royal pain because we no longer carried the product. As it turns out, Item 58 was, in fact, a box of Kleenex.
I looked at the manuals, and they gave me some hints of which direction to go. I found out that there were two screens you had to go to in order to get the item inactivated on two different inventory tables. And, it’s not possible to inactivate the item outright. You can indicate that you’d like to make the item inactive, as of a future date (any date from today forward).
Once the items were marked for inactivation, then we had to run a delivered application name INS4000.SQR. This program would, in theory, inactivate the item so that people could no longer order the product. All of this, I learned from reading the manuals.
I ran the process INS4000, but it didn’t inactivate Item 58. Instead, it gave me some arcane error message. And the beauty of the 2,500 line program is that, it wouldn’t tell you what was wrong, per se. It would only list name of the table (or tables) that it found an issue with. So, for each item that it wouldn’t inactivate, you’d receive a cryptic list of table names in a massive error report. And the Item errors aren’t all listed together. They’re all broken up into several different sections of a 20-40 page error report.
Not knowing the application, all I had to go on was the code really.
The first problem that I saw was something wrong with a table which turned out to be related to “Par Inventory”, whatever that is.
“I dunno what this means….who’s in charge of Par Inventory,” I asked the Financial department.
“Where does she live?”
“She lives down in the tunnel.”
And now, I’m cracking up. Our campus is sort of loosely connected by this arcane subterranean labyrinth of tunnels…like a prairie dog colony. It allows us to scurry between the buildings, without having to cross the streets, or go outside in the freezing cold winter. But I had no idea that we forced people to work down in the maze.
So I go and meet with her. I find this little human prairie-dog toiling away in obscurity. Perpetually turning away orders of Item 58 for boxes of Kleenex.
And I meet with her. This ghostly creature. She’s frustrated. “Why can’t we inactivate this? What is the problem?”
Like…you feel her pain. Why is it so hard? I dunno. I don’t know anything about Inventory, but I’ll figure it out.
“What are these tables…what is this Par Inventory…it won’t inactivate Item 58 because it’s set to re-order in the Par Inventory screens,” I offer.
“We’re not even using that any more. You can delete it from those tables…” she offers.
She shows me the screens she goes to. Tells me the nightmare of the data conversion to the new system. And you sense that the subterranean creatures are close to something. Close to being on the 9:00 news. Driven insane by a system beyond their control.
“I can fix this,” I tell her solemnly. “I don’t know Supply Chain, and never claimed to, but I can solve this problem.” And I leave her dark dungeon.
Back at my desk, I resumed the quest to inactivate Item 58. For each table name listed in the error log, I’d have to go back into the code and scrutinize each and every line of code. Each error condition check was written completely backwards in the SQR, so that an error is generated if the Requisition Status <> ‘C’ and <> ‘X’. So, you sort of have to figure out…OK….so I’m getting an error if the Requisition Status is not Complete and not Canceled, which means I’m getting an error message if the Requisitions Status is Approved, Denied, Hold, Open, or Pending. But it’s not as if the Requisition only has one status. The Requisition header has a status. Then the Requisition Line has a status. Then the Requisition Distribution Line has a status.
Slowly, it dawns on me that I can’t inactivate Item 58 because they’re not closing their Requisitions. The reason they’re not closing the Requisitions is because, they were running a job that closed them at some point last year, but it got an error, failed to reschedule itself. And then quietly slipped into obscurity. The Weekly Close job that was supposed to run and close Requisitions and Purchase orders had quit running months before I got here. So, we weren’t closing out the Purchase Orders. And we weren’t closing out the Requisitions. Or the Receipts either, for that matter. They’d never run the job to close the Receipts. They’d never run the job to inactivate the Items.
So, you’re sort of slowly working your way towards a solution. It’s sort of like peeling an onion. Layer after layer.
Not surprisingly, I saw that someone before me had sort of circumvented this entire process and just SQL updated the items to be inactive.
But I wasn’t happy with just SQL updating the Items to be inactive. Because this process was created for a reason. It didn’t exist in release 7.5. It was added later on. So, they wrote this program INS4000.SQR for a reason. I was told to inactivate Item 58, but what I found was that there were a lot of jobs that weren’t running.
And, for every new problem I discovered in the Supply Chain process, instead of being commended, I was castigated by the troll on the 2nd floor. We’ll call her “Oklahoma”.
You couldn’t have a conversation with Oklahoma that she didn’t pull you aside and whisper, “We need to be careful not to throw each other under the bus here….that’s not the way we want to go here, OK?” And I couldn’t for the life of me understand what she was talking about. Every time I found a problem with her Supply Chain, she’d pull me aside and say “We don’t want to go this way….OK? We don’t need to be throwing each other under the bus, OK?”
And, it wasn’t that I was trying to throw her under the bus. She asked me to Inactivate Item 58, and I was relentlessly attempting to inactivate Item 58 so that people would stop ordering boxes of Kleenex under the old Item Number.
And, I realize that my job is not lion taming. But, it’s challenging, and it gives my mind something to grind away on every day at work. It’s like this extremely complicated problem, and I’m learning a new application. So, all is well. I recognize that I’m not working on a cure for cancer, or extending the reach of mankind into outer-space. But, I get to sleep in my own bed at night, and I have my daughter on Monday through Friday. So life is good enough for me that I sort of keep trodding on. I get up every morning, and drive into the office, shoulder to the wheel, toiling away in obscurity. But life is tolerable. If inactivating a box of Kleenex from the Supply Chain gets me home to see my daughter at night, then so be it.
I find probably a dozen jobs that they’ve never even scheduled to run. And running these jobs does fix a lot of problems. We’re getting closer and closer to inactivating the Item 58. We’ve deleted our Par Inventory Data, we’re closing out Purchase Orders, Requisitions for the fist time in 4 months. We’re closing out Receipts for the first time ever.
Every little victory comes at the price of a whispered threat in the hallway…”Stop throwing me under the bus. You don’t want to go that way.”
Finally, I lay it out for her over the phone one day when Oklahoma calls to threaten me yet again. “Quit talking about throwing people under the bus. If you want to throw me under the bus, then do it. I’m through with this nonsense. I don’t even know what you’re talking about. I’m trying to inactivate a box of Kleenex for Christ’s Sake.”
So, we’re closing thousands of Requisitions, Purchase Orders, Recepits. Tens of thousands of important documents that have never been closed. It’s important to close them for several reasons: 1) Because the open Reqs, PO’s, and Receipts are keeping me from inactivating Item 58. 2) Because this is how things are supposed to be. This is the way that PeopleSoft describes in the manual. 3) Because Open Reqs, Receipts, and Purchase Orders can be changed. Once we close them, then they can’t be changed. So, it’s a security risk as well, and the auditors would have a stroke if they knew that we weren’t closing these transactions.
Now, finally, I reach an impasse. Item 58 is tied to some open Requisitions that we can’t close. The reason is because the Req is partially sourced to Inventory. When this happens, the Req gets “stuck”, and we can’t cancel out the Line Status on the Req for Item 58 to be “Canceled”. We should be able to do this, but it doesn’t work, for whatever reason. Now, the financial department tells me that I’ve spent enough time on the box of Kleenex, and it’s time to move on to other issues. Fair enough. We’ll leave it for now. But we’re much closer to where we need to be. We’re running in a much cleaner environment now.
They come up with some other issues they want me to check for…Purchase Orders that are tied to Closed Projects. Purchase Orders that have the “In Process” flag set to Y for whatever reason. All of this goes into new audit reports. All of this goes into the Weekly Close. We’re going to have this system running like a well-oiled machine. We’re not going to be lurching from crisis to crisis any more, where they call me up in a wide-spread panic to fix something in production right away. But that’s how they’re used to operating. They’ve been operating in Panic Mode since they went live 18 months ago.
I’ve documented the hell out of INS4000 so, when you get an error message now, you have some idea what the problem is, not just a cryptic table name. We’re closing Req’s, PO’s, and Receipts. I’ve added all sorts of audits into the Weekly Close….all of these improvement go into the “Weekly Close” job. So now, we’re much closer to running in a clean environment. I’m going to get them out of the “Panic Mode”. I’m going to make things better.
And then, boss comes to me on Friday, takes me to the cafeteria, and buys me a $4.00 donut.
“They want you to take the weekly close job off the schedule.’
All of my work…they don’t even want me to run it any more. They’re so fucking stupid that they don’t even understand what it does. Why it’s important.
“Why….why don’t they want to run it?”
“They think maybe we should run it on a different day…”
“It doesn’t matter what day we run it on. Friday is as good as Monday. What day do they want to run it on? I’ll reschedule it” I ask, but he doesn’t have an answer.
They just want it canceled, obviously. And they’re so stupid that they don’t care if the requisitions are closed or not. It really doesn’t matter to them. They’re so painfully stupid that I can’t help them.”
“Sure,” I’ll take it off the schedule, boss,” I lie. And instead, I get into my car and drive home.
Like…trust me I don’t need this shit. Like….it’s bad enough that I’m toiling away trying to inactivate a box of Kleenex. I get to see my daughter every night. And that’s worth something, right? But not this. Now that I’ve done all of this work, for these fucking idiots to just throw all of my work out the window because they’re so fucking stupid they don’t understand how royally fucked up their system is. I don’t need this. You can just fire me.
I don’t take the job off the schedule. And it’s set to notify them if there is a problem. I’m sure there will be at least one error when the job runs. It’s designed to generate errors. They’ll get notified at 10:00 p.m. Friday night. Like I give a fuck. I’ll go in on Monday morning and quit. Like I need this.
I have a KTM in the barn, just itching to go for a ride through Central America. I have friends in Bolivia, Peru, and Guatemala begging me to come down and roll around for a while. I have my passport in my back pocket. And $10K USD in an envelope. Like I need this.
Instead, I go in Monday morning and check the Process Monitor. The program ran on Friday night to completion. Didn’t generate a single message. And apparently, no one noticed. So, it seems like I got away with it, for now. I’m not clear that I’ve won anything, or that anything’s been settled. But I’m not taking the job off of the schedule. That’s not going to happen.
It may be that my life has deteriorated to the point that my goal in my golden years will be to inactivate a box of Kleenex, but at least I will succeed in that task, at some point.