Anyone created any C# MES programs

Hi There,

Just wondering if anyone has created any C# programs that would logon/clock on and create a MES transaction then complete this?? care to share?

cheers,
Paul

Sure Paul, lots of these out there… What exactly do you want to do?

Hi Jose,

Essentially departments in my company want to change a lot of phantoms to now be subassemblies on jobs which means a large amount of completions to be performed. I was looking to create some programs that would facilitate this. I am think I would create a system where this department would tick a box related to a job that indicates they have completed everything for this job and another program would then complete any related subassembly. This could also mimic a time and expense transaction rather than MES if that meant less processing.

What I am looking for is the shell program (ie details to create MES records) and I can build the rest from there. I just don’t know where to start as I have not created any interfacing Epicor programs before.

Cheers,
Paul

I’ve done almost exactly what you are discussing. In my case, I automatically reported labor against all asm’s of a multi-asm job.

Sounds like you’ve got a 2 part problem:

  1. how interface E10 with external program Interfacing Visual Studio to E10 - Experts' Corner - Epicor User Help Forum
  2. how to use the desired adapter (labor) Laboring over Labor Adapter - ERP 10 - Epicor User Help Forum
3 Likes

any serially tracked/lot tracked parts ??

Not sure if there is a valid requirement to do this external but you can easily achieve this with a BPM

1 Like

Two things come to mind for your consideration before diving into too much customization:

  1. Have you considered used Kanban Receipts? This would just require a valid Rev/BOM. Any Lot Tracking & Serial Tracking may complicate this, but I think it is possible.
  2. Use Backflush Labor on operations. Then when the last operation on an assembly is entered the estimate labor is backflushed on prior operations.

Both options would use the estimated labor on each operation for it’s labor transactions.

Myself, I would explore other built in functionality before doing too much customization. Epicor has provided several different ways to report production.

-Rick

2 Likes

Hi All,

thanks for the replies. The purpose for doing this is to automatically complete subassemblies with a job within a department. Our BOM’s are large and complex and the method of the past has been that department have replied on Cad drawings to help workout what they have to make. We went down the path to turn phantoms into subassemblies so they could use the job traveller as it should be used but the completion of subassemblies became to cumbersome and time consuming. At present the have a sort of a happy medium between both but would love to be told what to make and when without having to close subassemblies. Note, this is not about labour capture. Our operations are setup as backflush and the last operation is qty only.

The need to do this is about turning a large amount of phantoms in a job to subassemblies and have a process complete these once the department have indicated they have finished. We have multiple departments so they cant be closed at once.

This is not a new requirement. We have spent years modifying different combinations and setups, to arrive where we are now…but the ultimate for us is to be informed what to make and when and for the related subassemblies to be closed when the department say they have finished.

Our end product is serial tracked but what I am looking to work with is not this level but all other subassemblies.

regards,
Paul

Paul,
Not sure if you would be ok with this but it might help if we could see an example of your BOM structure.

So do you or do you need to have all the subassemblies for the final part to be contained in the same Job? If not, I did have a client setup where they got a Job traveler for each assembly level with demand links to other jobs. This allowed shared subassemblies to be summed into jobs. Then later they moved to a Kanban system and they did away with the Job travelers completely. Basically when an empty cart or bin was returned to a department (it was labeled with the sub assembly part) they created the part and then reported the part to inventory via Kanban Receipt which creates a job in the background back-flushes everything and completes the operations and receives the parts to stock. Then they just had Job Travelers for the final assembly which was setup to pull assemblies from stock.
The bins & carts plus the Kanban monitor helped with planning. They did need to move to a Min/Max stocking methodology.
That probably doesn’t help, but I’ve ran into several who have not considered kanban.

-Rick

1 Like

Hi Rick,

We have a mixture of made to order and stock jobs. We have introduced a couple of processes that have separate jobs to build internal inventory but unfortunately the company does not want to go down this route… they want full visibility and control of every stage of a job. A lot of what we make is custom.

We have also used Kanban in the past to build internal inventory for exactly what you have described but this slowly died over time for a number of reasons. Essentially having multiple processes to manufacture similar subassemblies in the end was difficult. Trying to get 250+employees to do the right thing is also a difficult task :slightly_smiling_face:

regards,
Paul

Paul,
Just read back over this thread and I agree with many of the comments.
Just a few things:

  1. If by ‘MES records’ you mean the labor records, there are two types that are created, Labor Head (on Clock in) and Labor Detail on Job Start/End or Report Qty.
  2. When labor is not a concern, I’ve seen the ‘Report Qty’ option in MES being used the most. The User would login to MES, and then click on the ‘Report Qty’ button, enter the Job/Asm/Opr & Qty completed and hit OK and that operation is then done. Depending on the structure, this maybe enough or you can then have a BPM setup that when certain operations are marked complete then do something to complete others (though operational backflushing should do this out of the box). BTW - for the Report Qty button to be available the Employee ID has to have the ‘Override Job’ & ‘Report Qty’ options enabled.
  3. Another option maybe the Work Queue. While I takes some doing, I have gotten some companies to use the Work Queue instead of printing Job Travelers and such. Basically with the Work Queue the user selects a Resource and all the Job Operations that are ready for them to work on show up in a list. They can then select a Job to start work and then use another tab of Active Jobs to report the Qty and to end the work.

Could you describe how you envision what you want working? Perhaps we can help you work out options and flesh out the details.

SaberLogic has done some interesting work with MES & Production Management. Their stuff isn’t pretty but it might help you think through the best solution:

-Rick

1 Like

Hi Rick,

Thanks for the heads up on the report qty, as default we had this functionality turned off…mainly because we didn’t want factory staff entering scrap or non conformances, we were not aware of this functionality. I will do some testing when I have some time and roll this out as it looks better than what we are doing now. For completions now we are enter the job, assembly and operation via start production activity then straight away selecting End Activity (entering the completion qty, we have a BPM to prevent over completions as we only make what the job says).

Thanks for the SaberLogic links, looks good.

How I am envisaging this will work is each department (4-5 at this stage) will have running a program that displays a list of jobs where they have outstanding demand. Once all subassemblies for that department have been completed they will tick a tick box that will essentially close this job for them and disappear of the screen. Based on this action a program will then run that will complete all subassemblies for the job selected for that department. Essentially replacing a human from completing each subassembly individually. For example one job for one department could have up to 5-20 subassemblies, at the moment its around 4 a department. I mentioned MES as this is what our users are using to complete subassemblies now. Every morning I close out any subassemblies the factory have missed based on the top level job being complete, sometime a lot grrrrr.

We used MES for 2 years to capture actual labour on jobs but management went back to using the Prod std estimate which becomes the actual once completed…this decision was based on effort vs payback, they didn’t believe it was worth the time to collect this data as it wasn’t really used in their eyes.

In summary what I want to create is a system where only a few inform a program that the job is complete in their department and then all related subassemblies are complete. We will then change our BOMs to turn selected phantoms to subassemblies and where the job traveller will tell us what to make and when.

I hope that makes more sense??

Cheers,
Paul

I think all I need is the code to create a Laborhed record and a LaborDtl record, the rest I should be right with.

Have you done a Trace to see what methods are called when you Create a Labor Record? That’s where you should start

I started to, but then thought I would ask the question if anyone had essentially created a pgm to write to the laborhed and labordtl