Skip to content

describe microflow drops the offset and limit of a Range list operation #966

Description

@TOFBuck

Summary

describe microflow drops the OffsetExpression/LimitExpression of a Range list operation (range($List, $offset, $amount)). It prints the bare form range($List) instead, with no warning and exit code 0. mxcli check passes on the truncated output. Re-executing that output would silently turn a paged range into a whole-list range — a behaviour change, not just a formatting loss.

This is a separate serialization defect from the annotated-loop-body issue (a different microflow node type, ListOperationsAction vs. LoopedActivity), found on the same flow during the same session — see that issue for context on why this flow ended up needing both checks.

mxcli version

mxcli version v0.18.0 (2026-08-14T20:29:13Z)

Mendix version

10.24.24.119653

Severity

High for the same reason as the loop-body issue: it's a silent, gate-invisible loss on the documented describe → exec round-trip, and it changes runtime behaviour (paging → no paging) rather than just losing cosmetic detail.

What was measured

On a microflow with a ListOperationsAction storing:

Microflows$ListRange → Microflows$CustomRange
  OffsetExpression: "$offset"
  LimitExpression:  "$amount"

(verified via mxcli bson dump --type microflow), mxcli describe prints:

range($RawMessageList_ForSensor)

— both expressions gone. mxcli check reports no error on the resulting script.

Authoring side is fine

Writing range($L, $offset, $amount) via create or modify microflow parses correctly and stores both OffsetExpression and LimitExpression as expected (confirmed by exec followed by bson dump). The defect is purely in the describe serializer reading it back.

Expected behaviour

describe should emit range($List, $offset, $amount) when both expressions are present on the stored Microflows$CustomRange.

Actual behaviour

describe emits the bare range($List) form, silently dropping both expressions.

Secondary issue: undiscoverable syntax

mxcli syntax microflow.list-operations does not document the 3-argument range($L, $offset, $amount) form at all, so even though it works, there is no way to discover the working syntax from the CLI's own help output.

Why this matters together with the loop-body issue

A flow that has both an annotated loop body and a paged Range operation (as ours did) is not round-trippable through describe/exec by any route — every serialization path loses something. In our case this meant the fix had to be delivered as a new sub-microflow plus one manual Studio Pro activity swap, instead of a scripted MDL change.

Suggested fix

Serialize OffsetExpression/LimitExpression from Microflows$CustomRange when emitting a Range list operation, and document the 3-argument form in mxcli syntax microflow.list-operations.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions