For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Logo
DeveloperAcademyCommunityStatus
ReferenceGuides
ReferenceGuides
  • Agent Studio
    • Overview
    • Quickstart Guides
    • Core Concepts
    • Conversation Process
    • Actions
    • Connectors
    • System Triggers
    • Agent Architect
      • DSL And Mapper Playground
      • Common DSL & Mapper Patterns
      • DSL
        • Examples: String Utils
    • Cookbooks
    • Development and Testing
    • AI Agent Marketplace
    • Developer Tools
  • Agentic AI
    • LLM Fundamentals
    • The Agentic Reasoning Engine
    • Memory Constructs
    • Conversational Context
    • Guardrails
    • Grounding and Hallucinations
    • Continuous Learning
    • LLMs & SLMs
    • Steerability Tools
    • Multilingual Support
  • Core Platform
    • User Identity
    • Moveworks Agent (On-Prem)
    • Approvals Engine
    • Entity Catalog
    • Moveworks Data Objects
    • Security Information and Event Management (SIEM) Logs Overview
DeveloperAcademyCommunityStatus
On this page
  • Evaluate a string with multiple elements
  • Given
  • To check against all prefixes
  • Expected Result
  • String Special Character Detection
  • DSL Expression
  • Use Cases
  • Examples
  • Make all elements in a list lowercase
  • Given
  • To lowercase all elements
  • Expected Result
  • Generate a hyphenated “Random” Number
  • How It Works
  • Example Output
  • Use Cases
Agent StudioConfiguration LanguagesDSL

Examples: String Utils

||View as Markdown|
Was this page helpful?
Edit this page
Previous

Data Mapper / JSON Bender Reference

Next
Built with

Evaluate a string with multiple elements

We want to evaluate a ticket description with multiple STARTS_WITH, but you do not want to write multiple OR operators in your rule that could make it bulky and hard to read. We can leverage the ANY stream operator to match our ticket with a list of strings or elements.

You can also leverage the ALL operator in case you want AND conditions.

Given

1list_of_prefixes = ["Mr.", "Mrs.", "Dr."]
2
3ticket.requestor.name = "Dr. Jane Doe"

To check against all prefixes

1list_of_prefixes.$ANY(prefix => ticket.requestor.name.$STARTS_WITH(prefix))
2
3# OR
4
5["Mr.", "Mrs.", "Dr."].$ANY(prefix => ticket.requestor.name.$STARTS_WITH(prefix))

Expected Result

1true

String Special Character Detection

Check if a string contains any characters that are not alphabetic letters or whitespace.

DSL Expression

text.$MATCH("[^a-zA-Z\\s]+", true).$LENGTH() > 0

This DSL:

  • Searches for one or more consecutive non-letter, non-whitespace characters
  • Returns true if any numbers or special characters are found
  • Returns false if the string contains only letters and whitespace

Use Cases

  • Form validation to ensure text fields contain only alphabetic characters
  • Identifying inputs that might require special handling or escaping
  • Security checks for potentially unsafe character sequences

Examples

InputResultReason
"Hello world"falseContains only letters and spaces
"Hello123"trueContains numbers
"Hello!"trueContains special characters
"Hello world!"trueContains special characters

Make all elements in a list lowercase

We usually create whitelists for users that want to test a certain skill or sometimes remove access to a list of people. We would want to evaluate all users in lowercase since sometimes emails or other attributes may contain capital letters. A way to lowercase an element is by using the .$LOWERCASE() formatter but it’s not scalable if you have a list of hundreds of users. Here’s how you can do it better.

Given

1emails = ["HeLlo", "WoRld"]

To lowercase all elements

1emails.$MAP(email => email.$LOWERCASE())
2
3# or
4
5["HeLlo", "WoRld"].$MAP(email => email.$LOWERCASE())

Expected Result

1["hello", "world"]

Generate a hyphenated “Random” Number

This expression creates a pseudo-random number string formatted as a hyphen-separated sequence.

$CONCAT([($TIME().$INTEGER() * 6).$TEXT()[7:12], ($TIME().$INTEGER() * 12).$TEXT()[7:12],($TIME().$INTEGER() * 7).$TEXT()[7:12],($TIME().$INTEGER() * 23).$TEXT()[7:12]],"-")

This DSL:

  • Uses the current timestamp ($TIME().$INTEGER()) as a seed value
  • Multiplies by different prime-like numbers (6, 12, 7, 23) to create variation
  • Converts results to text and extracts specific digits using substring selection [7:12]
  • Concatenates the four number segments with hyphens as separators

How It Works

1

Get timestamp

$TIME().$INTEGER() gets the current Unix timestamp in milliseconds

2

Create variation

Multiplication by different factors produces varied number sequences

3

Extract digits

.$TEXT()[7:12] converts to text and extracts a consistent 4-digit segment

4

Join segments

$CONCAT(..., "-") joins the segments with hyphens

Example Output

"3542-7084-5799-1911"

Use Cases

  • Generating reference numbers or transaction IDs
  • Creating pseudo-random identifiers without requiring cryptographic security
  • Producing readable, hyphenated codes for display purposes

Not cryptographically secure — uses deterministic operations on time values. Will produce different values on each evaluation as time changes.