Automatic Operation Batching


We have recently started using the advanced production module, and we would like to have all jobs created from a single sales order batch automatically. Is there any way to do this using either a customization script or a BPM?


Hi, Sorry to bump, but we really could use some way to batch jobs from a customization script.

I am unfamiliar with APM and what you are trying to do operationally but if you can break it down in simple terms for me I can probably give you some ideas.

What batch operation are you trying to perform on the jobs?

Hi Chris,

We are looking to use the Batching functionality from the Advanced Production Module in Epicor10 from a custom dashboard. I’ll break it down as much as I can.

1)We have a dashboard that lists all jobs that have not yet been released.
2)We will add a column of checkboxes (I know how to do this).
3)We would like to add a control (either a button or an option under the Actions menu at the top).
4)When that control is activated, all operations within the jobs selected in the column of checkboxes should be batched.

Does that make sense?

I think so. So when you click your button what actually happens to the selected jobs? They are released?

I am unsure if you will need to store a record of which jobs are “batched” together - if so you will need to use a UD table.

If not, you are just modifying jobs using one of the Job Adapters. You would grab the jobs you want using the job numbers, then modify them in the dataset and finally update.

There is a process called “Batching” that is unlocked by the Advanced Production Module that creates a new job that contains the operational and material requirements of all the selected jobs. That is what I would like to happen to the selected jobs.

essentially you’d make your dashboard, use a calculated field in your BAQ as your ‘batch’ checkbox, make your BAQ updateable and deploy that DB as an assembly. Run a trace on releasing jobs and batching in the resource scheduling dashboard to get you the method calls you need and then do a customization on your dashboard assembly and perform the needed BO/Method calls you need for each row selected. It’s not trivial but that’s how I’d go about it.


Why are you going in this direction instead of using the list tab on the Resource Scheduling Board? I believe that tab has the exact same functionality that you have described above.

We are trying to simplify our process as much as possible, and the dashboard in question is already used at the point in the process where we’d like to batch while the scheduling board is not.

I would trace the Resource Scheduling Board to help figure out what is going on and then try to replicate. I know after you select what you want to batch, you need to select backward or forward, so there could be a lot of calls you might have to do.

I’ve found the method I need to call to batch the operations ( Business Object = Erp.Proxy.BO.BatchOpsImpl,
Method = DoBatching), but I can’t seem to get it to run from a customization. Can you point me towards an example of running a BO method from a customization script?


1 Like

Digressing a wee bit…

We are on version Job batching is available but falls over when reporting labour on the Mes if the operations/jobs batched aren’t top level assemblies (I think this was due to a constraint of the child part not being the same as the top level part on the job header)- we have very complex bom’s with lots of sub assemblies. We physically batch cutting operations for parts/piece parts that are the same grade and thickness of steel.

Epicor confirmed that the behaviour that we saw was how the system worked in the version we had - you could not batch sub assemblies - all worked great for top level, saleable parts. Also confirmed at the time that the next version 10.1.0 would only allow top level job/op batching.

There are all kind of things we could do if we change processes to fit E10, however we took the approach that we were no worse than when on Vantage and don’t really have the manpower to support, manage and plan work if we changed the process - for example making cutting ops a separate job to job production order.

We are exploring potentially going back onto maintenance/upgrading to a newer version - does anyone do multi level assembly job batching successfully in later versions of E10.

1 Like

We also do this. To make it easier we take the material that is related to that operation and drop it into the operation comments. Then in the work queue you can turn on the operation comments in the grid and use that to filter things. That has really helped in being able to report things. We use a dashboard to feed into a CSV for DMT to run. I’m sure there are better was to make it more automatic, but it works for us for now.

I’ve done a customization where the customer wanted the batch job to only use one material and the total combined time to be less than a single shift. To accomplish that, we customized the resource scheduling board to show the number of materials and total time for the selected jobs. We displayed both at the top of the grid with color highlighting when they were outside allowable. If they were outside their operating procedures, we also disabled the batching process.

Basically enforcing their operating procedures for batching operations.

1 Like

Hi Jacob - did you ever get the code to batch jobs - it’s something I am keen on doing also as the scheduling board isn’t that user friendly.


I have made a special Updatable Dashboard that allowed you to select multiple jobs and batch them. it used Epicor’s base Job Batching method to do all the batch work. I then enhanced some of the results by:

  1. deleting the old jobs - normally batched jobs leave left overs… in this case, these were just confusing. There were no costs applied yet, and they were closed. We simply deleted them.
  2. we did some magic with Labor to correct the labor per their needs.
  3. we rescheduled the job automatically (something that the normal batching process doesn’t do.)
    all of this was done by calling already pre-defined business objects, although we had to do our own calculations for the labor portion.

Hi Tim - don’t suppose you can share the inner working of this can you please?

I don’t have the code… there were a few calculations, and we used some “customer specific” assumptions to do the calcs…
One challenge with how batching works is that Epicor ASSUMES that all the jobs being batched have the same amount of time per piece on all operations. The assumed time is taken from the FIRST job chosen when batching. The problem with this logic is as follows:

  1. job 1 - painting takes 5 minutes per piece - 5 Qty = 25 minutes
  2. Job 2 - Painting takes 10 minutes per piece - 1 Qty = 10 Minutes
  3. Job 3 - Painting takes 15 minutes per piece - 4 qty = 60 minutes
  4. TOTAL for the above is: 9 units and a total of 95 minutes to complete the three jobs.
    BUT When you batch the above, if you choose job 1 first, then it assumes that 9 parts will take 5 minutes per piece, or a total of 45 minutes (instead of 95)… if you chose job 3 as the first job to batch, then it would assume 9*15 or 2 hours and 15 minutes… neither of these is the correct answer. So… because this customer had a wide variance in standards between jobs, we had to “correct” the operation of the batched job and automatically calculate this fix… we did this by adding the total time, averaging and fixing the value. The corrected value for the above would be 95/9 = 10.55 minutes per piece, making the scheduling and costing work correctly again.

But the actual call to batch was fairly simple, You need to turn on tracing, and then do a batch of two or more jobs… you will see that it sends some data to the call. You need to create the same set of data and put that into the call in a UBAQ.

Thanks Tim - I’ll have another look at the tracing method - with full detail this time to see whats going on.
Many thanks

Hi Tim & Mark,
We are also working on the ‘batch operations’ which for us works from the resource scheduling board, however the assigned job number is where we have an issue. we would like to change this to our production batch reference rather than the default job that has the -1 tagged at the end. did either of you look at this or do you know how or which method it would be tweaked against?