---
title: Scripting
description: Scripting lets you extend Advanced Identity Cloud functionality. For example, you can provide custom logic between source and target mappings, define correlation rules, filters, triggers, and so on. This guide shows you how to use scripts in Advanced Identity Cloud and provides reference information on the script engine.
component: pingoneaic
page_id: pingoneaic:idm-scripting:preface
canonical_url: https://docs.pingidentity.com/pingoneaic/idm-scripting/preface.html
page_aliases: ["index.adoc"]
---

# Scripting

Scripting lets you extend Advanced Identity Cloud functionality. For example, you can provide custom logic between source and target mappings, define correlation rules, filters, triggers, and so on. This guide shows you how to use scripts in Advanced Identity Cloud and provides reference information on the script engine.

[icon: wrench, set=fas, size=3x]

#### [Custom Endpoints](script-custom-endpoints.html)

Run arbitrary scripts through the REST URI.

[icon: play-circle, set=far, size=3x]

#### [Script Triggers](script-triggers.html)

Learn where and how you can trigger scripts.

[icon: file-code, set=far, size=3x]

#### [Script Variables](script-vars.html)

Learn about the variables available to scripts.

Advanced Identity Cloud supports scripts written in JavaScript, and uses the following libraries:

* Rhino version 1.7.14 to run JavaScript.

  |   |                                                                                                                                                                                  |
  | - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  |   | Rhino has limited support for ES6 / ES2015 (JavaScript version 1.7). For more information, refer to [Rhino ES2015 Support](https://mozilla.github.io/rhino/compat/engines.html). |

* Lodash 3.10.1 and Handlebars 4.7.6 for Rhino scripting.

  |   |                                                                                                                                                                                                                                                                                                                                                                                  |
  | - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  |   | Using Handlebars JS in server-side JS scripts requires *synchronization*; for example:```javascript
  var Handlebars = require("lib/handlebars");
  var result = new Packages.org.mozilla.javascript.Synchronizer(function() {
    var template = Handlebars.compile("Handlebars {{doesWhat}}");
    return template({ doesWhat: "rocks!" });
  }, Handlebars)();
  console.log(result);
  ``` |

* BouncyCastle 1.67 for signing JWTs.

  |   |                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
  | - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  |   | The BouncyCastle .JAR file that is bundled with IDM includes the `org.bouncycastle.asn1.util.Dump` command-line utility. Although this utility is not used directly by IDM, it is possible to reference the utility in your scripts. Due to a security vulnerability in this utility, you should *not* reference it in your scripts. For more information, refer to the corresponding [BouncyCastle issue](https://github.com/bcgit/bc-java/issues/634). |
