Filtering a “Reason” ComboBox based on a read-only “Status” ComboBox in AppStudio

Hello everyone,

I’m customizing the Sales Order Entry screen in Epicor Kinetic using AppStudio. I have two user-defined dropdown fields:

  • UD_OrderStatus_c (“Status”) – this is read-only (pre-populated by BPM or default logic).
  • UD_OrderStatusReason_c (“Reason”) – this needs to show only the valid reasons for the selected status.

My goal is that when the Status combo changes (or on form load), the Reason combo updates its list of values accordingly.

I plan to store the valid mappings in a small UD table.

Question: what is the supported way in AppStudio Kinetic to create a dependent (cascading) combobox?

Thank you in advance for any pointers or example snippets!

Best regards,
Anton

I’d use the User Codes instead of a UD table. You can make each status code a UDCodeType and then the available reasons would be CodeIDs under that type. Then your Reason combo can be setup as a usercodescombo (see link below for reference), and instead of hard coding your Code Type in the Filters Params you could try CodeTypeParam=‘{yourdataview.UD_OrderStatus_c}’.

I haven’t tested that so it might need tweaked a little.

2 Likes

Correct me if I’m wrong, but this might only work for the first time that the secondary combo is opened … Combos don’t handle dynamic filters very well, if at all.

If you can, load the data into a dataview and set the combo to read from it - and then you can manipulate that dataview however you need to.

1 Like

Screen Recording 2025-06-19 at 9.09.17 PM

Thanks for all the suggestions on using the UserCodes.UserCodesCombo approach. I was able to get the Reason combo to dynamically change its CodeType based on my UD_OrderStatus_c value and pull in all the CodeIDs under that type. However, it doesn’t support a second-level filter of those codes by another field’s value—so once the combo is loaded it still shows every reason for that CodeType, not only the ones valid for the current Status.

In other words, the built-in UserCodes combo will swap out the CodeType, but it won’t filter the loaded codes within that type by my UD_OrderStatus_c mapping.

At this point it looks like the only way to build a truly cascading dropdown in AppStudio is to:

  1. Create a small UD mapping table (Status → Reason).
  2. Load that table into a DataView.
  3. On Status change (or on load) run:
    dataview-clear + dataview-filter-set + combo-refill

Question: is there any other “supported” AppStudio pattern or built-in combo type that will let me filter UserCodes within a CodeType based on another field? Or am I right that for true cascading dropdowns we must use a UD table + DataView actions?

Thanks again for your help!

I don’t think I’m understanding what all you’re trying to do, can you add some screen shots of your user codes and how you’re wanting them to filter?