Epicor BPM & Functions Design Feedback

Hello Folks,

As we have brought the bulk of screens from classic to the new Kinetic UI we’re in the midst of bringing complex remaining design surfaces such as bpm, functions, baq designers over to be first class web based experiences. Would any of you be willing to share some experiences and thoughts with us on how you are using Epicor Functions and BPM today and what you would like to see in an improved experience for building them?

If you are interested in sharing some thoughts please reach out to me on direct message with your email address plus any feedback you’d like to give beyond this thread.

Thanks in advance for I’m sure the valuable examples and feedback.


As long as you keep the custom code widget, I’ll be a happy camper. :slight_smile:


If we could tone down the modal-ness of the code/BPM windows that would be awesome! That way I don’t need two instances open when I need to get some information from and unrelated screen.


Maintain copy paste. When you have similar tasks from one BPM to another it’s nice to copy paste as base and modify from there. Sometimes it’s easier to just copy paste a BPM flow from testing to production too vs trying to use solution workbench or standard import.

Less constraint on the text available for a block would be nice.
Color full blocks in designer like the corner earmarks we have today.

Do not open a custom code widget as a slide panel please for the love of god don’t hate on dialogs, no one is going to use these tools on mobile dialogs are our friends.


Oh the horror! I wouldn’t have even thought to ask to make sure that doesn’t happen!


(minor) BPM internal variables. This may be more of a bug but; Allow us to delete vars no longer used. Example, not long ago, I copy/pasted a BPM flow and tweaked it to the need if the new BPM --which no longer needed a few of the vars-- but even though I scrubbed the unused ones from all the widget blocks I couldn’t delete them. Error was they were in use. Save, close BPM designer, etc didn’t work to release the “used” flag preventing deletion.

Huge +1 to @Banderson’s request to “tone down on the modal-ness” and @jgiese.wci’s on the code page not being a slide-out panel.

I’ll post more that come to mind.

1 Like

The biggest feature I’d like to see for usage within Epicor Functions is the ability to define custom dataset and or table schemas. While I understand that we can develop or use dynamic / run-time schemas both server and client side for Kinetic applications, the ability to define a schema server side and then have it automatically the same for both with all the intellisense functionality working and proper schema details available for REST API integrations would be way better.

I have often been able to achieve the above by creating essentially a dumb SQL tables and SDK BO but obviously not everyone can do that and it’s far from ideal.

Even if we could setup BAQ schemas as input / output parameters that’d be great. Particularly if there were simple Epicor Function widgets to call BAQs and map the results into the variables too.

1 Like

Add / Bring Back / Keep some tabs…
Expanding Panels are nice enough but for these tools we need a little bit more organization and the tabs help with that.

Have the ability to open up the code in a different “tab” (browser tab) and continue to explore / user the application would be a huge win ala @Banderson (modalessness)

For the custom code editor if you could just take the web based VS Code Editor and embed it right in there nobody would be upset, its fast reliable, and amazing and “free” (as in beer)

For functions specifically I wish the UI for handling “security” (adding tables, services, etc) would be less clunky and modular. Maybe an auto complete list of checkboxes or something of that sort. If you need to add 6 tables to a function right now you got to select click and search for each table one at a time its time consuming.

On BAQ’s from the UI we’d love the ability to copy / clone a Subquery (not sure if this is merely design or more functional) I believe the bits on the back end are there already just need a UI that will allow it. All the time we need a very similar subquery and its a pain to drag it all out and re-connect the stuff you just did a minute ago. Similarly would be bring subquery from another query (copy in)

For BAQ’s keep the Query Phrase it helps to visualize the quasi SQL that the query will run as.


I’m not going to comment at all on what these experiences will be like publicly here, but yes you will absolutely be writing custom code. This is not like application studio where we have a whole new paradigm to run the application a function is still a function and a bpm is still a bpm running in the same way with the same features.

And if you would like to know more well… you’ll have to DM me and get involved as we take your feedback on designs!


Intellisense suggstions would be great.
IE, if I write

PartTableset pTS = new PartTableset();

and I forgot to add the using statement of

using Erp.Tablesets;

have a suggestion pop up like “Yo, you’re probably missing this. Click me to add it.” and have it add the code (either the using statement or the rest of the namespace on the variable declaration).



Is there going to be an early release program to help test it out? That would be a lot of fun.

1 Like

And let me add some voice to one of the top ten Epicor Ideas requests to make things more DevOps friendly. It would be nice to take a page from the Azure site and provide a way to export/save items to source control from the GUI.

Later, provide the ability to deploy code from the repository with the Git hash in the system so the users know which version is actually installed.

  1. Definitely let me keep working in Epicor with a BPM open, rather than locking me out (biggest gripe currently).
  2. Allow copy/paste - both full widgets from separate BPM’s as well as individual conditional statements within the same condition widget (i.e. You’re added 6 similar conditions in one condition widget with a small change in each - it’d be great not to have to configure each statement from scratch.
  3. More detail in the error messages when compiling. I’m guessing what line 103 & 112 is… Can you add text in the error message with the widget name and condition statement that is creating it?
  4. Import/Export from the overflow menu instead of a separate directive import and directive export process that’s independent of method directives maintenance (similar to BAQ’s).
  5. Combine Method Directive Maintenance and Data Directive Maintenance (they are effectively the same UI, almost…).
  6. Improved search. Currently my M.O. is to open Method Directives Maintenance, select “All” for group, return all rows, search. Then click on sort for the BO column, and then select the BO’s and methods I need. It would be nice to search with text “contains” on the BO (dropdown list of the ones that exist as BPM’s?), as well Type (Pre/Base/Post/Std/Intrans), directive name, description.
  7. Add a date created and date modified field so I can search by the latest one. Likely that I’ll be modifying one of those, rather than one I created 5 years ago.
  8. For import, give the option to import it ‘Not Enabled’ (Currently I’ll export it from PILOT where it’s enabled, then import into LIVE, and immediately need to make some changes in the email message or something similar).
  9. For import, give the option to overwrite (instead of making a 2nd copy where it isn’t clear which one is the new one). Having a date created field would help.

Pasted into a DM also, if that’s how this is being organized…


@bconner Let me say how we all (I’ll take liberty and say ALL of us) appreciate you even creating this post and seeing us and our pool of resources as a tool in your toolbox. Thank you!

  1. As others have said being able to use the rest of the application while in the Code window of the Function designer would be huge QOL. I find myself copying my code out to VS code, doing my coding, and then pasting it back into the function custom code block to check for errors because I need to reference things in epicor as I work.

  2. I know this might go against the philosophy of the function library. But I would really like to have the option to be able to publish and demote on a function by function basis instead of just the entire library.

  3. I haven’t checked on this since E11 release but there was a bug where if you were calling a Function from a BPM in custom code you couldn’t have more than 7 Output Paramters. If this isn’t fixed it would be nice to not have this limitation as I’ve had to do somethings inside a BPM that I would’ve rathered done inside a function because of this.

That has to do with how tuples work.

1 Like

This one is HUGE in my opinion… I have made this mistake 100 too many times. Having two versions of the same BPM running can just be a pain.


Perhaps include the ability to have a data structure (I.e. an Array or List) as an out-of-the-box variable type.

When parsing multiple things it’s a pain to store details in a delimited string and then have to parse them into what I want afterwards.

(If this isn’t a thing already!)


Menu Maintenance: SEARCH box for menu items. It’s a real PITA to search the tree to find the menu item as there is no ability to search for it.

Intellisense in updatable BAQ BPM designer. Also in Functions if it’s not there yet. :wink:


I’m a beginner to BPM’s but one thing I find missing is the ability to comment and add notes to a BPM. Even a large text field would be fine, so that you could add to the notes/comments history with changes you make (or someone else makes) over time.

8/2/2021 - JMS - Added code block to … to fix an issue for…


1 Like