How to mass export\import all custom things?

I am looking at an environment that has hundreds of custom things. I would like a way to backup all the custom stuff so I can revision control it all outside of Epicor and restore it anywhere.

I want to bulk export\import everything!

  • Screens
  • Customizations
  • Personalizations
  • BPMs
  • BAQs
  • Reports
  • Dashboards

Everything I have read and everyone I have asked so far says you have to export or import all of these items one-by-one which seems absurd to me. I’m sure many of you have quite a long list of changes that have been made to the environment. How do you manage it all? Version control it? Work with multiple developers? Restore to a previous version?

You forgot:

  • UD tables
  • Quick Search
  • Open With …
  • Sys Agent Schedules

And probably many more.

BTW - “Reports” would have all of the following

  • BAQs
  • BAQ Reports
  • RDD’s
  • Report Styles
  • Financial Report Designers

And personalizations can change minute to minute, even if it is just changing a column width or window size.

1 Like

Context Menu Additions

Look into Solution Manager.

1 Like

Solution Manager is a deployment tool that can help, but if Adam wants what I want, it’s the same Epicor Idea I’ve been punishing this group of users for years now.

2 Likes

Thanks Patrick. Unfortunately, Solution Workbench leaves much to be desired. It’s painfully slow, and there aren’t any Select All buttons throughout the process. Then it asks you a question for each of the hundred things you selected with no Yes to all option. Once built, this “solution” is invalid as soon as something new is added. You have to know what to add when you want to run another backup. This would be a poor experience in 1998. Here in 2022 it’s unforgivable.

EDIT: When I ran my “Build solution” command it ran all night and never completed so I have confirmed that Solution Workbench is complete unusable for this purpose. I’m sure it’s fine for it’s intended purpose: a single solution. It cannot be used to manage all of your solutions in one easy package.

Any luck on a mass export solution? We are upgrading and doing a bit of spring cleaning, which a mass export tool would be beneficial.

I spoke with support and they had nothing to add. The answer is “Use Solution Workbench” until they implement the idea Mark Wonsil is talking about.

Cloud customers clearly need an export API to gain access to all of their custom objects programmatically. I recommend complaining to Epicor for squeaky wheel effect. They need to know that it’s important to multiple customers. So the more people talking about it, the better.

I do think it would be nice to have a comprehensive tool.

That being said, unless you are a MT client, there aren’t really any impediments
from building it/exporting it ourselves.

When I say “cloud customers” I am talking about their SaaS both MT and not. The database lives in the Epicor cloud. I don’t have access to anything except their API.

Same here, how has that stopped you ?

You can pull pretty much everything with a BAQ, and the rest with a UBAQ BPM.

Hold up, did you read this thread? If so, can you tell me how to export these objects with a BAQ?

  • Screens
  • Customizations (Custom Menus)
  • Personalizations
  • BPMs (the “.cs” files)
  • BAQ (the “.baq” files)
  • BAQ Reports (the “.xml” files)
  • RDD’s (the “.xml” files)
  • Report Styles (SSRS, the “.rdl” files)
  • Financial Report Designers
  • Dashboards

I’ve only ever pulled data with a BAQ.

Yes.
Some may require some custom code, but most of it (if not all) can be pulled.
Some of it may be easier to pull db rows, but even the files can be pulled.

And Yes, I read this thread. The gist of it I got is we need a custom tool to
do it all. Which I certainly agree with.

Whether you can get it piecemeal is a different question :slightly_smiling_face:

Ok, you are the first person to suggest this. Can you elaborate? What table would I pull RDDs and SSRS reports from?

This is an example of some files that are easy to version control with git if I can pull and push them. I am currently downloading them and uploading them one at a time. I would love to pull everything all at once to quickly sync during report development.

Maybe I should clarify a bit.

Most all of it can be pulled in one way or another, but sometimes significant research
must be done to figure it out.

I don’t usually work with reports, as I have someone else that does that, so I couldn’t answer
that off the top of my head, I’d have to look into it.

Some of it can be pulled as rows. And their relations.
Like make a baq, pull the rows out, and they can be reimported with DMT or a dashboard.

Some things can be pulled as datasets. Say BAQs, you can pull the BAQ Designer Dataset,
the Query Diagram, the attached BPMethods, and those can be reimported relatively easy.

Some stuff they are already working on moving the export to the cloud.
Let’s take a look at BAQs for example again.

They aren’t done with it yet, so it doesn’t work for Updateable BAQs with BPM Methods yet,
but this function exist: BAQDesignerSvcContract - ExportBaq

and here is an example of how it could be leveraged to get actual .baq files:

//Snippet from a BAQ custom action
  using (BAQDesignerSvcContract baqDesigner = ServiceRenderer.GetService<BAQDesignerSvcContract>(Db))
  {
      List<ResultsUbaqRow> selectedRowsList = queryResultDataset.Results.Where(row => row.Calculated_Export == true && row.RowMod == "U").ToList();
   
      queryResultDataset.Results.Clear();
      
      Dictionary<string, string> options = new Dictionary<string, string>(); 
   
      foreach(ResultsUbaqRow row in selectedRowsList)
      {
          if(row.QueryHdr_Updatable == false)
          {
              List<string> logText = new List<string>();
              
              string queryID = row.QueryHdr_QueryID;
              
              //Does not yet work with updateable BAQs (YET). Have to code it yourself and looks like a pain in the ass. So I didn't do it (yet).
              byte[] baqFile = baqDesigner.ExportBaq(queryID, ref options, out logText);
              
              ResultsUbaqRow newRow = new ResultsUbaqRow();
              
              BufferCopy.Copy(row, newRow);
              
              newRow.Calculated_LogText = String.Join(Environment.NewLine, logText);
              newRow.Calculated_Export = false;
              newRow.Calculated_ExportedData = Convert.ToBase64String(baqFile); //Base64 Encoded ".BAQ" file data (Convert to Bytes before writing)
              newRow.RowMod = "";
              
              queryResultDataset.Results.Add(newRow);
          }
      }  
  }

So no, unfortunately my statements aren’t going to be magic for you.
We need the tools, whether we build it ourselves, or wait and hope.

Tooling like this comes at a significant time cost.

I’m just saying it can be done with the tools we’ve got.
I just want people to know that, not so we don’t push for the tool, but so
we know what’s possible in case we need it NOW.

1 Like

I agree with Kevin, but, always looking at the brass ring :roll_eyes:, I want more than just a tool to import/export. Epicor is right. We have Solution Workbench for that, and it’s doing the same logic that Kevin shows above more or less.

What I want is to make it easier to implement and maintain our ERP system. This includes knowing what changes we’ve made (source control), what changes Epicor makes at every update, testing our code quickly as changes occur, installing customizations and updates in a repeatable and secure way, observe our system to look for breaking changes not previously found or due to environmental reasons (Windows/SQL Server/Browse updates…) Not asking for much - just changing the way we have thought about software for 30 years. :rofl:

If you want that too, leave a comment to that effect on the Epicor Idea. Don’t really need the votes. If you’re Epicor and you want your customers to be on the most current versions, think about it.

2 Likes

classic movies shark GIF by Coolidge Corner Theatre