Need advice - productive labor without a home

Looking for general business advice on this. This is probably stupid to even have this problem, and I can only hope to explain it well. But here we go. I’m sorry. I’ll just say that now.


Every month we have labor that is done on parts AFTER they are complete. Dozens, maybe hundreds of hours.

** Where should a worker apply her time? **

Solution 1: reopen the jobs, charge time to the job, cost goes to variance, etc.

The problems with that are:

  1. Some parts don’t even get a job of their own - they are purchased parts that we work on
  2. The others, we have no idea what the job number was for this thing we made two weeks ago.

⏪ Rewind: Here's the scenario.

You know, this is so atrocious, I'm just going to hide it.

We build trucks

  1. We make some of the components, like the frame (the chassis)
  2. We buy other components, like the cab floor

A. SOMETIMES we paint the parts (here)
B. And SOMETIMES we subcontract the parts to be galvanized

So any combination of (1 or 2) and (A or B) is possible.

Painting is simple. Case closed.

Galvanizing is very messy (literally).

When we receive the parts back from galvanizing, they need to be cleaned up, which involves substantial time [labor] and resources [burden].

To utterly complicate streamline this, we apply the subcontract costs to the jobs to make the trucks (which is the thing we sell) and not to the jobs to make the frames. We just pretend that the frame is done when it is raw and done being welded. (And purchased floors are already in that state when they arrive, so no job needed at all there. So, logically, putting the clean-up costs on the truck jobs actually makes perfect sense with this scenario.

Solution 2: Charge time to the truck jobs

The problem with that is we wait until the last second to firm the truck jobs. The “last second” might be long after that frame is cleaned up - so there is no open truck job to charge to. We do this because, for one, Engineering is changing the BOMs constantly. Ob la dee, ob la dah, life goes on.

Back to the problem

OK, so one thought is to use indirect codes. We use them now for cleaning and maintenance and other things.

What I dislike (in this situation) is that indirect has no burden applied. And that’s not right - this work being done is legitimate, productive work that uses substantial resources (it’s welders using torches and drill bits and reamers). This isn’t just “overhead”; it’s directly related to the cost of offering galvanizing to our customers. If we didn’t galvanize, we would not be doing this.

I think the easiest thing is to

  • Do this as indirect
  • Tally up the hours at month end
  • Then (on a napkin) multiply the hours by some burden rate and do a journal entry

I know, I hate journal entries, too. But it’s one a month.

Any thoughts?

Not a great solution, but if you could estimate the cost for the next period, you could increase the burden on those resource/resource groups and capture the burden that way. The cost really does need to go to the part and not the overhead. Once you receive it though, that cost goes straight to variance if the job is changed.

It is pretty volatile. One month, everything is galvanized, then next, 50/50. Not to mention part shortages are maddening these days.

So I think we’d need a quasi-accurate number.

@JasonMcD have you thought of using Job Adjustment for labor or using time and expense entry? Epicor has an IOS app for time entry which is pretty slick, lets you record different types of time. There is a demo to try out.

Well, the challenge is, philosophically, where to charge it.

I actually made my own app for time entry - we just started using it last week.

It’s working well. So well, in fact, that people are asking legitimate, thoughtful questions.

Which is great! Until I have to figure out the answer…


When are the galvanized parts actually reworked? Is it while the part is separate (and easy to handle, in a child job), or is it done after everything is assembled in the final truck (aka - Oh crap, this bolt doesn’t go in, guess we need to run a tap through 50 nut-serts!)?

Is it only when there’s galvanized components, and not when painted? Could you add a clean-up operation to the final assembly job? If the time is variable, then they can punch in for 10 minutes or for 4 hours, and at least it’s captured at the time the work is done and reflects reality.

1 Like

My client has a similar situation, the parts they weld (also called frames but not trucks) are sometimes sent out to be galvanized and sometimes painted in house.
They have one part for the Painted version and one part for the galvanized version.
Painted parts, yeah just normal: Fab > Weld > Paint > Receive to Stock
Galvanized parts: Fab > Weld > Galvanize SubCon > Debur/Clean > Receive to Stock.

So when the parts need galvanized, there is an extra operation to clean up the parts after the SubContract operation, then received to stock or whatever. That is all done in the same job.
Receiving the Sub Contract operation by default will go back into the Job WIP if it’s not set to Auto Receive to stock.

I don’t understand why there is ‘pretending’ it done after welding when it’s not. When the completed, galvanized and cleaned parts are received to stock or to the Truck assembly job, the total costs of that part should go into the Truck job (if standard, provided standards are correct). Or if you setup the Frame Job to be ‘Make to Job’ then the costs will flow into your Truck Job. You might need to enable Mfg Cost Elements in Company Config if you want the cost elements to stay distinct when going into the Truck Job.
The only other option I can think of is to add a ‘Debur\Clean’ operation at the beginning of the Truck Job and set its labor reporting to ‘Backflush’ and set the estimated\average time to clean up. If estimates are ok, then when the operation following the Backflush operation is reported it will apply your estimate labor to the Truck job.
Myself, I would find a way to do it on the frame job, still not sure I understand what the challenge is to do that.


For this discussion, it’s planned “rework.” Oh yes, you seem to know well that we have panic rework as well. But that’s another animal.

Agreed. BUT a cab floor is purchased (today it is - always subject to change). So there is no job for that. We don’t even make a job to galvanize it. We slap the galvanizing on the truck job. Wasn’t always that way, but then we improved the process. Boss man wanted to see the cost hit the thing we sell, not a component. No one else likes this method. He’s at another company now.

And that was my preferred method (given the situation). But there can be quite a lag from component completion to truck start. (We used to be a lot more JIT, till the global supply chain melted down.)

All very good answers, and I do appreciate the time. As usual, the truest, rightest(?) answer is to stop doing crazy business practices.

Of course, the pushback is usually, “Why does [your] Epicor make this process so hard? When we did everything in Excel, this was a lot easier.”

1 Like

Yes, use the system as designed, we seem to over exaggerate the effort to work WITH the software. Why do we desire so much to hack and shortcut? I don’t know.
Keeping it simple first means to use something as it’s designed, if that really, truly doesn’t work, then start hacking. Sometimes the way we WANT it to work really doesn’t have all the advantages we think it does. There are many hidden costs and technical debts to customizing and working around the design and sometimes the benefit doesn’t out weight those costs. It’s hard to work out.

1 Like

“We” in the general sense, I’m sure. You and I don’t want to subvert the logic. Our masters do.

This one will be awful, though.

We used to do it the right way. In 2019 we they spent weeks dismantling that system to force costs to the trucks. Now (I say) we need to put it back to the way it was. But it’s not actually important to anyone now. Just me. So, we will do something complicated instead.

1 Like

(yes general sense)
Interesting. You say to ‘force costs to the trucks,’
How were the frame jobs processed? to stock or to Job?
Either way the Costs from the frame jobs should flow into the Truck jobs when the frame job parts are issued or received to the Truck job.

To stock. (Standard Cost, by the way)

Understood. But the subcontracting, we divorced it from the components and put THAT on the trucks. (Paint, too.)

It’s not the normal Operation-PO-based subcontract, either.

Fair warning, you asked @Rick_Bird. I was going to drop it.

We do POs, of course, but we just buy it to a part number with a fancy GL control. That same part number is issued to trucks in proportion to the amount of stuff that is galvanized. And we hope it nets out.

UOM is pounds (weight) since that’s how they charge us. (Weight of the metal thing, not weight of the galvanizing.)

The reasoning behind this procedure was a few things:

  1. No need to fiddle with tying the PO to the right job
    • Yes, it would be smarter if we did do that, I know
  2. When the raw part is universalized (can paint or galvanize it), we can just put THAT in the truck BOM. It makes the link really clear as to why we need to buy that part. When the raw part is a component of some random job, people get so confused and nervous. They think they can’t trust MRP if they can’t tell what truck(s) it’s for.
    • Get over it, people.
  3. ALL the galvanizing costs are in one spot, so boss man was happy
    • But you guessed at the number anyway and standardized it! How is that any different than pooling the subcontract standards of the parts?
    • To your earlier point, even if we didn’t split MFG cost elements, I think JobAsmbl actually retains that info as, um TLAMaterialSubCost, I think. [EDIT: and LLAMaterialSubCost, of course. Actually, it’s probably 100% there for us.]

I liked that manager a LOT, and he did amazing things here, but this was one thing I sharply disagreed with.

1 Like