How To: Making Your Own Reusable Combo

In my quest to convert a screen from classic to Kinetic, I ran into an issue: UD tables don’t show up in the reusable combo drop down type.
I was able to stub in data to make it work (Shown below), but that sounds like a pain to do every time I want to use this data. How did Epicor do it? I found out and replicated theirs and you can too!

Here’s some screenshots of how to stub in the data:



That’s a lot to type in every time and a lot to remember. Let’s only do it once from now on!
Here is where the combo JSONC files live: \\wwwroot\SANDBOX11\Server\Apps\MetaUI\Shared\combo

  1. Create a new folder in that directory; I named mine “UD03.UD03Combo” to stick with the format that Epicor used.
  2. Within that folder, create a subfolder–I named mine “default”, but there’s nothing stopping you from creating multiple configurations for different needs!
  3. Within the default folder, create file called “combo.jsonc”.
  4. Open combo.jsonc and fill in the data below:
{
  "$schema": "https://schemas.developer.epicor.com/schemas/v1/combo.json",
  "contentVersion": "1.0",
  "imports": [],
  "combo": {
    "comboId": "UD03.UD03Combo",
    "svc": "Ice.BO.UD03svc",
    "svcPath": "",
    "textField": "Character01",
    "valueField": "Key1",
    "sort": "Character01",
    "retrieveColumns": [
      "Character01"
    ],
    "tableName": "UD03List",
    "filters": [],
    "required": false,
    "isEpiReadOnly": false,
    "appendList": false,
    "isDelimited": true,
    "parameterName": "UD03List"
  },
  "patch": []
}

Everything within the “combo” element is fair game!

Once done, close Epicor and go back in. Your new combo should be ready to use!

image

image

If your combo does not show up, you may need to run conversion 191 from the Conversion Workbench.


Additional Combo Related Info:

Adding multiple filters on a single combo:
image

These can be added to resuables as well via the filtersAppend:

"filtersAppend": [
                    "RoleCode = 'PM'",
                    "InActive=false'"
                  ],

image

12 Likes

I like it! Nice work!

1 Like

Patches can potentially clear out these custom combo files. Back up accordingly!

@Ishkaran do you know if there’s a way to maintain these through patches or do I have to back them up and paste them back in every time?

Not a huge deal in production because the update frequency is low, but kind of a pain in our sandbox where I’m updating it every time a patch comes out.

@hmwillett Sounds to be a bug to me… Those entries should be retained on upgrade.

How do you back them up prior to upgrade?

Can you please run this SELECT query on the ERP and let me know what do the results look…
select Key1, SysCharacter01 from ICE.SysConfig where Key1 = ‘KineticUseFileSystemNotDB’

Well, we have not backed them up prior to this patch, but going forward, we’ll copy the combo folders we created to a local drive outside of the Epicor folder so we can paste them back in post-upgrade.

Here is the result from the query:

Key1 SysCharacter01
KineticUseFileSystemNotDB false

@hmwillett Can you please record a bug with support for this? It seems that the Reusable Components are getting saved to the MetaUI File System instead of DB (and so are the Kinetic Converted Dashboards & Reports).

When KineticUseFileSystemNotDB is set as false, it is expected that these entities are saved (aka created) in the DB (ICE.XXXDef table) and get retained post-upgrade.

Sure, but before I do, my question would be am I creating that reusable component in the way that Epicor would expect?
Is there a way to do it within Epicor that would save it to the DB vs me manually creating the folder within the MetaUI directory?

There is just one way to create it - the framework decides the storage medium on its own.

So, by me creating a custom folder in the MetaUI directory, the framework should be smart enough to know to add that to the XXXDef table?

Just a FYI: The default to set this to “True” was only in one of the more recent patches. When I updated to 11.1.100.8 from 11.1.100.4 build it was set to “True” but previously it was set to “False” by default for all my installs.

There is a Conversion Workbench step that does this if it doesn’t automatically do it. Just, of course, be careful to backup all the server application folders and the database before running such processes (unsupported AFAIK).

1 Like

@Ishkaran do you know if this been disabled in the last patch? We’re on 11.1.100.8 and I created a custom reusable per the instructions and it’s not showing up. Even bounced the App Server just in case that was needed.

image

Indeed, this is why we can’t have nice things. :wink: At least the manual way works just remember to set a EpiBinding. Forgot that one myself at first.

image

@Randy @hmwillett Gentlemen - That is a bug :frowning:

Known workaround (for users who have access to Conversion Workbench): Run conversion workbench sequence # 191 after you create the reusable components.

2 Likes

And just like that, they’re back! Thanks!

2 Likes

Sorry to necro this but I was wondering what the purpose of setting the ‘Parameter Name’ to UD03List is? It seems to work without it??

Just replicating what Epicor did with theirs. If it works without it, then by all means leave it out.
Likely, it’s because that’s the table that’s returned in the JSON packet when the REST call is made and Kinetic is using that to do something or another.

How do we do this for the Child table? I mean I was able to replicate it for UD103. But how do we do this for UD103A? I changed the Table name but it still gives me values from UD103…