CINXE.COM

Okta Expression Language in Okta Identity Engine | Okta Developer

<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Okta Expression Language in Okta Identity Engine | Okta Developer</title> <meta name="generator" content="VuePress 1.9.8"> <link rel="stylesheet" href="https://static.cloud.coveo.com/searchui/v2.8959/14/css/CoveoFullSearch.min.css" integrity="sha512-DzuDVtX/Dud12HycdAsm2k9D1UQ8DU7WOj7cBRnSsOKQbKfkI94g0VM9hplM0BkQ0VXdDiQYU9GvUzMmw2Khaw==" crossorigin="anonymous"> <script class="coveo-script" src="https://static.cloud.coveo.com/searchui/v2.8959/14/js/CoveoJsSearch.Lazy.min.js" integrity="sha512-RV1EooPduQhwl0jz+hmjBw/nAtfeXNm6Dm/hlCe5OR1jAlG4RErUeYfX1jaaM88H8DiyCJDzEWZkOR0Q13DtrA==" crossorigin="anonymous" defer="true"></script> <script src="https://geoip-js.com/js/apis/geoip2/v2.1/geoip2.js"></script> <link rel="apple-touch-icon" sizes="180x180" href="/favicon/favicon.png"> <link rel="icon" type="image/png" href="/favicon/favicon.png"> <link rel="icon" type="image/svg" sizes="32x32" href="/favicon/favicon.svg"> <link rel="icon" type="image/svg" sizes="16x16" href="/favicon/favicon.svg"> <link rel="manifest" href="/favicon/manifest.json"> <link rel="mask-icon" href="/favicon/favicon.png"> <link rel="preload" href="https://use.typekit.net/osg6paw.css" as="style" crossorigin="true"> <link rel="stylesheet" href="https://use.typekit.net/osg6paw.css" crossorigin="true"> <meta name="msapplication-config" content="/favicon/browserconfig.xml"> <meta http-equiv="XA-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script> window.dataLayer = window.dataLayer || []; var isProduction = window.location.hostname === 'developer.okta.com'; if (isProduction) { // START Google Tag Manager - main container (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KXMLV58'); // END Google Tag Manager } </script> <meta name="description" content="Learn more about the features and syntax of Okta Expression Language in Okta Identity Engine."> <meta name="msapplication-config" content="/favicon/browserconfig.xml"> <meta http-equiv="XA-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://developer.okta.com/docs/reference/okta-expression-language-in-identity-engine/" rel="canonical" /> <link rel="preload" href="/assets/css/2.styles.916c88f2.css" as="style"><link rel="preload" href="/assets/js/app.1e077b94.js" as="script"><link rel="preload" href="/assets/js/185.c681fd7f.js" as="script"><link rel="preload" href="/assets/js/187.158c23d4.js" as="script"><link rel="preload" href="/assets/js/65.d1132cc4.js" as="script"><link rel="preload" href="/assets/js/225.45dd681b.js" as="script"><link rel="preload" href="/assets/js/188.7802dab9.js" as="script"><link rel="preload" href="/assets/js/219.321ff151.js" as="script"><link rel="preload" href="/assets/js/80.6ed389a3.js" as="script"><link rel="preload" href="/assets/js/204.a717d129.js" as="script"><link rel="preload" href="/assets/js/206.c32c8d9a.js" as="script"><link rel="preload" href="/assets/js/216.08cb65a0.js" as="script"><link rel="preload" href="/assets/js/81.b90fa567.js" as="script"><link rel="preload" href="/assets/js/210.8b5a03b4.js" as="script"><link rel="preload" href="/assets/js/195.76e2f625.js" as="script"><link rel="preload" href="/assets/js/220.2c485c69.js" as="script"><link rel="preload" href="/assets/js/202.5c8678e1.js" as="script"><link rel="preload" href="/assets/js/2568.bbbec45f.js" as="script"><link rel="preload" href="/assets/js/237.7926c7ad.js" as="script"><link rel="preload" href="/assets/js/205.2b78ea63.js" as="script"><link rel="preload" href="/assets/js/191.c4d08a47.js" as="script"><link rel="preload" href="/assets/js/64.2aa9ad79.js" as="script"><link rel="preload" href="/assets/js/215.a532e816.js" as="script"> <link rel="stylesheet" href="/assets/css/2.styles.916c88f2.css"> </head> <body> <div id="app" data-server-rendered="true"><div class="layout"><div class="fixed-header"><div class="header-banner" style="display:none;" data-v-3d4eeb36><div class="header-banner-content" data-v-3d4eeb36><p data-v-3d4eeb36> Check out our new and improved <a href="https://developer.okta.com/docs/api/" target="_blank" data-v-3d4eeb36> API documentation! ↗ </a></p></div> <!----></div> <header class="page-header"><a href="/" class="header--logo"><img src="/img/logotype.svg" width="180" height="28" alt="Okta developer logotype"></a> <div class="menu--slideout"><div class="search--slideout opened"><div class="search--wrapper"><div data-search-bar data-pipeline="developer-okta-com" class="SearchBox"><div class="search--form"><div class="CoveoOmnibox"></div></div> <div class="CoveoAnalytics"></div></div></div></div> <div class="header--links"><ul class="menu--items menu--desktop"><li index="0" class="expandable"><span class="link link--small link--semi-bold">Community</span> <ul class="submenu--items"><li><a href="https://devforum.okta.com" target="_blank" rel="noopener noreferrer" class="link link--small link--semi-bold link--black"><span>Forum</span></a> <!----></li><li><div class="menu--divider"></div> <!----></li><li><div class="menu--icons"><a href="https://github.com/oktadev" target="_blank" rel="noopener noreferrer" class="menu--icon"><i><svg width="19" height="18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17.214 4.595a9.185 9.185 0 00-3.358-3.358C12.443.412 10.9 0 9.226 0 7.552 0 6.008.412 4.595 1.237a9.184 9.184 0 00-3.358 3.358C.412 6.008 0 7.552 0 9.225c0 2.01.587 3.818 1.76 5.424 1.173 1.606 2.689 2.717 4.546 3.333.217.04.377.012.48-.084a.47.47 0 00.157-.36l-.006-.649c-.004-.408-.006-.764-.006-1.069l-.276.048a3.52 3.52 0 01-.667.042 5.092 5.092 0 01-.835-.084 1.866 1.866 0 01-.805-.36 1.524 1.524 0 01-.528-.739l-.12-.276a3.003 3.003 0 00-.379-.613c-.172-.224-.346-.376-.522-.456l-.084-.06a.882.882 0 01-.156-.144.66.66 0 01-.108-.169c-.025-.056-.005-.102.06-.138.064-.036.18-.054.348-.054l.24.036c.16.032.358.128.595.289.236.16.43.368.582.624.185.328.407.579.667.75.26.173.522.26.787.26.264 0 .492-.021.684-.06.192-.04.373-.101.541-.181.072-.537.268-.95.588-1.238a8.224 8.224 0 01-1.23-.216 4.896 4.896 0 01-1.13-.468 3.233 3.233 0 01-.967-.805c-.256-.32-.466-.741-.63-1.261-.165-.521-.247-1.122-.247-1.802 0-.97.317-1.794.95-2.475-.297-.729-.269-1.545.083-2.45.233-.073.577-.018 1.033.162.457.18.791.334 1.004.462.212.128.382.237.51.325a8.53 8.53 0 012.307-.313 8.53 8.53 0 012.306.313l.457-.289c.312-.192.68-.368 1.104-.528.425-.16.75-.204.974-.132.36.905.392 1.721.096 2.45.632.68.949 1.506.949 2.475 0 .68-.082 1.283-.246 1.808-.164.524-.377.944-.637 1.26a3.36 3.36 0 01-.973.8 4.916 4.916 0 01-1.13.468 8.208 8.208 0 01-1.23.217c.416.36.624.929.624 1.705v2.535c0 .144.05.264.15.36.1.096.258.124.475.084 1.858-.617 3.373-1.728 4.547-3.333 1.173-1.606 1.76-3.414 1.76-5.424-.001-1.673-.414-3.217-1.238-4.63z"/></svg></i></a><a href="https://twitter.com/OktaDev" target="_blank" rel="noopener noreferrer" class="menu--icon"><i><svg width="18" height="18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 0a9.001 9.001 0 000 18A9.001 9.001 0 009 0zm4.11 7.017c.003.089.005.178.005.267 0 2.73-2.078 5.878-5.877 5.878a5.847 5.847 0 01-3.167-.928 4.144 4.144 0 003.058-.856A2.068 2.068 0 015.2 9.943a2.056 2.056 0 00.934-.035 2.066 2.066 0 01-1.657-2.051c.278.154.597.247.935.258a2.064 2.064 0 01-.64-2.758A5.865 5.865 0 009.03 7.515a2.066 2.066 0 013.52-1.884c.47-.092.913-.264 1.312-.5a2.074 2.074 0 01-.909 1.142 4.12 4.12 0 001.187-.326 4.2 4.2 0 01-1.03 1.07z"/></svg></i></a><a href="https://www.youtube.com/channel/UC5AMiWqFVFxF1q9Ya1FuZ_Q/featured" target="_blank" rel="noopener noreferrer" class="menu--icon"><i><svg width="18" height="18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7.879 10.372l2.928-1.686L7.878 7v3.372z"/><path d="M9 0a9.001 9.001 0 000 18A9.001 9.001 0 009 0zm5.624 9.009s0 1.825-.232 2.705a1.41 1.41 0 01-.991.992c-.88.231-4.401.231-4.401.231s-3.511 0-4.4-.24a1.41 1.41 0 01-.992-.992C3.376 10.835 3.376 9 3.376 9s0-1.825.232-2.705c.13-.482.519-.871.991-1.001C5.48 5.062 9 5.062 9 5.062s3.52 0 4.4.241c.482.13.862.51.992.992.241.88.232 2.714.232 2.714z"/></svg></i></a></div> <!----></li></ul></li><li index="1"><a href="https://developer.okta.com/blog/" target="_blank" rel="noopener noreferrer" class="link link--small link--semi-bold"><span>Blog</span></a> <!----></li><li index="2"><a href="https://www.okta.com/pricing/#customer-identity-products" target="_blank" rel="noopener noreferrer" class="link link--small link--semi-bold"><span>Pricing</span></a> <!----></li></ul> <ul class="menu--items menu--desktop"><li index="0"><a href="https://www.okta.com/" target="_blank" rel="noopener noreferrer" class="link link--small link--semi-bold"><span>Okta.com</span></a> <!----></li><li index="1"><a href="/login/" target="_blank" rel="noopener noreferrer" class="link link--small link--semi-bold"><span>Log in</span></a> <!----></li></ul> <ul class="menu--items menu--mobile"><!----> </ul></div></div> <div class="flex align-items-center"><a href="/signup/" class="sign-up--button"> Sign up </a> <div class="mobile--toggles"><div class="mobile--toggle"><span></span> <span></span> <span></span></div></div> <label class="toggle-switch switch-theme"><span class="light-mode active"><img src="/img/icons/mode-light.svg" width="16" height="16" aria-hidden="true" alt></span> <span class="dark-mode"><img src="/img/icons/mode-dark-not-active.svg" width="12" height="13" aria-hidden="true" alt></span></label></div></header> <div class="header-nav"></div></div> <div class="page-body"><div class="content"><div class="content--container"><!----> <div class="content-area col-xl-10 col-lg-10 col-md-12 col-sm-12"><div class="breadcrumb"><div class="breadcrumb--container"><ol></ol></div></div> <!----> <div class="mobile-on-this-page"><h3 class="mobile-header"> On this page </h3> <div dir="auto" class="v-select vs--single vs--unsearchable"> <div id="vs21__combobox" role="combobox" aria-expanded="false" aria-owns="vs21__listbox" aria-label="Search for option" class="vs__dropdown-toggle"><div class="vs__selected-options"><span class="vs__selected"> Overview <!----></span> <input readonly="readonly" aria-autocomplete="list" aria-labelledby="vs21__combobox" aria-controls="vs21__listbox" type="search" autocomplete="off" value="" class="vs__search"></div> <div class="vs__actions"><button type="button" title="Clear Selected" aria-label="Clear Selected" class="vs__clear" style="display:none;"><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10"><path d="M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z"></path></svg></button> <svg xmlns="http://www.w3.org/2000/svg" width="14" height="10" role="presentation" class="vs__open-indicator"><path d="M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z"></path></svg> <div class="vs__spinner" style="display:none;">Loading...</div></div></div> <ul id="vs21__listbox" role="listbox" style="display:none;visibility:hidden;"></ul> </div></div> <!----> <div class="content__default"><h1>Okta Expression Language in Okta Identity Engine</h1> <a href="/docs/concepts/oie-intro/"><!----> <!----> <!----> <span class="api-label api-label-ie"> Identity Engine </span> <!----> <!----></a> <h2 id="overview">Overview <a href="#overview" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h2> <p>This document details the features and syntax of Expression Language used for the following:</p> <ul><li><a href="/docs/guides/configure-signon-policy/main/">Authentication policies</a> of Identity Engine</li> <li><a href="https://help.okta.com/okta_help.htm?id=ext-el-eg" target="_blank" rel="noopener noreferrer">Access Certification campaigns<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> and Entitlement Management policies for Okta Identity Governance</li></ul> <p>Expressions used outside of these areas should continue using the features and syntax of <a href="/docs/reference/okta-expression-language/">Expression Language</a>. This document is updated as new capabilities are added to the language. Expression Language is based on a subset of <a href="https://docs.spring.io/spring-framework/reference/core/expressions.html" target="_blank" rel="noopener noreferrer">SpEL functionality<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p> <blockquote><p><strong>Note:</strong> In this reference, <code>$placeholder</code> denotes a value that you need to replace with an appropriate variable. For example, in <code>user.profile.$profile_property</code>, <code>$profile_property</code> can be replaced with <code>firstName</code>, <code>lastName</code>, <code>email</code>, and other valid values.</p></blockquote> <h2 id="unsupported-features">Unsupported features <a href="#unsupported-features" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h2> <p>The following operators and functionalities offered by SpEL aren't supported in Expression Language:</p> <ul><li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/OpDec.html" target="_blank" rel="noopener noreferrer">Decrement operator<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/OpInc.html" target="_blank" rel="noopener noreferrer">Increment operator<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/OperatorInstanceof.html" target="_blank" rel="noopener noreferrer">Instanceof operator<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/OperatorBetween.html" target="_blank" rel="noopener noreferrer">Between operator<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/Assign.html" target="_blank" rel="noopener noreferrer">Assign<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/BeanReference.html" target="_blank" rel="noopener noreferrer">Bean reference<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/ConstructorReference.html" target="_blank" rel="noopener noreferrer">Constructor reference<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/FunctionReference.html" target="_blank" rel="noopener noreferrer">Function reference<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/TypeReference.html" target="_blank" rel="noopener noreferrer">Type reference<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/VariableReference.html" target="_blank" rel="noopener noreferrer">Variable reference<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/Projection.html" target="_blank" rel="noopener noreferrer">Projection<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li> <li><a href="https://www.javadoc.io/doc/org.springframework/spring-expression/latest/org/springframework/expression/spel/ast/QualifiedIdentifier.html" target="_blank" rel="noopener noreferrer">Qualified identifier<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></li></ul> <h2 id="reference-attributes">Reference attributes <a href="#reference-attributes" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h2> <h3 id="okta-user-profile">Okta User Profile <a href="#okta-user-profile" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h3> <p>When you create an Okta expression, you can reference any property that exists in an Okta User Profile in addition to some top-level User properties.</p> <blockquote><p><strong>Note:</strong> You can't use the <code>user.status</code> expression with group rules. See <a href="https://developer.okta.com/docs/api/openapi/okta-management/management/tag/GroupRule/" target="_blank" rel="noopener noreferrer">Group rule operations<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> and <a href="https://help.okta.com/okta_help.htm?type=wf&amp;id=ext-okta-method-creategrouprule" target="_blank" rel="noopener noreferrer">Create Group Rule<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p></blockquote> <table><thead><tr><th>Syntax</th> <th>Definitions</th> <th>Examples</th></tr></thead> <tbody><tr><td><code>user.$property</code></td> <td><code>user</code> - references the Okta user<br><code>property</code> - top-level property variable name<br>Values: <code>id</code>, <code>status</code>, <code>created</code>, <code>lastUpdated</code>, <code>passwordChanged</code>, <code>lastLogin</code></td> <td><code>user.id</code><br><code>user.status</code><br><code>user.created</code></td></tr> <tr><td><code>user.profile.$profile_property</code></td> <td><code>profile_property</code> - references the user profile property, including custom-defined properties</td> <td><code>user.profile.firstName</code><br><code>user.profile.email</code><br></td></tr></tbody></table> <h3 id="okta-device-profile">Okta Device Profile <a href="#okta-device-profile" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h3> <p>When you create an Okta expression, you can reference EDR attributes and any property that exists in an Okta Device Profile.</p> <table><thead><tr><th>Syntax</th> <th>Definitions</th> <th>Examples</th></tr></thead> <tbody><tr><td><code>device.profile.$profile_property</code></td> <td><code>profile_property</code> - references a Device Profile property</td> <td><code>device.profile.managed</code><br><code>device.profile.registered</code><br></td></tr> <tr><td><code>device.provider.$vendor.$signal</code></td> <td><code>vendor</code> - references a vendor, such as <code>wsc</code> for Windows Security Center or <code>zta</code> for CrowdStrike <br><code>signal</code> - references the supported EDR signal by the vendor</td> <td><code>device.provider.wsc.fireWall</code><br><code>device.provider.wsc.autoUpdateSettings</code><br><code>device.provider.zta.overall</code></td></tr></tbody></table> <p>See <a href="https://help.okta.com/okta_help.htm?type=oie&amp;id=ext-edr-integration-main" target="_blank" rel="noopener noreferrer">Integrate with Endpoint Detection and Response solutions<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> and <a href="https://help.okta.com/okta_help.htm?type=oie&amp;id=ext-edr-integration-available-signals" target="_blank" rel="noopener noreferrer">Available EDR signals by vendor<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> for details about <code>vendor</code> and <code>signal</code>.</p> <h3 id="security-context">Security context <a href="#security-context" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h3> <p>You can specify certain <a href="https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/createPolicyRule!path=0/conditions&amp;t=request" target="_blank" rel="noopener noreferrer">rule conditions<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> in <a href="https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/createPolicyRule" target="_blank" rel="noopener noreferrer">authentication policies<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>. Use expressions based on the security context of the app sign-on request. Security context is made up of the <a href="https://help.okta.com/okta_help.htm?id=csh-risk-scoring" target="_blank" rel="noopener noreferrer">risk level<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> and the matching <a href="https://help.okta.com/okta_help.htm?id=ext_proc_security_behavior_detection" target="_blank" rel="noopener noreferrer">User behaviors<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> for the request.</p> <table><thead><tr><th>Syntax</th> <th>Definitions</th> <th>Type</th> <th>Examples</th> <th>Usage</th></tr></thead> <tbody><tr><td>security.risk.level</td> <td><code>security</code> references the security context of the request<br><code>risk</code> references the <a href="https://help.okta.com/okta_help.htm?id=csh-risk-scoring" target="_blank" rel="noopener noreferrer">risk<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> context of the request<br><code>level</code> is the risk level associated with the request</td> <td>String</td> <td><code>'LOW'</code><br><code>'MEDIUM'</code><br><code>'HIGH'</code></td> <td><code>security.risk.level == 'HIGH'</code><br><code>security.risk.level != 'LOW'</code></td></tr> <tr><td>security.behaviors</td> <td><code>security</code> references the security context of the request<br><code>behaviors</code> is the list of matching <a href="https://help.okta.com/okta_help.htm?id=ext_proc_security_behavior_detection" target="_blank" rel="noopener noreferrer">User behaviors<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> for the request, by name.</td> <td>Array of Strings</td> <td><code>{'New IP', 'New Device'}</code></td> <td><code>security.behaviors.contains('New IP') &amp;&amp; security.behaviors.contains('New Device')</code></td></tr></tbody></table> <h3 id="login-context">Login Context <a href="#login-context" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h3> <a href="https://developer.okta.com/docs/api/openapi/okta-management/guides/release-lifecycle/#early-access-ea" target="_blank" rel="noopener noreferrer"><!----> <span class="api-label api-label-ea"><i class="fa fa-flag"></i> Early Access </span> <!----> <!----> <!----> <!----></a> <p>You can specify the <a href="https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/createPolicyRule" target="_blank" rel="noopener noreferrer">dynamic IdP<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>. Use expressions based on the login context that holds the user's <code>username</code> as the <code>identifier</code>.</p> <table><thead><tr><th>Syntax</th> <th>Definitions</th> <th>Type</th></tr></thead> <tbody><tr><td>login.identifier</td> <td><code>login</code> references the login context of the request. <code>identifier</code> references the user's <code>username</code>.</td> <td>String</td></tr></tbody></table> <h3 id="okta-account-management">Okta account management <a href="#okta-account-management" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h3> <a href="https://developer.okta.com/docs/api/openapi/okta-management/guides/release-lifecycle/#early-access-ea" target="_blank" rel="noopener noreferrer"><!----> <span class="api-label api-label-ea"><i class="fa fa-flag"></i> Early Access </span> <!----> <!----> <!----> <!----></a> <p>You can specify certain <a href="https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/createPolicyRule!path=0/conditions/elCondition&amp;t=request" target="_blank" rel="noopener noreferrer">Expression Language conditions<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> in <a href="https://help.okta.com/okta_help.htm?type=oie&amp;id=ext-oamp" target="_blank" rel="noopener noreferrer">Okta account management policies<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p> <table><thead><tr><th>Syntax</th> <th>Definitions</th> <th>Type</th></tr></thead> <tbody><tr><td><code>accessRequest.$operation</code></td> <td><code>accessRequest</code> references the access context of the request. <code>operation</code> references the account management operation: <code>enroll</code>, <code>unenroll</code>, <code>recover</code>, or <code>unlockAccount</code>.</td> <td>String</td></tr> <tr><td><code>accessRequest.authenticator.$id</code></td> <td><code>accessRequest</code> references the access context of the request. <code>authenticator.id</code> references an optional authenticator <code>id</code>, for example, the <code>id</code> of a custom authenticator.</td> <td>String</td></tr> <tr><td><code>accessRequest.authenticator.$key</code></td> <td><code>accessRequest</code> references the access context of the request. <code>authenticator.key</code> references the <a href="https://developer.okta.com/docs/api/openapi/okta-management/management/tag/Policy/#tag/Policy/operation/createPolicyRule!path=0/actions/appSignOn/verificationMethod/0/constraints/knowledge/authenticationMethods/key&amp;t=request" target="_blank" rel="noopener noreferrer">authenticator key<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</td> <td>String</td></tr></tbody></table> <h2 id="functions">Functions <a href="#functions" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h2> <p>Okta offers various functions to manipulate properties to generate a desired output. You can combine and nest functions inside a single expression.</p> <blockquote><p><strong>Note:</strong> For the following expression examples, assume that the following properties exist in Okta and that the user has the associated values.</p></blockquote> <table><thead><tr><th>Attribute</th> <th>Type</th> <th>Data</th></tr></thead> <tbody><tr><td>user.created</td> <td>ZonedDateTime</td> <td>2015-07-30T23:58:32.000Z</td></tr> <tr><td>user.firstName</td> <td>String</td> <td>&quot;John&quot;</td></tr> <tr><td>user.lastName</td> <td>String</td> <td>&quot;Doe&quot;</td></tr> <tr><td>user.email</td> <td>String</td> <td>&quot;john.doe@okta.com&quot;</td></tr> <tr><td>user.strArray</td> <td>Array</td> <td><code>{&quot;one&quot;, &quot;two&quot;}</code></td></tr> <tr><td>user.intArray</td> <td>Array</td> <td><code>{1, 2, 3}</code></td></tr> <tr><td>user.stringDouble</td> <td>String</td> <td>&quot;1.1&quot;</td></tr> <tr><td>user.country</td> <td>String</td> <td>&quot;United States&quot;</td></tr> <tr><td>user.countryAlpha2</td> <td>String</td> <td>&quot;US&quot;</td></tr> <tr><td>user.countryAlpha3</td> <td>String</td> <td>&quot;USA&quot;</td></tr> <tr><td>user.isContractor</td> <td>Boolean</td> <td>False</td></tr></tbody></table> <h3 id="string-functions">String functions <a href="#string-functions" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h3> <table><thead><tr><th>Function</th> <th>Input parameter signature</th> <th>Return type</th> <th>Example</th> <th>Output</th></tr></thead> <tbody><tr><td><code>$string_object.toUpperCase</code></td> <td>-</td> <td>String</td> <td><code>'test'.toUpperCase()</code></td> <td>&quot;TEST&quot;</td></tr> <tr><td></td> <td></td> <td></td> <td><code>user.profile.firstName.toUpperCase()</code></td> <td>&quot;JOHN&quot;</td></tr> <tr><td><code>$string_object.toLowerCase</code></td> <td>-</td> <td>String</td> <td><code>'TEST'.toLowerCase()</code></td> <td>&quot;test&quot;</td></tr> <tr><td><code>$string_object.substring</code></td> <td>(int startIndex)</td> <td>String</td> <td><code>'test.substring(1)'</code></td> <td>&quot;est&quot;</td></tr> <tr><td><code>$string_object.substring</code></td> <td>(int startIndex, int endIndex)</td> <td>String</td> <td><code>user.profile.firstName.substring(1,3)</code></td> <td>&quot;oh&quot;</td></tr> <tr><td><code>$string_object.replace</code></td> <td>(String match, String replacement)</td> <td>String</td> <td><code>'hello'.replace('l', 'p')</code></td> <td>&quot;heppo&quot;</td></tr> <tr><td></td> <td></td> <td></td> <td><code>user.profile.firstName.replace('ohn', 'ames')</code></td> <td>&quot;James&quot;</td></tr> <tr><td><code>$string_object.replaceFirst</code></td> <td>(String match, String replacement)</td> <td>String</td> <td><code>'hello'.replaceFirst('l', 'p')</code></td> <td>&quot;heplo&quot;</td></tr> <tr><td><code>$string_object.length</code></td> <td>-</td> <td>Integer</td> <td><code>'test'.length()</code></td> <td>4</td></tr> <tr><td><code>$string_object.removeSpaces</code></td> <td>-</td> <td>String</td> <td><code>'This is a test'.removeSpaces()</code></td> <td>&quot;Thisisatest&quot;</td></tr> <tr><td><code>$string_object.contains</code></td> <td>(String searchString)</td> <td>Boolean</td> <td><code>'This is a test'.contains('test')</code></td> <td>True</td></tr> <tr><td></td> <td></td> <td></td> <td><code>'This is a test'.contains('Test')</code></td> <td>False</td></tr> <tr><td><code>$string_object.substringBefore</code></td> <td>(String searchString)</td> <td>String</td> <td><code>user.profile.email.substringBefore('@')</code></td> <td>&quot;john.doe&quot;</td></tr> <tr><td><code>$string_object.substringAfter</code></td> <td>(String searchString)</td> <td>String</td> <td><code>user.profile.email.substringAfter('@')</code></td> <td>&quot;okta.com&quot;</td></tr> <tr><td></td> <td></td> <td></td> <td><code>user.profile.email.substringAfter('.')</code></td> <td>&quot;doe@okta.com&quot;</td></tr></tbody></table> <blockquote><p><strong>Note:</strong> In the <code>substring</code> function, <code>startIndex</code> is inclusive and <code>endIndex</code> is exclusive.</p></blockquote> <h3 id="array-functions">Array functions <a href="#array-functions" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h3> <table><thead><tr><th>Function</th> <th>Input parameter Signature</th> <th>Return type</th> <th>Example</th> <th>Output</th></tr></thead> <tbody><tr><td><code>$array_object.contains</code></td> <td>(Object searchItem)</td> <td>Boolean</td> <td><code>user.profile.intArray.contains(3)</code></td> <td>True</td></tr> <tr><td></td> <td></td> <td></td> <td><code>{1, 2, 3}.contains('one')</code></td> <td>False</td></tr> <tr><td><code>$array_object.size</code></td> <td>-</td> <td>Integer</td> <td><code>user.profile.strArray.size()</code></td> <td>2</td></tr> <tr><td><code>$array_object.isEmpty</code></td> <td>-</td> <td>Boolean</td> <td><code>{}.isEmpty()</code></td> <td>True</td></tr> <tr><td><code>$array_object.add</code></td> <td>(Object itemToAdd)</td> <td>Array</td> <td><code>user.profile.strArray.add('zero')</code></td> <td><code>{&quot;one&quot;, &quot;two&quot;, &quot;zero&quot;}</code></td></tr> <tr><td></td> <td></td> <td></td> <td><code>{'one', 'two'}.add('two')</code></td> <td><code>{&quot;one&quot;, &quot;two&quot;, &quot;two&quot;}</code></td></tr> <tr><td><code>$array_object.remove</code></td> <td>(Object itemToRemove)</td> <td>Array</td> <td><code>user.profile.intArray.remove(1)</code></td> <td><code>{2, 3}</code></td></tr> <tr><td></td> <td></td> <td></td> <td><code>{2, 3}.remove(1)</code></td> <td><code>{2, 3}</code></td></tr> <tr><td><code>$array_object.flatten</code></td> <td>-</td> <td>Array</td> <td><code>{\\{1}, {2, 3}\\}.flatten()</code></td> <td><code>{1, 2, 3}</code></td></tr> <tr><td></td> <td></td> <td></td> <td><code>user.profile.intArray.flatten()</code></td> <td><code>{1, 2, 3}</code></td></tr></tbody></table> <h3 id="conversion-functions">Conversion functions <a href="#conversion-functions" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h3> <h5 id="data-conversion-functions">Data conversion functions <a href="#data-conversion-functions" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h5> <table><thead><tr><th>Function</th> <th>Return type</th> <th>Example</th> <th>Output</th></tr></thead> <tbody><tr><td><code>$string_object.toInteger</code></td> <td>Integer</td> <td><code>user.profile.stringDouble.toInteger()</code></td> <td>1</td></tr> <tr><td></td> <td></td> <td><code>user.profile.email.toInteger()</code></td> <td>An exception is thrown</td></tr> <tr><td></td> <td></td> <td><code>'-2147483649'.toInteger()</code></td> <td>2147483647</td></tr> <tr><td><code>$string_object.toNumber</code></td> <td>Double</td> <td><code>user.profile.stringDouble.toNumber()</code></td> <td>1.1</td></tr> <tr><td></td> <td></td> <td><code>'1.7'.toNumber()</code></td> <td>1.7</td></tr> <tr><td></td> <td></td> <td><code>'123This is a test'.toNumber()</code></td> <td>An exception is thrown</td></tr> <tr><td><code>$number_object.toInteger</code></td> <td>Integer</td> <td><code>1.1.toInteger()</code></td> <td>1</td></tr> <tr><td></td> <td></td> <td><code>-1.6.toInteger()</code></td> <td>-2</td></tr> <tr><td></td> <td></td> <td><code>2147483647.7.toInteger()</code></td> <td>-2147483648 (Integer overflow)</td></tr></tbody></table> <blockquote><p><strong>Note:</strong> The <code>toInteger</code> functions round the passed numeric value (or the String representation of the numeric value) either up or down to the nearest integer. Make sure to consider range limitations of the integer type when you convert to an integer with these functions.</p></blockquote> <h5 id="country-code-conversion-functions">Country code conversion functions <a href="#country-code-conversion-functions" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h5> <p>These functions convert between ISO 3166-1 2-character country codes (Alpha 2), 3-character country codes (Alpha 3), numeric country codes, and full ISO country names.</p> <table><thead><tr><th>Function</th> <th>Return type</th> <th>Example</th> <th>Output</th></tr></thead> <tbody><tr><td><code>$string_object.parseCountryCode</code></td> <td>CountryCode</td> <td><code>user.profile.country.parseCountryCode()</code></td> <td>US (CountryCode object)</td></tr> <tr><td></td> <td></td> <td><code>user.profile.countryAlpha2.parseCountryCode()</code></td> <td>US (CountryCode object)</td></tr> <tr><td></td> <td></td> <td><code>user.profile.countryAlpha3.parseCountryCode()</code></td> <td>US (CountryCode object)</td></tr> <tr><td></td> <td></td> <td><code>'840'.parseCountryCode()</code></td> <td>US (CountryCode object)</td></tr> <tr><td><code>$country_code_object.toAlpha2</code></td> <td>String</td> <td><code>'USA'.parseCountryCode().toAlpha2()</code></td> <td>&quot;US&quot;</td></tr> <tr><td><code>$country_code_object.toAlpha3</code></td> <td>String</td> <td><code>'840'.parseCountryCode().toAlpha3()</code></td> <td>&quot;USA&quot;</td></tr> <tr><td><code>$country_code_object.toNumeric</code></td> <td>String</td> <td><code>'United States'.parseCountryCode().toNumeric()</code></td> <td>&quot;840&quot;</td></tr> <tr><td><code>$country_code_object.toName</code></td> <td>String</td> <td><code>'US'.parseCountryCode().toName()</code></td> <td>&quot;United States&quot;</td></tr></tbody></table> <blockquote><p><strong>Note:</strong> You can call the <code>parseCountryCode</code> function on the string representations of ISO 3166-1 2-character country codes (Alpha 2), 3-character country codes (Alpha 3), numeric country codes, and country names. You can call the other four functions on country code objects and return the output in the format specified by the function names.</p></blockquote> <p>See the <a href="https://www.iso.org/obp/ui/#search/code/" target="_blank" rel="noopener noreferrer">ISO 3166-1 online lookup tool<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>.</p> <h3 id="group-functions">Group functions <a href="#group-functions" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h3> <blockquote><p><strong>Note:</strong> For the following expression examples, assume that the User is a member of the following Groups:</p></blockquote> <table><thead><tr><th>Group ID</th> <th>Group name</th> <th>Group type</th></tr></thead> <tbody><tr><td>00gak46y5hydV6NdM0g4</td> <td>Everyone</td> <td>BUILT_IN</td></tr> <tr><td>00g1emaKYZTWRYYRRTSK</td> <td>West Coast Users</td> <td>OKTA_GROUP</td></tr> <tr><td>00garwpuyxHaWOkdV0g4</td> <td>West Coast Admins</td> <td>OKTA_GROUP</td></tr> <tr><td>00gjitX9HqABSoqTB0g3</td> <td>Engineering Users</td> <td>APP_GROUP</td></tr></tbody></table> <p>Group functions take in a list of search criteria as input. Each search criterion is a key-value pair:<br> <strong>Key:</strong> Specifies the matching property. Currently supported keys are: <code>group.id</code>, <code>group.type</code>, and <code>group.profile.name</code>.<br> <strong>Value:</strong> Specifies a list of matching values.</p> <p>The <code>group.id</code> and <code>group.type</code> keys can match values that are exact.</p> <p>The <code>group.profile.name</code> key supports the operators <code>EXACT</code> and <code>STARTS_WITH</code> to identify exact matches or matches that include the value. If no operator is specified, the expression uses <code>STARTS_WITH</code>. These operators can't be used with <code>group.id</code> or <code>group.type</code>.</p> <table><thead><tr><th>Function</th> <th>Return type</th> <th>Example</th> <th>Output</th></tr></thead> <tbody><tr><td><code>user.getGroups</code></td> <td>Array</td> <td><code>user.getGroups({'group.id': {'00gjitX9HqABSoqTB0g3'}}, {'group.profile.name': 'West Coast.*'})</code></td> <td>{}</td></tr> <tr><td></td> <td></td> <td><code>user.getGroups({'group.type': {'OKTA_GROUP'}}, {'group.profile.name': {'Everyone', 'West Coast Admins'}})</code></td> <td>A list of User Groups that contains the Groups with ID <code>00garwpuyxHaWOkdV0g4</code></td></tr> <tr><td></td> <td></td> <td><code>user.getGroups({'group.profile.name': 'East Coast.*'})</code></td> <td>{}</td></tr> <tr><td></td> <td></td> <td><code>user.getGroups({'group.type': {'OKTA_GROUP', 'APP_GROUP'}})</code></td> <td>A list of User Groups that contains the Groups with IDs <code>00g1emaKYZTWRYYRRTSK</code>, <code>00garwpuyxHaWOkdV0g4</code>, and <code>00gjitX9HqABSoqTB0g3</code></td></tr> <tr><td><code>user.isMemberOf</code></td> <td>Boolean</td> <td><code>user.isMemberOf({'group.id': {'00gjitX9HqABSoqTB0g3', '00garwpuyxHaWOkdV0g4'}}, {'group.type': 'APP_GROUP'})</code></td> <td>True</td></tr> <tr><td></td> <td></td> <td><code>user.isMemberOf({'group.id': {'00gjitX9HqABSoqTB0g3', '00garwpuyxHaWOkdV0g4'}}, {'group.type': 'BUILT_IN'})</code></td> <td>False</td></tr> <tr><td></td> <td></td> <td><code>user.isMemberOf({'group.profile.name': 'West Coast', 'operator': 'STARTS_WITH' })</code></td> <td>True</td></tr> <tr><td></td> <td></td> <td><code>user.isMemberOf({'group.profile.name': 'West Coast', 'operator': 'EXACT' })</code></td> <td>False</td></tr></tbody></table> <h3 id="linked-object-function">Linked Object function <a href="#linked-object-function" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h3> <p>Use this function to retrieve the user who's identified with the specified <code>primary</code> relationship. You can then access the properties of that user.</p> <ul><li><strong>Function:</strong> <code>user.getLinkedObject($primaryName)</code> <ul><li><strong>Parameter:</strong> (String primaryName)</li> <li><strong>Return Type:</strong> User</li> <li><strong>Example:</strong> <code>user.getLinkedObject(&quot;manager&quot;).lastName</code></li> <li><strong>Example Result:</strong> <code>Gates</code></li></ul></li></ul> <h3 id="time-functions">Time functions <a href="#time-functions" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h3> <blockquote><p><strong>Note:</strong> For the following expression examples, assume that the current date and time is <code>2015-07-31T17:18:37.979Z</code>.</p></blockquote> <table><thead><tr><th>Function</th> <th>Input parameter signature</th> <th>Return type</th> <th>Example</th> <th>Output</th></tr></thead> <tbody><tr><td><code>DateTime.now</code></td> <td>-</td> <td>ZonedDateTime</td> <td><code>DateTime.now()</code></td> <td>2015-07-31T17:18:37.979Z (The current date-time in the UTC time-zone)</td></tr> <tr><td><code>$string_object.parseWindowsTime</code></td> <td>-</td> <td>ZonedDateTime</td> <td><code>'130828367179790000'.parseWindowsTime()</code></td> <td>2015-07-31T17:18:37.979Z</td></tr> <tr><td><code>$string_object.parseUnixTime</code></td> <td>-</td> <td>ZonedDateTime</td> <td><code>'1438377580979'.parseUnixTime()</code></td> <td>2015-07-31T21:19:40.979Z</td></tr> <tr><td><code>$string_object.parseStringTime</code></td> <td>-</td> <td>ZonedDateTime</td> <td><code>'2015-06-17T00:23:19.676Z'.parseStringTime()</code></td> <td>2015-06-17T00:23:19.676Z</td></tr> <tr><td><code>$string_object.parseStringTime</code></td> <td>(String dateTimeFormat)</td> <td>ZonedDateTime</td> <td><code>'17 June 2015 00:23:19'.parseStringTime('dd MMMM yyyy HH:mm:ss')</code></td> <td>2015-06-17T00:23:19Z</td></tr> <tr><td><code>$zoned_date_time_object.toWindows</code></td> <td>-</td> <td>String</td> <td><code>user.created.toWindows()</code></td> <td>&quot;130827743120000000&quot;</td></tr> <tr><td><code>$zoned_date_time_object.toUnix</code></td> <td>-</td> <td>String</td> <td><code>DateTime.now().toUnix()</code></td> <td>&quot;1438363117979&quot;</td></tr> <tr><td><code>$zoned_date_time_object.toString</code></td> <td>-</td> <td>String</td> <td><code>user.created.toString()</code></td> <td>&quot;2015-07-30T23:58:32Z&quot;</td></tr> <tr><td><code>$zoned_date_time_object.toString</code></td> <td>(String dateTimeFormat)</td> <td>String</td> <td><code>user.created.toString('MM/dd/yyyy')</code></td> <td>&quot;07/30/2015&quot;</td></tr> <tr><td><code>$zoned_date_time_object.toZone</code></td> <td>(String zoneId)</td> <td>ZonedDateTime</td> <td><code>Time.now().toZone('Asia/Tokyo')</code></td> <td>2015-08-01T02:18:37.979+09:00[Asia/Tokyo]</td></tr> <tr><td><code>$zoned_date_time_object.plusDays</code></td> <td>(int days)</td> <td>ZonedDateTime</td> <td><code>user.created.plusDays(2)</code></td> <td>2015-08-01T23:58:32.000Z</td></tr> <tr><td><code>$zoned_date_time_object.plusHours</code></td> <td>(int hours)</td> <td>ZonedDateTime</td> <td><code>user.created.plusHours(-1)</code></td> <td>2015-07-30T22:58:32.000Z</td></tr> <tr><td><code>$zoned_date_time_object.plusMinutes</code></td> <td>(int minutes)</td> <td>ZonedDateTime</td> <td><code>user.created.plusMinutes(0)</code></td> <td>2015-07-30T23:58:32.000Z</td></tr> <tr><td><code>$zoned_date_time_object.plusSeconds</code></td> <td>(int seconds)</td> <td>ZonedDateTime</td> <td><code>user.created.plusSeconds(0)</code></td> <td>2015-07-30T23:58:32.000Z</td></tr> <tr><td><code>$zoned_date_time_object.minusDays</code></td> <td>(int days)</td> <td>ZonedDateTime</td> <td><code>Time.now().minusDays(3)</code></td> <td>2015-07-28T17:18:37.979Z</td></tr> <tr><td><code>$zoned_date_time_object.minusHours</code></td> <td>(int hours)</td> <td>ZonedDateTime</td> <td><code>Time.now().minusHours(100)</code></td> <td>2015-07-27T13:18:37.979Z</td></tr> <tr><td><code>$zoned_date_time_object.minusMinutes</code></td> <td>(int minutes)</td> <td>ZonedDateTime</td> <td><code>Time.now().minusMinutes(-1)</code></td> <td>2015-07-31T17:19:37.979Z</td></tr> <tr><td><code>$zoned_date_time_object.minusSeconds</code></td> <td>(int seconds)</td> <td>ZonedDateTime</td> <td><code>Time.now().minusSeconds(2)</code></td> <td>2015-07-31T17:18:35.979Z</td></tr> <tr><td><code>$zoned_date_time_object.withinDays</code></td> <td>(int days)</td> <td>Boolean</td> <td><code>user.created.withinDays(1)</code></td> <td>True</td></tr> <tr><td><code>$zoned_date_time_object.withinHours</code></td> <td>(int hours)</td> <td>Boolean</td> <td><code>user.created.withinHours(100)</code></td> <td>True</td></tr> <tr><td><code>$zoned_date_time_object.withinMinutes</code></td> <td>(int minutes)</td> <td>Boolean</td> <td><code>user.created.withinMinutes(2)</code></td> <td>False</td></tr> <tr><td><code>$zoned_date_time_object.withinSeconds</code></td> <td>(int seconds)</td> <td>Boolean</td> <td><code>user.created.withinSeconds(100)</code></td> <td>False</td></tr></tbody></table> <blockquote><p><strong>Note:</strong> Okta supports the use of the time zone IDs and aliases listed in the <a href="/docs/reference/okta-expression-language/#appendix-time-zone-codes">Time Zone Codes table</a>.</p></blockquote> <h2 id="constants-and-operators">Constants and operators <a href="#constants-and-operators" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h2> <table><thead><tr><th>Common Action</th> <th>Example</th></tr></thead> <tbody><tr><td>Refer to a <code>String</code> constant</td> <td><code>'Hello world'</code></td></tr> <tr><td>Refer to a <code>Integer</code> constant</td> <td><code>1234</code></td></tr> <tr><td>Refer to a <code>Number</code> constant</td> <td><code>3.141</code></td></tr> <tr><td>Refer to a <code>Boolean</code> constant</td> <td><code>true</code></td></tr> <tr><td>Concatenate two strings</td> <td><code>user.profile.firstName + user.profile.lastName</code></td></tr></tbody></table> <h2 id="conditional-expressions">Conditional expressions <a href="#conditional-expressions" class="header-anchor header-link"><svg viewBox="0 0 512 512"><path fill="currentColor" d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 01-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0120.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0020.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 00-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"></path></svg></a></h2> <p>The following rules apply to conditional expressions:</p> <ul><li>Expressions must have valid syntax.</li> <li>Expressions must evaluate to Boolean.</li> <li>Expressions can't contain an assignment operator, such as <code>=</code>.</li> <li>User properties referenced in an expression must exist.</li></ul> <p>The following functions are supported in conditional expressions:</p> <ul><li>Any Expression Language function</li> <li>The <code>&amp;&amp;</code> operator to designate AND</li> <li>The <code>||</code> operator to designate OR</li> <li>The <code>!</code> operator to designate NOT</li> <li>Standard relational operators including <code>&lt;</code>, <code>&gt;</code>, <code>&lt;=</code>, and <code>&gt;=</code></li></ul> <blockquote><p><strong>Note:</strong> Use the double equals sign <code>==</code> to check for equality and <code>!=</code> for inequality.</p></blockquote> <p><strong>Examples</strong></p> <table><thead><tr><th>Expression</th> <th>Output</th></tr></thead> <tbody><tr><td><code>user.profile.country == &quot;United States&quot;</code></td> <td>True</td></tr> <tr><td><code>user.profile.intArray.contains(0)</code></td> <td>False</td></tr> <tr><td><code>user.profile.isContractor || user.created.withinSeconds(0)</code></td> <td>False</td></tr></tbody></table> <p>You can use the ternary operator for performing IF, THEN, ELSE conditional logic inside the expression.</p> <p>The format for a ternary conditional expression is: <code>[Condition] ? [Value if TRUE] : [Value if FALSE]</code></p> <p><strong>Examples</strong></p> <p>If the middle initial isn't empty, include it as part of the full name using just the first character and appending a period.<br> <code>user.profile.firstName + &quot; &quot; + (user.profile.middleInitial.length() == 0 ? &quot;&quot; : (user.profile.middleInitial.substring(0, 1) + &quot;. &quot;)) + user.profile.lastName</code></p> <p>If the user is a contractor and is a member of the &quot;West Coast Users&quot; user group, output &quot;West coast contractors&quot;, else output &quot;Others&quot;.<br> <code>user.profile.isContractor &amp;&amp; user.isMemberOf({'group.profile.name': 'West Coast Users'}) ? &quot;West coast contractors&quot; : &quot;Others&quot;</code></p></div> <!----> <div class="edit-on-github"><span class="fa fa-github"></span> <span><a id="edit-link" href="https://github.com/okta/okta-developer-docs/edit/master/packages/@okta/vuepress-site/docs/reference/okta-expression-language-in-identity-engine/index.md" target="_blank" rel="noopener noreferrer" data-proofer-ignore>Edit This Page On GitHub</a></span></div></div> <div class="on-this-page"><aside class="on-this-page-navigation"><div style="display:;"><!----> <div style="display:;"><div class="title"> On this page </div> <ul class="links"><li><a href="/docs/reference/okta-expression-language-in-identity-engine/#overview" class="on-this-page-link"><span>Overview</span></a> <ul id="submenu_overview" style="display:none;"></ul></li><li><a href="/docs/reference/okta-expression-language-in-identity-engine/#unsupported-features" class="on-this-page-link"><span>Unsupported features</span></a> <ul id="submenu_unsupported-features" style="display:none;"></ul></li><li><a href="/docs/reference/okta-expression-language-in-identity-engine/#reference-attributes" class="on-this-page-link"><span>Reference attributes</span></a> <ul id="submenu_reference-attributes" style="display:none;"><li><a href="#okta-user-profile" class="on-this-page-link"><span>Okta User Profile</span></a> <ul id="submenu_okta-user-profile" style="display:none;"></ul></li><li><a href="#okta-device-profile" class="on-this-page-link"><span>Okta Device Profile</span></a> <ul id="submenu_okta-device-profile" style="display:none;"></ul></li><li><a href="#security-context" class="on-this-page-link"><span>Security context</span></a> <ul id="submenu_security-context" style="display:none;"></ul></li><li><a href="#login-context" class="on-this-page-link"><span>Login Context</span></a> <ul id="submenu_login-context" style="display:none;"></ul></li><li><a href="#okta-account-management" class="on-this-page-link"><span>Okta account management</span></a> <ul id="submenu_okta-account-management" style="display:none;"></ul></li></ul></li><li><a href="/docs/reference/okta-expression-language-in-identity-engine/#functions" class="on-this-page-link"><span>Functions</span></a> <ul id="submenu_functions" style="display:none;"><li><a href="#string-functions" class="on-this-page-link"><span>String functions</span></a> <ul id="submenu_string-functions" style="display:none;"></ul></li><li><a href="#array-functions" class="on-this-page-link"><span>Array functions</span></a> <ul id="submenu_array-functions" style="display:none;"></ul></li><li><a href="#conversion-functions" class="on-this-page-link"><span>Conversion functions</span></a> <ul id="submenu_conversion-functions" style="display:none;"></ul></li><li><a href="#group-functions" class="on-this-page-link"><span>Group functions</span></a> <ul id="submenu_group-functions" style="display:none;"></ul></li><li><a href="#linked-object-function" class="on-this-page-link"><span>Linked Object function</span></a> <ul id="submenu_linked-object-function" style="display:none;"></ul></li><li><a href="#time-functions" class="on-this-page-link"><span>Time functions</span></a> <ul id="submenu_time-functions" style="display:none;"></ul></li></ul></li><li><a href="/docs/reference/okta-expression-language-in-identity-engine/#constants-and-operators" class="on-this-page-link"><span>Constants and operators</span></a> <ul id="submenu_constants-and-operators" style="display:none;"></ul></li><li><a href="/docs/reference/okta-expression-language-in-identity-engine/#conditional-expressions" class="on-this-page-link"><span>Conditional expressions</span></a> <ul id="submenu_conditional-expressions" style="display:none;"></ul></li></ul></div></div></aside></div></div></div></div> <footer class="app-footer"><div class="app-footer__wrapper wrapper"><h2 class="visually-hidden"> Additional links </h2> <div class="footer--columns"><div class="footer--column need-support"><a href="/" class="footer-logotype"><img src="/img/logotype.svg" width="180" height="28" alt="Okta developer logotype" class="column--header"></a> <p class="footer-text"> Questions? Ask us on the <a href="https://devforum.okta.com/" target="_self" class="link"> forum. </a></p> <ul class="footer-social-networks link-list"><li class="link-list--item"><a href="https://github.com/oktadev" target="_self" class="link link-list--link"><i class="link-list--icon"><svg width="19" height="18" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M17.214 4.595a9.185 9.185 0 00-3.358-3.358C12.443.412 10.9 0 9.226 0 7.552 0 6.008.412 4.595 1.237a9.184 9.184 0 00-3.358 3.358C.412 6.008 0 7.552 0 9.225c0 2.01.587 3.818 1.76 5.424 1.173 1.606 2.689 2.717 4.546 3.333.217.04.377.012.48-.084a.47.47 0 00.157-.36l-.006-.649c-.004-.408-.006-.764-.006-1.069l-.276.048a3.52 3.52 0 01-.667.042 5.092 5.092 0 01-.835-.084 1.866 1.866 0 01-.805-.36 1.524 1.524 0 01-.528-.739l-.12-.276a3.003 3.003 0 00-.379-.613c-.172-.224-.346-.376-.522-.456l-.084-.06a.882.882 0 01-.156-.144.66.66 0 01-.108-.169c-.025-.056-.005-.102.06-.138.064-.036.18-.054.348-.054l.24.036c.16.032.358.128.595.289.236.16.43.368.582.624.185.328.407.579.667.75.26.173.522.26.787.26.264 0 .492-.021.684-.06.192-.04.373-.101.541-.181.072-.537.268-.95.588-1.238a8.224 8.224 0 01-1.23-.216 4.896 4.896 0 01-1.13-.468 3.233 3.233 0 01-.967-.805c-.256-.32-.466-.741-.63-1.261-.165-.521-.247-1.122-.247-1.802 0-.97.317-1.794.95-2.475-.297-.729-.269-1.545.083-2.45.233-.073.577-.018 1.033.162.457.18.791.334 1.004.462.212.128.382.237.51.325a8.53 8.53 0 012.307-.313 8.53 8.53 0 012.306.313l.457-.289c.312-.192.68-.368 1.104-.528.425-.16.75-.204.974-.132.36.905.392 1.721.096 2.45.632.68.949 1.506.949 2.475 0 .68-.082 1.283-.246 1.808-.164.524-.377.944-.637 1.26a3.36 3.36 0 01-.973.8 4.916 4.916 0 01-1.13.468 8.208 8.208 0 01-1.23.217c.416.36.624.929.624 1.705v2.535c0 .144.05.264.15.36.1.096.258.124.475.084 1.858-.617 3.373-1.728 4.547-3.333 1.173-1.606 1.76-3.414 1.76-5.424-.001-1.673-.414-3.217-1.238-4.63z"/></svg></i> <span class="link-list--text"></span></a></li><li class="link-list--item"><a href="https://twitter.com/OktaDev" target="_self" class="link link-list--link"><i class="link-list--icon"><svg width="19" height="16" viewBox="0 0 19 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18.6702 2.27734C17.9905 2.57812 17.2639 2.78125 16.4983 2.875C17.2796 2.40625 17.8811 1.66406 18.1624 0.78125C17.4319 1.21484 16.6233 1.53125 15.76 1.69922C15.0686 0.960937 14.0843 0.5 12.9983 0.5C10.9085 0.5 9.21707 2.19531 9.21707 4.28516C9.21707 4.58203 9.24832 4.87109 9.31473 5.14844C6.1702 4.99219 3.38113 3.48438 1.51785 1.19141C1.19363 1.75 1.00613 2.40234 1.00613 3.09375C1.00613 4.40625 1.67801 5.56641 2.69363 6.24609C2.06863 6.23047 1.4827 6.05859 0.974884 5.77344V5.82031C0.974884 7.65625 2.27957 9.18359 4.01004 9.53125C3.69363 9.61719 3.3577 9.66406 3.01395 9.66406C2.77176 9.66406 2.53348 9.64062 2.30301 9.59375C2.78348 11.0977 4.18192 12.1914 5.83817 12.2227C4.5452 13.2383 2.91238 13.8438 1.13895 13.8438C0.834259 13.8438 0.533478 13.8242 0.236603 13.7891C1.90457 14.875 3.89285 15.5 6.02567 15.5C12.9905 15.5 16.7952 9.73047 16.7952 4.72656C16.7952 4.5625 16.7913 4.39844 16.7835 4.23828C17.5218 3.70312 18.1624 3.03906 18.6702 2.27734Z" fill="#FFFEFA"/></svg></i> <span class="link-list--text"></span></a></li><li class="link-list--item"><a href="https://www.youtube.com/c/oktadev" target="_self" class="link link-list--link"><i class="link-list--icon"><svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_2189_11938)"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.3916 4.06438C19.7034 4.37475 19.9281 4.7617 20.0431 5.18637C20.4514 6.74547 20.4596 10.0003 20.4596 10.0003C20.4596 10.0003 20.4596 13.2552 20.0431 14.8143C19.9271 15.2377 19.702 15.6233 19.3902 15.9325C19.0785 16.2416 18.691 16.4635 18.2666 16.5759C16.7075 16.9941 10.4514 16.9941 10.4514 16.9941C10.4514 16.9941 4.19683 16.9941 2.63772 16.5825C2.21389 16.4685 1.82745 16.2452 1.51712 15.9349C1.20679 15.6246 0.983464 15.2381 0.869531 14.8143C0.451355 13.2552 0.451355 10.0003 0.451355 10.0003C0.451355 10.0003 0.451355 6.74547 0.869531 5.18637C0.983464 4.76254 1.20679 4.3761 1.51712 4.06576C1.82745 3.75543 2.21389 3.53211 2.63772 3.41818C4.19518 3 10.4514 3 10.4514 3C10.4514 3 16.7059 3 18.2666 3.41818C18.6918 3.53115 19.0798 3.75401 19.3916 4.06438ZM13.6484 10.0003L8.45087 7.00061V13L13.6484 10.0003Z" fill="#FFFEFA"/></g><defs><clipPath id="clip0_2189_11938"><rect width="20" height="20" fill="white" transform="translate(0.451355)"/></clipPath></defs></svg></i> <span class="link-list--text"></span></a></li><li class="link-list--item"><a href="https://developer.okta.com/feed.xml" target="_self" class="link link-list--link"><i class="link-list--icon"><svg xmlns="http://www.w3.org/2000/svg" width="19" height="18" fill="none"><circle cx="9.451" cy="9" r="9" fill="#FFFEFA"/><path fill="#191919" d="M15.415 9.809c-.811-3.268-3.971-5.984-7.452-6.406-.736-.088-1.41.412-1.5 1.114-.094.702.426 1.348 1.163 1.438 2.371.285 4.622 2.22 5.176 4.45.063.255.205.482.408.658.328.282.78.392 1.209.295.72-.164 1.166-.859.996-1.55Z"/><path fill="#191919" d="M11.42 10.924c-.395-1.76-2.009-3.295-3.701-3.522-.616-.083-1.18.381-1.259 1.034-.077.651.364 1.247.976 1.333.771.103 1.615.904 1.795 1.707.053.237.171.449.342.61.275.262.654.365 1.013.274.604-.152.978-.796.835-1.436ZM8.03 12.817a1.33 1.33 0 1 0-1.98-1.777 1.33 1.33 0 0 0 1.98 1.777Z"/></svg></i> <span class="link-list--text"></span></a></li></ul></div> <div class="footer--column contact"><h3 class="column--header"> Contact &amp; Legal </h3> <ul class="link-list"><li class="link-list--item"><a href="https://www.okta.com/contact/" target="_self" class="link link-list--link"><span class="link-list--text">Contact our team</span></a></li><li class="link-list--item"><a href="https://www.okta.com/contact-sales/" target="_self" class="link link-list--link"><span class="link-list--text">Contact sales</span></a></li><li class="link-list--item"><a href="/terms/" class="link link-list--link"><span class="link-list--text">Developer Service terms</span></a></li><li class="link-list--item"><a href="https://www.okta.com/terms-of-service/" target="_blank" rel="noopener noreferrer" class="link link-list--link"><span class="link-list--text">Site terms</span></a></li><li class="link-list--item"><a href="https://www.okta.com/privacy-policy/" target="_self" class="link link-list--link"><span class="link-list--text">Privacy policy</span></a></li><li class="link-list--item"><a href="/copyright/" class="link link-list--link"><span class="link-list--text">Copyright &amp; trademarks</span></a></li></ul></div> <div class="footer--column more"><h3 class="column--header"> More information </h3> <ul class="link-list"><li class="link-list--item"><a href="/okta-integration-network/" class="link link-list--link"><span class="link-list--text">Integrate with Okta</span></a></li><li class="link-list--item"><a href="https://www.okta.com/pricing/#workforce-identity-pricing" target="_blank" rel="noopener noreferrer" class="link link-list--link"><span class="link-list--text">Pricing</span></a></li><li class="link-list--item"><a href="/3rd_party_notices/" class="link link-list--link"><span class="link-list--text">3rd-party notes</span></a></li><li class="link-list--item"><a href="https://developer.auth0.com/" target="_blank" rel="noopener noreferrer" class="link link-list--link"><span class="link-list--text">Customer Identity Cloud</span></a></li><li class="link-list--item"><a href="/archive/" class="link link-list--link"><span class="link-list--text">Archive</span></a></li></ul></div> <div class="footer--column websites"><div class="website"><a href="https://www.okta.com/" target="_blank" rel="noopener noreferrer" class="link link--small link--bold link--uppercase link--spacing-large link--with-chevron-right link--heading"><span>OKTA.COM</span></a> <span class="description">Products, case studies, resources</span></div><div class="website"><a href="https://support.okta.com/help/s/" target="_blank" rel="noopener noreferrer" class="link link--small link--bold link--uppercase link--spacing-large link--with-chevron-right link--heading"><span>HELP CENTER</span></a> <span class="description">Knowledgebase, roadmaps, and more</span></div><div class="website"><a href="https://trust.okta.com/" target="_blank" rel="noopener noreferrer" class="link link--small link--bold link--uppercase link--spacing-large link--with-chevron-right link--heading"><span>TRUST</span></a> <span class="description">System status, security, compliance</span></div></div> <div class="copyright"><span>Copyright © 2024 Okta. All rights reserved.</span></div></div></div></footer> <div id="feedback-tab"><a id="feedback-link" href="#" title="Submit feedback"><div id="feedback-container"><p id="feedback-text">Feedback</p></div></a></div></div><div class="global-ui"></div></div> <script src="/assets/js/app.1e077b94.js" defer></script><script src="/assets/js/185.c681fd7f.js" defer></script><script src="/assets/js/187.158c23d4.js" defer></script><script src="/assets/js/65.d1132cc4.js" defer></script><script src="/assets/js/225.45dd681b.js" defer></script><script src="/assets/js/188.7802dab9.js" defer></script><script src="/assets/js/219.321ff151.js" defer></script><script src="/assets/js/80.6ed389a3.js" defer></script><script src="/assets/js/204.a717d129.js" defer></script><script src="/assets/js/206.c32c8d9a.js" defer></script><script src="/assets/js/216.08cb65a0.js" defer></script><script src="/assets/js/81.b90fa567.js" defer></script><script src="/assets/js/210.8b5a03b4.js" defer></script><script src="/assets/js/195.76e2f625.js" defer></script><script src="/assets/js/220.2c485c69.js" defer></script><script src="/assets/js/202.5c8678e1.js" defer></script><script src="/assets/js/2568.bbbec45f.js" defer></script><script src="/assets/js/237.7926c7ad.js" defer></script><script src="/assets/js/205.2b78ea63.js" defer></script><script src="/assets/js/191.c4d08a47.js" defer></script><script src="/assets/js/64.2aa9ad79.js" defer></script><script src="/assets/js/215.a532e816.js" defer></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10