Best way to export all bpms from an environment?

I have an Epicor public cloud database that we want to be refreshed with a copy of live. Before we do that however we need to make sure nothing is in this environment that hasn’t been backed up or exported. Is there a clean way to export all the bpms in the environment, just in case we missed something and needed it later? I thought about making a solution, but if I made 1 big solution with every bpm, I don’t believe there’s any way to selectively import the contents correct? If I wanted only one bpm from the solution I would have to import the entire solution and then find and delete everything else that was imported? I also thought about just making 1 solution per bpm or doing a directive export but that is really time consuming as we have quite a lot of bpms. Is there a better way to be doing this? Thanks.

Directive Export lists every service (for Method BPM’s) and tables (data) that you currently have a directive on. If a BO or table doesn’t have a BPM, it doesn’t show up in the dropdowns. So just go down the line in each dropdown and export everything.

There’s also a blank option in the Directive Group Dropdown. That will grab every BPM that doesn’t have a group.

I’m sure you could also copy from the Ice SQL table that stores these things, but I’ve never needed to go down that route. I push BPM’s from Test to Live as soon as they’re done so there’s never anything in Test that can be lost.

In addition to John’s solid suggestion, you can also you the Solution Workbench to do this for BAQs, Directives, Reports, even Menu items.

OK, I figured that those really were the only options. My issue is once you have a big solution you can’t really only partially import it item by item. It seems its pretty much all or nothing. And there really doesn’t seem to be a way to view the contents of the solution before you import it if you don’t have access to the original system that created the solution. Am I missing something or is there a way to do this? I was hoping I could just unzip the solution to at least view the items within but alas it doesn’t work like that.

That is the issue with solutions but it’s a general issue with multiple dependencies everywhere when programming. We see this with library versions in Windows, or DLL Hell as it is called.

So, some thought has to be put into how we customize and package our solutions. Where we get into trouble is when two separate customizations modify a common object (BAQ, Screen, etc.). If only there was a way to do Continuous Integration and Continuous Deployment in Epicor, like say, I don’t know, maybe DevOps? :thinking:

I like the idea of being able to view solution content. The one stopper is that many 3rd programming houses want some intellectual property protection for their work - even if it means an added supply-chain security risk to their clients. :person_shrugging: