Integration to Epicor - General Question

OK… it is OPEN MIC time… You all have systems that you need to interface to that are outside of Epicor. Some of these are easy to interface, and others harder (or impossible at this time?). In doing searching here, I see questions about integrating Epicor with Magento, Paychex, Shopify, ADP, etc… But I am interested in a little more…
The Questions:

  1. What outside/3rd party systems do you interface/integrate to?
  2. What is your methodology for such integration (BPM, Epicor Functions, Custom Code, Via Rest, Etc)
  3. What were your challenges?
1 Like
  • What outside/3rd party systems do you interface/integrate to?
    Custom online ordering portal (2 way), custom CMS for iOS app (2 way)

  • What is your methodology for such integration (BPM, Epicor Functions, Custom Code, Via Rest, Etc)
    For online ordering we used a combination of Epicor services via REST + BAQs. The Epicor v1 REST BO services were a real bi*ch to work with especially for the web developers who didn’t know Epicor. The result was a TON of complex code to service this integration. In the new portal we are launching soon, I wrote an API that brokers calls between systems and utilizes Epicor functions for business logic orchestration and BAQs for data pull. I chose the custom API approach to simplify the endpoints and make the consumption of the API Epicor-agnostic.

  • What were your challenges?
    Networking and security was a challenge. I have had to jump through many flaming hoops to get this working correctly and securely. Our hybrid “on-prem” configuration + third party cloud hosted probably added to the complexity since we don’t get to see behind the curtain at the networking level and had to communicate the requests very clearly and had lots of trial testing. I imagine pure cloud customers might have an easier time with this.
    Functions are probably the best integration tool in my mind.
    REST v2 greatly enhances security in my opinion and enforces a surgical approach to access and scope management.
    I’d love to know a better way to handle callbacks from various integrations. I use a UD table to handle writing async system event webhooks and a uBAQ endpoint to allow the calling app to write back an event after it’s processed. A less user defined callback handling mechanism would be great to see. Again, with my particular environment and configuration, it’s just not simple to expose a webhook endpoint. All the “allowed” outside connections to talk to the system are IP whitelisted, so that might be just something I have to deal with.

2 Likes
  1. What outside/3rd party systems do you interface/integrate to?
    We integrate with Salesforce, Shopify, SKULabs, and other order channels. We are moving to an event-driven architecture, so these external platforms communicate with our AWS platform. Event-Driven Architecture

  2. What is your methodology for such integration (BPM, Epicor Functions, Custom Code, Via Rest, Etc)?

We use RestSharp in standard data directives to push events to our AWS topics (Kinesis Streams) (Approved Supplier, PO Approved etc), this is executed off the main thread for performance. For data coming into ERP, we use custom UBAQ services (which are REST calls from the external systems) to ingest the data (creating a sales order, updating fields etc), this ensures external systems do not need to know about GetByID, Update etc. We define a schema in the UBAQ service and enforce it via Json.Schema. Functions will be very powerful here once we are on a version with functions.

  1. Challenges?

Service performance comes to mind here. I’ve noticed with the heavier server calls (like Sales Orders), Epicor likes creating them one at a time. If the external system sends 4-5 different orders to create at once and each is 20 lines, it definitely slows down the order creation.

2 Likes
  1. What outside/3rd party systems do you interface/integrate to?
    Salesforce, Kuebix (manifesting), and soon a advanced planning tool that’ll replace MRP/POSuggs.

  2. What is your methodology for such integration (BPM, Epicor Functions, Custom Code, Via Rest, Etc)
    We currently use Oracle Integration Cloud and REST/BAQs for the newer links. We have to move of OIC soon though so looking for a replacement in cases where we can’t use REST.

  3. What were your challenges?
    You mean besides users? :wink:
    As Mr Gehling mentioned, performance when updating or creating multiple Quotes/Orders/etc at once.

1 Like

Mostly answering for my previous company because my current company is still in the planning stages.

1. What outside/3rd party systems do you interface/integrate to?
Numerous e-commerce platforms including Magento, Shopify, Commerce Cloud (Salesforce), and a couple others. We had several brands and several websites, and kept adding more sites and switching platforms.

Third party software (from Kodak) to calculate efficient nesting of orders onto jobs. The nature of printing is that if you have 10 orders for 1000 pieces, you do not make 10 plates and run 1000 sheets each. You make 1 plate that has all 10 orders on it and run 1000 sheets.

Intranet web site where the marketing department could drop Excel files containing contacts from trade shows. This would automatically create customers and orders for product samples.

Command line tools to work around bugs in Epicor’s EDI file formats. (I think one of the bugs may be fixed now; not sure about the other.)

2. What is your methodology for such integration (BPM, Epicor Functions, Custom Code, Via Rest, Etc)
I didn’t have access to Epicor Functions at the time. The web order integration took the form of a Windows service. It would periodically pull new orders from all the websites and put them in Epicor using the v1 REST API, including finding or creating customers and creating deposits. I wrote a client generator for rapid development with Epicor’s REST API.

The job nesting software was driven by BPMs on Order Entry. When an order was marked Ready To Process, it would drop an XML file in a hot folder. When a job was computed and approved, the nesting software would drop another XML file in another hot folder. Another Windows service would pick it up and create a job in Epicor. There were other BPMs that would limit the ways orders could be changed after they were exported.

3. What were your challenges?
Discovering all the steps involved in creating orders in Epicor was more tedious than challenging. I created trace logs of everything that happens when an order is created in the UI, and followed hunches about which calls are important and which are just UI fluff.

Creating deposits was particularly challenging because it uses BOs that are exposed in the REST API but not listed on the REST help page. I learned their names from someone on this forum. I have no idea how they found out. It took a lot of experimentation to figure out how to use that endpoint.

Epicor’s advice is to import all web orders under a single Web Customer. We wanted to create customers in Epicor for every web customer, and link customers from different sites to the same Epicor customer by email address. So I set up a UD table that was keyed by Site, Platform (in case it changed), and External Customer ID. This created a many-to-one relationship between website customers and Epicor customers. If there was any ambiguity about the Epicor customer (multiple customers with the same email address, etc.) the integration would email the CSRs with instructions to disambiguate them. I learned there’s a whole industry around cleaning up customer databases, and I can see why…

1 Like

We do all our external through REST, MSFlow, or custom built middle services where basic auth isn’t supported (i.e. MailChimp)

1 Like

Starting in Kinetic I am planning to pull in data from, and in some cases write to ADP, Concur, UPS QuantumView, Creatio CRM, and maybe some big time vendors like McMaster-Carr for part details like County of Origin, Export Codes, etc.

I am at the starting point in figuring out what data I can grab, and how to go about doing it. So whatever the outcome; I would love to see any Integration notes and how-to’s…

Thanks!

Paul

1 Like

I am interested to know how many companies out there would use purchasing integration with vendors like McMaster-Carr, Grainger, etc…

1 Like

Too many of them require use of EDI. We do biz with a big guy like that and have to transact everything through SPS Commerce.

1 Like

We had some potential customers tell us that not only would they only do business with us via EDI, but they would only do business with us if we had a dedicated EDI department.

1 Like

Hmm… having a dedicated EDI Dept is a heavy ask… wondering out loud… does having Epicor EDI as a business partner equate to a dedicated EDI Department?

1 Like

We almost needed a dedicated EDI department anyway, but it was mostly a combination of our VAN being terrible (very limited ability to search for documents, etc.) and one particular customer who IMO was using EDI incorrectly. They insisted on EDI location IDs being store numbers. When a store moved (which they frequently did) they would use the same location ID for the new physical address. Our VAN’s black box integration would see the known ID and use the cached address in the files it produced for Epicor to import. The same customer also kept using wrong ZIP codes for its stores, causing UPS to hit us with redelivery fees. I calculated that this one customer was 3% of our EDI revenue and over 95% of our EDI labor input.

1 Like

We’re looking into EDI specifically because of Customer and Supplier demand. Lucky none of them are demanding a dedicated EDI team.

1 Like
  • What outside/3rd party systems do you interface/integrate to? We have been trying to interface with IQS TruBox for about 2 years with no luck. Epicor tells us that IQS needs to do the interface and IQS tells us that since we use Epicor they cannot do this due to their agreement with Epicor.
  • What is your methodology for such integration (BPM, Epicor Functions, Custom Code, Via Rest, Etc). In the past versions of IQS we had to use SQL for the information transfers via BAQ’s. Not sure what will be required with TruBox.
  • What were your challenges? Unknown at this time due to not being able to get assistance on trying to install and interface TruBox.
1 Like
  1. What outside/3rd party systems do you interface/integrate to? Various E-Commerce portals for direct to consumer dropship fulfillment for large retailers to eliminate manual order processing.
  2. What is your methodology for such integration (BPM, Epicor Functions, Custom Code, Via Rest, Etc). REST API as supported by Epicor. No direct writes to the database. Also, one BPM required.
  3. What were your challenges? Vendor selection took the most time. Much research was done to select the best fit that was also experienced with Epicor. Also, the setup of server security for REST API which ended up being easier than we thought once we involved our managed IT services provider.
1 Like

Also, prior to the integration we were using the Epicor Data Management Tool to import orders. The DMT templates greatly reduced the time required to identify the required fields for order creation in Epicor and made it much easier to provide the mapping details to the integration provider.

1 Like

We are using the REST interface to integrate to Shopify via eBridge. We were sold on eBridge when they said they were interfacing to the cloud. When we went to install, they wanted us to install their SQL dll and we pushed back. Luckily we were able to use their REST interface and we are just about to go live with that.

For Tim’s question on EDI requirements: my last job was in apparel and the ERP vendor sold the maps and provided flat rate integrations to the ERP. They were effectively the EDI department. (I did the ASN/856 mapping to SAP in a past role so I really did not want that job!) When our salespeople sold to Wal-Mart or another chain, they had canned maps so the implementation was usually quick. Only if we used a field for another reason in the system would we need changes.

1 Like
  1. What outside/3rd party systems do you interface/integrate to? We would love an integration to Files.com. We use them for our cloud printing solution along with other files management.
  2. What is your methodology for such integration (BPM, Epicor Functions, Custom Code, Via Rest, Etc) Almost all external integration is done via c# code inside an epicor function that then sends a rest call to an external rest endpoint.
  3. What were your challenges? I have to use the native .net ftp library instead which has some issues with resiliency occasionally.

You mention custom code, so I assume you’re not operating under the restrictions of Epicor cloud.

In that case you may wish to investigate WinSCP: ought to be a far nicer way to build an integration with a robust FTP/SFTP interface. See WinSCP .NET Assembly and COM Library :: WinSCP

Haven’t used it myself via C# so far, but even from Powershell if provides a way to handle every requirement I’ve dreamt up so far. When I do have a need to do this from C# it’ll be the first option I pursue.

FTP is losing favor these days. It has security issues and we can use https instead. The browsers are almost done deprecating the use of FTP. It requires its own service, which creates an additional attack vector, which was exploited as recent as this year in the popular Serv-U FTP server.

1 Like