Function and Function Library become read-only?

Agreed. But at some point they have to right? Otherwise, how could one backup/restore an environment or rebuild BPMs/Functions? I think we as users made the decision to rely on that storage, which frankly is on us. The same can be said for SSRS reports with Microsoft. They store the reports but if that SSRSDB is corrupted in some way, the user loses the reports even though we may have had access to the RDL files at one time.

This is one of the main reasons I have been pushing DevOps practices up on the Idea list.

Where BPMs and Libraries are really stored.

As for source control, I’ve had an idea for a couple of years now. We can retrieve EVERYTHING in Epicor with REST. Kinetic depends on it so I don’t see that changing. You get a nice big fat Json blob for BPMs and Function libraries. These text blobs will store well in Git which means each version of a customization with have its own hash ID. Now we have a way to upload this customization and add the hash ID to the title programmatically to know exactly which version of code is running in Epicor. Formatting the Json properly before placing it in Git would give users the ability to actually get a diff against changes too.

And using REST here is important because the same processes for gaining access to source (instead of looking at server folders) works for cloud environments as well has on-prem environments . It also works where the Ops team wants a clear delineation from the Dev team, i.e. SOX controls need to be in place to prevent direct updates to production by the Dev team without some review.

What I want from Epicor is to provide the automation tooling that promotes DevOps ideals (mostly done) and for them to adopt these ideas in their own practices and promote these processes with the user base.

DevOps consists of people, processes, and technology and the hardest to change is always the first one.