Advanced Printing

Any good links or documentation about using and configuration of Advance Printing or videos. I have the SQL Server Reporting Services from Epicor University and that has a little info. I am looking for some basic info about this new/changed feature in Epicor. Basically info such as if I email an Invoice what email address does it catch…primary billing contact? Do I have to set BPMs up for all emailing?

Not a lot of good documentation on APR, which is a common frustration. It’s pretty much a watered down version of a BPM workflow. Couple tips; only 1 break style can be applied to each report style and after you’ve defined your break table, you cannot change it (can’t change the break table, I mean). The email address can be any that you’ve defined, as long as it’s a part of the RDD. The SMTP set up on the company config will be used to send the emails.


I already have the SMTP setup on company config. Sounds like if I want to email anything i have to have a BPM.

No, the APR will perform the emailing step via a widget inside the APR workflow.

So If I have an AR Invoice Group and Click Print then select Email. Will it automatically email the each invoice to the customer? Or do I have to set something up? I was going to test it and just change all the customer emails to me (of course in TEST) but wasn’t sure what email it triggered. Does it prompt you before email is sent? This is where I am stuck.

Hard to say without seeing your workflow…If a routing enabled report style is printer OR print previewed, regardless of if it sends emails or not, you will get this message:

If you click Yes and the break style has an email node AND it met whatever conditions where prior to it, it will attempt to send the email. If you click NO, it will ignore the routing style all together and just print/preview the report style.

Agh…I know what I missed. I have to have workflows set up to use this feature to email.? I have none set up now.

Yep. I’m trying to figure out how to share my documentation, hold please

Thank you

Advanced Print Routing Setup

Scenario: Send Individual Invoices to Each Customer
A new report style should be created that is clearly marked for routing

The Break Table is the dataset used for the breaking. Typically this should be a header level table.

For example, using InvcHead on an ARForm style would allow the breaking to occur on each unique invoice.

Within the Design of the BPM, it’s a good idea to create a condition before breaking.

In this case, I’m going check both the “null” and “empty” string conditions for the Customer Email Address to make sure they are neither before proceeding with the break attempt. I also recommended selecting the “Any Rows” condition rather than specific rows (added, updated, modified, etc.) UPDATE: Use contains @ instead of null/empty

Create a Break node and select the column to break on. In this case, I’m breaking on InvoiceNum

Create and configure the Send Email node. In this case, I’m hard coding the “to” as myself and the from should be a spoofed email. Keep in mind this uses the SMTP settings defined in the company. The SMTP Settings must allow for anonymous authentication, so you cannot use the Office 365 SMTP settings.

I also discovered that you must connect the break to the start node and place your condition after. It will fail otherwise.

Interestingly, I needed to have my Conditional Check on CustomerEmailAddress check for "contains" @. It did not work for null or blank.

Scenario: Send Group of invoices to Customer

Created Style, Break table is InvcHead.
First Break on CustNum, then Group By Cust Num

Email Validation checks any row contains @.
The result is a single PDF of all invoices that it identified.
An interesting usage might be to have a group by Report Style that sends a group of invoices that are all over 90 days old, for example.


Thank you SO MUCH!! It is clicking now.

1 Like

A very important hint …

You cannot change the RDD used by the report style, once it has any break routing added to it.

You can change the actual RDD (just can’t select a different one). So at a minimum, if your Break Routing style uses a built-in RDD, make a copy of it and use the copy for the style’s RDD.


@Aaron_Moreng - Thank you! You should submit that to Epicor to use for an APR education course, and they should give you a year of free maintenance :wink:


Thank you I got it working perfectly.

1 Like

I’m sorry if this is overkill because @Aaron_Moreng did such a great job with his example above. But here are some instructions that I had pulled together (modified for this site with names removed to help protect the innocent - I hope! :sunglasses:) documenting my Purchase Order Form Breaking and Routing Rules.

One thing I ran into was our Buyers wanted the Breaking and Routing Report Style set as the default and that would be a problem for any other Users wanting to run a POForm. So I created a Security Group for the Buyers and assigned them all to it and that becomes my first check in the Breaking and Routing Rules. If the User belongs to that Security Group - Process the Breaking and Routing Rules, if not, then just run the User Action only. This is documented in the instructions below.

I hope this helps someone out there! :slight_smile:

E10Help_Breaking_Routing_SSRS.pdf (2.4 MB)


Great help guide @ERPSysAdmin. We had the same issue with our Purchasing team, they often just want to “preview” the PO before they email it off so we cheated. I made a copy of the style; one where the routing is disabled and is the system default the second with routing enabled named “Email POs”. This way no one “accidentally” emails the suppliers --happened during testing :scream:-- as they have to manually select the report style.

1 Like

Hi Everyone,

I wanted to add to this post some things that I’ve run into and noticed while working with my APR Breaking and Routing Rules.

I recycled my AppServer today (I didn’t restart the Task Agent, only the AppServer) and suddenly my Breaking and Routing Rules stopped working and I was getting this error in the System Monitor:

So I went in to my B&R Rules to look and see if anything had changed or was broken (links, etc.).

WARNING!!!: Sometimes when you go back into your B&R Rules you get this error:

And your links disappear!!! And you have to reconnect most of the elements again. :confused:


Once I reconnected all of the links I clicked on the “Validate” button and I (for the FIRST time) ran into this error: The Break element is not connected to the Start element.


As you can see from my APR instructions above, I’ve never run into this error before so why it is suddenly a problem, I do not know? We’ve been using these APR B&R Rules without the Break Element being connected to the Start element for months now without a problem. I think it is probably because I never pressed the “Validate” button. Heh… :blush:

Now that I have pressed the “Validate” button and I try to click the “Enabled” checkbox I am getting this message:

So I guess this is a warning that if you want to have a check like I do for the Security Group before you trigger the Routing Rules then you probably don’t want to click the “Validate” button to trigger the check of whether the Start element is connected to the Break element. Otherwise it won’t work. I wish it didn’t have to be this way because I think having that check before the Break element is helpful.

Thankfully I had created a Solution file for my APR Breaking and Routing Rule and once I had it working the way I wanted it to I exported the Solution. (I highly advise this!!!)


I re-imported my APR B&R Solution to restore my B&R Rules/Report Style.

Then it suddenly hit me that my B&R Rules were working before I recycled my AppServer and so I not only Recycled my AppServer again but I restarted my Task Agent and my B&R Rules started working again without error.

Whew, that was a lot to say but I just wanted to share my experience and warn people that these things might happen! :warning:


So in short they will break if you only recycle your app server you need to recycle both? If this is correct sounds like a bug??

I’m honestly not sure if it was because I didn’t restart the Task Agent along with Recycling the AppServer? Or if this was just a fluke thing.


I am curious it was my impression recycling the Appserver for certian issues is all we needed to do and it is not noticeable to users but if task agent needs to be cycled too that takes longer.