Integration Doc - Beta testers needed

(Bart Elia) #1

I had requests post Insights for this (internal and external).
A quick overview of the three major approaches to doing integrations and some code samples.

I see a few hundred other examples being needed and cataloged but I wanted to do a quick comparison between the three to start. It’s code so there will always be differences of opinion. If you express yours I’ll take that as a todo to incorporate trade offs and concerns into the decision process.
I’ll probably be moving to Github in the near future but for now just pushed it to my one drive.

This is 4 hour plane flight quality so abuse and but be kind. :wink:

TIA for the feedback…
Integrating with Epicor ERP 10.docx (130.6 KB)


Rest API for Custom Application
Insights Extended Ed courses
VB.Net API application from E9 to E10
Web based order entry
GetNewQuoteHed fails
E10 in Visual Studio 2013
C# external program insert AR data
(Haso Keric) #2

Since REST uses standard HTTP it is much simpler in just about ever way. Creating clients, developing APIs, the documentation is much easier to understand and there aren’t very many things that REST doesn’t do easier/better than SOAP.

REST permits many different data formats where as SOAP only permits XML. While this may seem like it adds complexity to REST because you need to handle multiple formats, in my experience it has actually been quite beneficial. JSON usually is a better fit for data and parses much faster. REST allows better support for browser clients due to it’s support for JSON.

REST has better performance and scalability. REST reads can be cached, SOAP based reads cannot be cached.

With IoT devices gaining popularity making use of REST comes almost out of the box with every framework nowdays. If you also do MicroServices, Domain Driven Design, Modular Design you will find REST to be the best choice.

I personally am very thrilled about the REST API and I dont run my WebApps on Windows but rather on Linux with nginx/apache so I dont have to try and deal with somehow knowing about .dll’s of Epicor by using REST. If you decide to change the logic of a BO you will still probably offer API versioning and you wont break my Web Apps, Mobile Apps if I use the REST API which is another win.

Lastly, since you guys utilized OData you have a solid foundation.

I could probably use today and make use of the REST API of Epicor and get going fast with JavaScript =) or Raspberry Pi with a LCD Screen under 200$ and a custom UI to create a Employee Time Clock which could be mounted on the wall =)

(jayaprakash prabhakaran) #3

could you guys provide better insight about configuring network binding protocol please??
my current test system in net.tcp which is UsernameWindowsChannel .

to start trailing REST API i am changing the endpoint as HttpsBinaryUsernameChannel. ticked the Enable Restresourfull checkbox and deployed. regenerated data model.

but when i connect to appserver, system says below error. how to handle this?

There was no endpoint listening at https://epicor/Epicorresttest/Ice/BO/UserFile.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerExceptinner exception error.txt (2.6 KB)
ion, if present, for more details.

(Bart Elia) #4

Have you read the Bindings section in the Help system? Once you have that overview you will probably understand a bit more.

No binding, nada.
It uses vanilla http(s) through WebAPI.

REST does NOT go through the svc files as you attempted above. Look at the REST help to get you to the root ‘Help’ page (myserver/myapp/api/help)

(jayaprakash prabhakaran) #5

bart , i followed rest implementation guide

after ticking “enable rest resoursefull…”, deployed the app,regenerated data model and application server is connecting. …

but when i goto epicor/e10rest/api/help

getting response as “site not reachable”

any troubleshoot guide please?

(Bart Elia) #6

Did you go thru the https setup perquisite?

We use vanilla IIS and that applies to ssl as well.

Add cert to server
Add https binding to site
Enable ssl on the application?

(jayaprakash prabhakaran) #7

ahh ok. so, creating cert & binding to the site is what i m missing. i thought they are only applicable to ssl

i was following REST Implementation (Technical Preview) section out of the epicor help guide. it did disclose anything about cert. probably, i am using wrong guide. should have used the technical guide from epicweb. anyway, i will create one and keep you posted.

(jayaprakash prabhakaran) #8

i followed the new install guide 5.1.1 section, and created the cert and binded to the site.

when i navigate to https://localhost/epicorerptest/api

browser throws warning, and prompting for login credential (i am domain admin).
however, even if i enter the credential, it again pops up the same dialog box.

any pointers in handling this issue?

(Haso Keric) #9

should be your Epicor username/pw ex: manager/manager I believe.

(jayaprakash prabhakaran) #10

thanks @hasokeric and @Bart_Elia … reached the help screen now… i have to run the ie in admin mode. yes, its epicor login credential… game on . excited.

(jayaprakash prabhakaran) #11

bart, i used your program replaced server root, login credentials, company details .

. console throws exception

"The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. —> "

i think its to do with self signed certificate … is there any workaround to suppress this ?? or any guide/reference/limks in solving this issue?

Note: i have already added this site to my trusted zone and the certificate is in my trusted folder.

(Bart Elia) #12

Search msdn. Export key, import to trusted publishers or something. I’ll find the article when the grandsons are not torturing me…

(jayaprakash prabhakaran) #13

i have done that @Bart_Elia … imported the certificate and added to my trusted certificate list … still didnt resolve the issue. i will also try to work out something in c#. take it easy and enjoy grandparenthood …

(Bart Elia) #14

Which example were you running to get that error and which binding are you running?

Anything binding can be used for the Impl as long as the client and server match.
The SOAP REQUIRES BasicHttp or SOAPHttp at the server.
REST does not use bindings so doesn’t care.

Which are you having issues with?

(Bart Elia) #15

Note #1 - Ensure setup instructions are pointed out. I assumed since the same setup is used as we have had for years I could omit setup.

Lessons learned. Will update when off pop pop duty :wink:

(jayaprakash prabhakaran) #16

I’m trying REST … it debugs through prepare headers method, exception raised at query method at the line sendAsync.Result,

(Mark Damen) #17

I’ve just done the setup for this on my test system. I was able to login once to https://EpicorTEST01/ERP101600ChillStore/api/help, and from another PC as well (had to create the firewall rule for port 443). Now though, whether on the server or the same PC that was able to connect remotely, I just get an HTTP 500 error. I’ve rebooted the server, but still the same.

Any clues? Nothing changed between it working and now not.

Many Thanks

(jayaprakash prabhakaran) #18

Hope you have installed the certificates in client pc, and Restart IIS, add the site to trusted zone in ur client machine … run browser as admin …

(Bart Elia) #19

500 error is what everything is mapped to all the time - this was discussed at Insights how everything is mapped to it for a result code and details are logged in Server Event log - known limitation for now. See the article ‘Flight Data Recorder’ up here for details

(Mark Damen) #20

I got it working again by playing with the authentication methods available on the virtual folder in IIS.

Anonymous Authentication was already enabled
I enabled Digest and Windows auth, and now it shows me the help, and I can try using the examples given by Bart but I now get a failure because the password is expired.

We don’t use Epicor usernames and passwords usually, it’s configured to use Windows auth and SSO. I have tried on my test system allowing net.tcp and HTTPS with the option HttpsBinaryUsernameChannel. What does my client config file need to look like, to be able to connect to the app server using https to reset password? When I try connecting now, I immediately get an error:


My config file key lines are these:

Many Thanks