Life, death, and the Red-Tape Factory

March 15th, 2007

Before I got my job at Acme, if you had asked me what sort of interest I had in manufacturing I would have told you that I thought it would be cool to see how raw materials got transformed into finished products. I still think that’s cool and I wish I could spend time watching how the metal is made into the tool at Acme.

That’s not a vocational interest. That’s a tourist’s interest: come, see, marvel, leave. Since I’ve come and had my look, I have been fascinated not so much by the process of manufacturing, but the question of how to make that transformation easier. That sounds geeky and technical, but it is really a simple goal: cut red tape. If I could show you how to cook your supper faster, or wash your clothes faster, or likewise make any other task easier, safer, and more effective, how could you not be interested?

Particularly if I proposed to make your health care safer.

Read a very brief introduction to Lean thinking and the Walter Reed fiasco. Then read about the horrible red tape plaguing the medical services industry; and, if you are still interested, read a more detailed explanation of how Lean might be able to help.

That's not all, folks

March 12th, 2007

Today I got introduced to the process we have to go through to for international shipments. If you got through my previous long post on the shipping process, I won’t deliver another and equally tedious description. Suffice to say that all that business about the difference between shipments, packages, invoices, orders, and so forth–well, all of that is repeated, independently, for international orders. Along with the standard paperwork, international orders require another set of paperwork, and as it involves different languages and different customs (pardon the pun) and large, long distance shipments, much more is at stake.

The system we must use for international shipments is based of off an Oracle platform. It is generally known as “Oracle” at Acme, and it is the new corporate standard that will eventually come to our site. This system was recently implemented at another site, an international site, and the result was an absolute confusion of orders that managed to hit twice, at the end of January and again quite late in February.

If we try very hard not to think about that, to think positively instead, we can hope that implementing the Oracle-based system at our site will eliminate the need for redundant papework. That would be nice. A small mercy, though, because from what I saw today, the Oracle system shares a weakness with our current system. In both cases, if you want to peform a routine, defined task, you have to go through far too many different screens. The process is so badly coordinated that you must remember to copy a number from one screen so that you will be able to paste it into another. Sheer interface idiocy!

Okay, time for a preschool lesson. The reason why the Windows operating system is part of what most people consider a normal computer is not because Windows has an inherently better underlying structure. It’s because any task that the developers could imagine people doing was carefully orchestrated by a “wizard,” a guided set of screens that bring you from the start of a task to the end with a minimum amount of effort by you, the user. Windows has always had some useless wizards and always lacked one or two, but overall the strategy of making routine tasks easy for most people (sorry, IT guys) pays off big.

Bad Oracle! Go home!

To be fair, Oracle may not be to blame. Oracle is basically a big robust engine. If you take a robust automobile engine, you can set it up for an SUV, or a work truck, or a sports car. You can use the same six or eight-cylinder engine block for a lot of different purposes. Oracle has to be adjusted to its purpose, and I don’t know who designed or delivered Acme’s package.

But the IT department had a jolly time getting it set up on my PC, because despite the fact that it is the Chosen One, there is no standardized or documented end-user setup procedure. Oh, and while they were trying to set it up on my particular PC, the whole national system was going down. That didn’t help much.

It is not too late for our Oracle system to be further adjusted, especially before it is set up at our site. In fact they did ask for improvement suggestions recently. Then they made an improvement that made one of the most routine and critical queries run drastically slower.

O brave new world, that has such systems in it!

The Shipping Enigma

March 5th, 2007

Consumers like I once was think that a shipment is a box with an address. You have a product, you put it in the box, you put the address on it, and you put it on the truck. If things were that simple at Acme, I would not be working twelve hour days to try to come up with the data to prove to other people in the factory that we have shipped everything that we are able to ship.

Important clients are upset with our on-time delivery. Important corporate initiatives to reduce money tied up in inventory are frustrated with the piles of inventory that remain on the books at critical accounting junctures. What is going on here?

Let’s start with the customer order, made up of line items. A line on an order is a single item and quantity. The same item can appear on multiple lines of an order. An order can be made up of any number of lines (I am not sure if this includes zero or not). A shipment can be made up of any number of orders, and any number of lines from those orders; perhaps half on the lines on Order 123 and three lines from Order 456, and one more line from Order 789, provided they all have the same ship-to address.

Since an entire order may not go out on a single shipment, there is also an invoice, which is the intersection of an order and a shipment. So a shipment will have many invoices if it has many orders, and an order may have many invoices if it was shipped at various times.

Then there is also the bill of lading, which tells each truck what they have in a general way, and a report that tells us what we shipped in a given day.

The contents of the shipment are described completely only by the pick/pack. The pick sheets are used by the factory workers and the packing sheets are sent on with the order. Their different uses give them slightly different formats; the picking sheets are sorted and grouped by item location, and if the same item appears in multiple places a single order line can be split into two or more pick lines that do not even appear on the same sheet of paper. The packing sheets, which serve as invoices, must keep distinct orders on distinct sheets, so sometimes what fits on one pick sheet must be printed on two pack sheets.

The pick and pack sheets are printed out on two printers that sit side by side, and they have to be collated together by a worker who understands both the location codes and the parts. Since spare parts are picked right off of the assembly lines and the assembly lines are designated by number, but without any particular segregation, you have to know which assembly line is in which area. But sometimes the location code is very generic and you have to simply recognize the part as a Type A tool part or a Type B tool part. Anyway, the pick/packs need to go into the slot for the appropriate picking action.

Parts can be located in the stockroom, possibly in several places, and on the assembly line, or several assembly lines, and although the pick sheet will suggest a location to pick from it will also list the alternative locations for your convenience. Some of the locations may be completely obsolete. The count at any given location is very likely to be off, and even the total count does not have a very satisfying accuracy rate. So the pickers have to go on their experience and their persistence to track down some spare parts, and they risk being told by the assembly line managers not to take the parts because they are needed for production.

If the order is for spare parts and finished tools, the spares pickers need to hand of the order to the tool pickers. If the order includes any tools or spares from the special sub-factory, it has to be given to them before any of the standard tools or spares are picked.

Some spare parts can go in plastic bags. Others need to go in bubble bags. Some require moisture-absorbing pellets and others don’t. Some customers require special treatment for their parts. Sometimes the work is done by temporary workers who have no prior knowledge of the parts or the locations or the special customers.

Tools come off the assembly lines in boxes, but they have to be put inside other boxes for shipment. The choice of exterior box, or sleeve, depends on the type and quantity of tool being shipped. Some of the permutations and the resultant sleeve are spelled out on a packing instruction card, but certainly not all; and they refer to box numbers, that is, the number of the tool’s box, and some of the boxes do not have the tool number printed on them.

I never used to understand why places like Amazon seemed to have only one or two box sizes, but it makes perfect sense now. You can save a lot of time by knowing which of two boxes to use without a moment’s hesitation.

The picking sheet is a white sheet, part of which is custom-cut stickers, designed for getting jammed in printers. The pack sheet is colored. Unless this is an order going to another facility in the company, in which case the two different sheets are used for opposite purposes, because nothing is done the same for orders going to other sites in the company. They exist in a parallel universe, theoretically, which causes great problems in reality, since both kinds of orders compete for the same physical products.

There is an ID number that appears on the pick sheet and on the pack sheet (unless it is an inter-company order, of course), and as you might be able to guess, this is the basic unit of information in the shipping department. It does little good to speak of orders or customers or products or even carriers without knowing what the shipment in question is.

When an order is all packed up and ready to go it is run through our Shipper software, which records the shipment ID number along with other data like shipment weight and carrier tracking number. The Shipper software feeds this information back to our primary Manufacturing software, and that’s how our primary software knows that the shipment is complete.

Now, pay attention here: the shipment ID is generated by the Manufacturing software. Got that? And the manufacturing software will not allow more than one shipment ID to be active for an order at any given time. If there is only one little part on one line of an order available for shipment at 8:00 am, that is the only thing that will drop for pick on that order at that time. If the rest of the order, for hundreds of tools let’s say, becomes available at 8:02 am, it cannot drop for pick until the previous shipment ID has run through the Shipper software.

Since that exclusivity is enforced by order number, a different order for the same customer may have been consolidated to the same shipment ID by the Manufacturing software, perhaps an order that takes a long time to pick. So the one little line on that big order will hold up the entire order until it gets all the way through the picking and packing process.

Once that shipment ID is fed back to the Manufacturing software, it is a simple matter to look up that shipment in the future. But if the shipment has printed out and has not yet been successfully run through the Shipper software, it takes the Manufacturing software that generated the number a good solid ten minutes to come up with a list of possible shipment ID numbers for a given order number. If you already have the shipment ID number, the Manufacturing system can bring up the details of the shipment in a blink of an eye; but if you only know that some part of a given order is somewhere in the process of getting shipped, the system will have to check and see all the different shipment ID’s that have been associated with that order, at any point in time; which could be a long time, if a part has been out of stock for a while or a customer placed an order with different due dates on different lines for the range of a month.

The Manufacturing software has a report you can run that will show you all of the orders that are currently printed for pick and what the dollar value of that pick is and when it printed. It does not show you the shipment ID number. Using this report, one can easily see that there are very valuable orders that have been printed for days that have not shipped. If one is in charge of reducing cost of inventory, one can easily use this report to become upset.

But remember, since these are orders that have not shipped, it will take ten minutes per order number to get a shipment ID number. And once you have that shipment ID number, you will have to look at all the different places in the chain of shipment to see if the order is there. Remember, too, that if you do this during the day, the shipment papers are moving around–people are out on the factor floor are picking spares, or they just dropped off the spares to have the tools picked, or they have boxed it all up and it is waiting in queue to be shipped.

If you check all of that paperwork and do not find the shipment ID, and if you are confident you did not overlook the number by means of paperwork catching on one another’s staples or your eyes crossing or you forgetting which number you were looking for, then you can reasonably assume that the system has had some kind of error. I just recently heard the suggestion that perhaps the workers are typing information into the Shipper system, somehow causing it to report success but fail to update the Manufacturing system. Of course the solution there is to tell our workers to slow down.

Now let’s say that you have let the system spend ten minutes finding the shipment ID number for you, and then spent twenty or forty minutes looking through the paperwork, and you have decided that the system made an error. If you took that shipment ID number to the Shipper software and double-checked and did not get any record of shipment, you have no proof of shipment so you have to rescind the pick status and let the order drop again.

So first you must bring up one screen and delete the shipment ID that you just spent ten minutes of system time looking up, to say nothing of time spent searching afterwards. Then you have to use a different screen and, one order at a time, adjust the quantity on each line that is picked to zero. If only part of the line was available originally, but more stock came in and allocated to that order, the system will ask you to take the time to specify how the allocation should be divvied up. Remember, a shipment can have multiple orders, so you must go order by order, line by line.

And then you can start to investigate the other orders that show up on the list as past-due for shipment.

Do not let this interfere with your other duties, by the way. One of which is investigate customer complaints to see if they are valid. The service center sends these complaints with an order number and an invoice number, but not a shipment ID. That’s relatively okay because these orders have shipped and you can get the shipment ID number fairly quickly by looking up the order number. This will bring up the whole order history, so if you want to know about just that shipment you will have to search for the invoice number, and then if you want to print out the list of what was meant to be on just that shipment you will have to copy the shipment ID and paste it into another screen.

Incidentally, this is useful if you need to validate an order by weight. Without mentioning any kind of inventory errors we might have, it is unreliable to check for shipment errors by counting inventory because product could be in the process of getting shipped out during the day, and on the system the inventory will show in location until the order in question is run through the shipper software. But the product weight on the system is inaccurate, so one has to look through a passed-around collection of handwritten, unordered, photocopied, annotated, and recopied list of tool weights, or go out and weigh a sample of the item in question, assuming there is some in stock, in the location specified.

And then add that up, and try to compensate for the weight of the stretch wrap and the cardboard and the pallet, and decide if the product in question might have been missing from the shipment.

You can see how this might be competing for your use of the system and your time in general. I should add that you are only allowed two sessions on the system–well, two on the local system where you can look up inventory and other local matters, and two on the order management system that has exclusive visibility of the shipment ID number and comprehensive order information.

So if you are trying to multi-task by taking care of customer complaints while you are waiting for one of your sessions to finish looking up a shipment ID so you can see if it even physically exists, and somebody brings you a shipment that needs to be adjusted (because this happens many times in a day), then you are out of screens to use. Or you will hastily grab the screen that you had started looking up that shipment ID a long time ago, and in one lightning-efficient stroke, faster than thought, you will blow away the report you have been waiting for so long.

But up to now we have been talking about investigating why an order did not ship after the fact. Suppose it is the end of the month and we are trying to ship out everything that is not nailed down. The system is supposed to drop the orders by itself at regular intervals, according to the available inventory. But it does not drop everything that it could. Some more orders will show up if you manually run a drop, and some will still remain that will only drop if you try to drop them specifically.

Also orders that are on hold will not drop, although inventory will be allocated to those orders to be available whenever the order comes off hold. There is also a special order on perpetual hold to reserve stock for a special client. Inventory will not automatically move from that order to the current, shippable orders for that client, so everything has to be moved manually, and then any further stock that comes in will still allocate to that order and any other order on hold, on an age basis.

If you want to take some inventory from an order on hold, you can easily see a list of all the orders for that product. You can see if the order is already picked, or allocated to pick, but you cannot see if any of the orders shown are on hold, so you can reallocate inventory from one order on hold to another. In any event this is a task best done with two screens, one to see the list of orders and another to do the allocation, and that leaves no available sessions to look up the details of an order or to do anything else someone might come and request.

Owing to my cleverness and my overtime, I was able toward the end of the month to use Microsoft Access to generate a list of orders that were not filled and not on hold, and even showed available inventory–and on top of all that, were not already being picked (which, as you recall, prevents the order from dropping again until the pick has cleared). Shippable orders, in other words. A few of them were 100% fill orders, meaning that the entire quantity of a line item had to be available (and I think in some cases for all lines on the order) before it can ship, so it made sense that these did not drop. But the majority of them–I think I tested 100 out of 600–simply gave a fatal error and would not drop.

Evidently our system has developed a psychosis where on the one hand it thinks it has inventory and on the other hand it thinks it does not. In other words, one can reasonably ask why I did not ship the inventory and I cannot reasonably answer. Remember, simply saying that the order did not drop in the automatic process does not mean that the order cannot drop, as manual intervention will sometimes get the job done.

There are also the orders for the special client which, being large orders, get dropped ahead of time so that they can be sure to ship on time. Generally we try not to have these in the way at the tail end of the month, but I wound up dropping them accidentally anyway as I tried to maximize our shipments.

Alas, to no avail. I still got a report which was meant to be a list of orders that were not on hold and had inventory available and did not ship out at the end of the month. Investigation gradually revealed that the top-dollar items were either on hold (yes, despite the fact that the report supposedly excluded on hold order), or had probably been on picks already and could not drop, or did not have any inventory available on the actual last day. An erroneous report with which to incriminate me, how nice.

Now, dear patient reader, how would you like to explain that to a room full of busy people who make twice as much money as you who want to know why you had tools on the shelf at the end of the month?