SERIOUS BUG FOUND: structure variables always clears (after assigned value)

Attached: app consumes a web service, and assigns structure record list to a new structure record list variable.

After the structure record list is assigned values and the combo box is used, the structure record list always clears its value.

Note: You can try to using the system action ListAppendAll , the same issue occurs.

Attached video:

Hmm, I am not sure it's a bug.

Platform optimizes stuff, so if you don't do anything with it, it doesn't get filled.

it's a bit too smart in some ways.

(and no, certain assigns and if's won;t work as well)

Yup, J is totally right.

I tested it locally and doing anything that actually needs the variables solves your "Serious Bug".

For example just add a Ajax Refresh after that assign to refresh the GatewayType combo box. It will show you everything filled in debug.

Platform removes everything that is never used (and looking at debugger is not a "use").

João Rosado

I can confirm that J and Joao are both correct.

Outsystems removes all unused variables that are not used on the page. (Outsystems platform did not optimise list like this before?)

Shouldn't outsystems platform only optimize code in production? The outsystems platform optimizes code in development/debug mode as well. Debugging is hard to do when outsystems optimizes code that should not on a development server in debug mode.

Current work-around solution: create an action, and process all complicated processes within the action, debugging will function as usual.


 I know this is an old question but I've found the same problem but in mobile environment which is responsive. In a client action I've made a listAppendAll over a variable which is the source of a List widget, what I expected was that new items were added to that variable and the List widget were refreshed automatically, however nothing was added to the variable and no changes were shown in the UI (Probably due to the mentioned optimization, nevertheless the variable was really used in this case but in a responsive approach).

I've solved this situation by moving the listAppendAll call into a separated action

  • input variable:
    • the original list and
    • the list with the values to be appended
  • output variable:
    • the list with the new values appended to the original ones.

In this separated action, ListAppendAll works as expected (I guess that no optimization can be applied because the platform can't know what we're doing with the result) and then we can assing the result of this action to the variable that sources the List widget and the widget is refreshed.

Hope this helps anyone in the future.


  Roberto García