Bartender - Changing Integration Steps - Opinions Wanted

Good morning everyone.

Currently, we are still using a file drop system for Bartender via FTP.

I have already built a solution using the Bartender REST API, to be called from Epicor to my plant.

Epicor → Custom C# Minimal Api (Mine) → Bartender

It works well in testing, but we haven’t moved it into production.

Well today, I was tasked to move up the priority on moving it over, after having
ongoing problems with the FTP solution.

Putting it in place is not real difficult, just gotta do it.

But now, I’m having second thoughts, and I wanted your input.

Here’s where I am now:

  • We are definitely moving from the file drop solution.

  • We will be using the Bartender REST endpoint for printing, no folder monitoring.

My options now are:

A: Go with the solution I’ve already made, which is an Epicor Function, that calls my API,
(Bartender REST is not secure), which calls Bartender for printing.

or

B: Create a polling solution on the Bartender server, that polls Epicor, via REST, and a UDTable,
and that will call Bartender via REST.


What say you? I can see advantages and disadvantages to both.

I went with Option A. There isn’t anything being sent over the network that isn’t going to be printed on a label for everyone to see anyway. Note: security is not my specialty. Take that as you will.

1 Like

I like your queuing idea of solution B, but I also like the event driven concept (and the security) of solution A. So, maybe something like write the file to the UD table with a status, submitted, and printed times. Upon new or udpated record, call your function. When complete, update the status and print time. This would then allow you to reprint easily and monitor failures.

Just a thought… :person_shrugging:

1 Like

I’ve got it all secured pretty tight. (At least the comms), I just worry about exposing services at my plant.

1 Like

I’d lean A, one as it’s already done/mostly-done. I’d be interested in seeing your solution whichever you do as we’re looking to move off the file-drop solution too.

Ditto @Randy. While I’ve got a solution for Receipts already running, we’re expanding it to job receipts and shipping out and I’m reworking the existing implementation to be more generic and also moving it from BPM into functions. The latter wasn’t available on the E10 version I developed it on.

If it’s only ever going to talk to Epicor, seems pretty easy to whitelist that and block everything else. Though, again, I don’t deal with security, so I could be talking out of my ass.

1 Like

Does Bartender support REST v2? API and Access Scope can help control risk.

Let’s see, my minimal API is HTTPS, has a real Cert, has an API Key, restricted by IP,
and only shows swagger page to internal IPs, and I can turn it off.

I don’t know what else I can do there.

I don’t understand the question ?

Rest v2 is Epicor’s 2nd version of its API and not really an industry standard.

Just so you all know, I’m a security :eggplant: on other forums too. :rofl:

I’ll share solution A, even if I go with B. (If I go with A, I’m not going to code B :rofl: )

I’ve got to go back and look at my minimal API I coded, as it’s my first one, some stuff
can probably (likely) be done better.

All good stuff. You might also add authentication and authorization to explicitly control access to the API with all the goodness that an OAuth provider could give you. While label printing is not super critical, it could stop a prankster from printing rolls of :eggplant: all over the shop floor over the weekend…

I really don’t understand that at the moment, but I’ve taken other precautions to hopefully prevent the other.

I do not plan to send any critical data over this service, but if I do decide to make services that do,
I will be looking at that.

1 Like

Sorry, I was referring to Azure AD so you could use the user’s Epicor credentials (if also using Azure AD) to pass along to your API. I’m not as familiar with Epicor’s Identity provider to know if one can do the same. @olga may shine some light on that though. :wink:

Yes, a label printer service may not need that level of security but you will eventually build an API that does.

1 Like

Yes, Yes I will.

1 Like

Ok, so here is what I have decided to do.

I’m leaning toward option A, as it seems like the risk is minimal with proper precautions.

I will go ahead and do a code review on my man in the middle (my minimal api), to see if
I’ve missed something.

1 Like

Can I know the premise on this decision? why you want to move away? We are curently using that way for our printing of labels, and have (well so far) no intentions of changing… We need to upgrade to a more recent labeling system (either Bartender or NiceLabel (which we currently use but very old version)) .

We currently manage our printing of labels via a .Net app which shows , given a job number, all the labels generated, with printed date, then scan date etc… When we print the selection of labels, a file is saved at a specific drive location and gets picked up to print.

Works very well…
so that is why I just wanted to know why you guys want to move away from it…
It may change my view on our current way…:wink:

thanks
Pierre

The main reason is that there is no logging with a file drop where hopefully with a REST solution we’d have better logging.

  • Lucky you! - Ours does work well most of the time, but we have increasing amounts of problems.
  • Inconsistent pickup
  • No easy feedback
  • FTP is insecure
  • Ease of logging
1 Like

And file shares are one of the first attack vectors (for lateral movement), so if you can eliminate those…

1 Like