MidPoint Expression Language TODO

Last modified 16 Mar 2026 14:08 +01:00
MidPoint Expression Language feature
This page is an introduction to MidPoint Expression Language midPoint feature. Please see the feature page for more details.
Table of Contents
  • MEL introduction

  • MEL lang spec

  • MEL security

  • MEL and CEL

    • reasons and motivation

    • Prism instead of protobuf

    • CEL extensions

    • why do we call it MEL?

  • MEL and Groovy, unsecure code in libraries, authorizations, etc.

  • Guide: migrating Groovy to MEL

    • What happened to basic library?

    • Rewriting loops to filter/map

    • Use Groovy in function libraries as a last resort

  • Gotchas/FAQ

stringify vs str vs string

Field selections must be performed on messages or maps. This means that the value may be null. E.g. for code input.orig, variable input may be null. Solution: input.?orig

found no matching overload for '?:_' applied to …​ (candidates: (bool, %A8, %A8)) Conditional must have the same data type in both branches. Use string() or stringify().

No matching overload for function '+'. Overload candidates: add_string 'Came from ' + input →

range() function, which creates a list? e.g. [1,2,3,4,5] Could be used to construct a list of candidates, e.g. range(5).map(x, "user%s".format(x)).filter(x, checkUnique(x))

Differences from CEL

  • Better support for nullable types/values

  • substring() does not die when index is out of range. Empty string is returned instead.

Was this page helpful?
YES NO
Thanks for your feedback