Automate the Fulfilment Workbench

Andrew ClementsEpicor Developement

The fulfilment workbench module in the AMM module of Epicor 10 is potentially a very powerful tool to ensure stock is allocated to orders in the correct order.

Recently I was asked to automate this, as the manual approach of running the fulfilment process was too ad hoc and relied on key individuals remembering to do it.

The solution was to write an executable in Visual Studio that reserves and picks the stock based upon parameters entered at run time and then scheduling the executable to run every 30 minutes via task scheduler on the app server.

One issue in 10.0.7 that we encountered was that as soon as an order was entered, it became a candidate for the fulfilment process. We got around it by placing all orders on hold and excluding orders on hold from the fulfilment process. The good news is that in 10.1, there is a new field called ‘Ready to Fulfil’ which resolves this.

I have listed below the template for anyone who wants to try coding there own executable

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using Ice.Core;
using Ice.Lib.Framework;
using Erp.Proxy.BO;
using Erp.BO;
namespace FulfilmentWorkBench
class Program
static void Main(string[] args)
//0 - instance, 1 - user, 2 - password
string lInstance = args[0];
string configFile = "";
if (lInstance == "Pilot")
configFile = @"C:\Epicor\ERP10.0Client\Client\config\EpicorERPPilotUN.sysconfig";
if (lInstance == "Live")
configFile = @"C:\Epicor\ERP10.0Client\Client\config\EpicorERPUN.sysconfig";
Session epiSession = new Session(args[1], args[2], Session.LicenseType.Default, configFile);