Skip to Content
Technical Articles

Share and Store CPI Groovy Scripts with Links

Since the online Groovy IDE was very well received by the community, I decided to improve it by enabling sharing and integration. Thank you everyone for comments, giving feedback, and positive vibes!

While I was preparing this post a related productivity improvement feature was added to SAP CPI which enables running parts of flows in simulation. You should definitely check it out!

Use Cases

  • Sharing a message exchange input and Groovy code in a question.
  • Preparing challenges for beginners in a company or preparing tutorials.
  • Sharing very specific solutions for a problem.
  • Send postcards with a Groovy link printed as QR code
  • You can store your favorite templates in browser bookmarks!

How to share

Just click on the share button:

Since I decided not to store anything on the server, a long URL will be copied to the clipboard. It is gzipped which benefits a lot working with XML. You can try it with a reasonably large XML file!

  1. XML file: 460KB (no indentation, one-line input which causes UI problems on most editors)
  2. XML file with indentation: 550KB
  3. Groovy IDE URL for the same input(2): 16KB
  4. My profile picture in this page: 17KB

(I set the server URL limit to 50KB)

Tip: If you are sharing it in a blog post you can hide the long URL like this.

How to integrate

You can trigger Groovy IDE by preparing this URL and opening a new tab: + URLSafeBase64(gzip($jsonString))

JSON structure as TypeScript type definition:

interface StateType {
    input: {
        body: string,
        headers: object,
        properties: object
    script: {
        code: string


Thanks for your feedback again. If you think about some useful new feature you can write it in the comments or contact me.

You must be Logged on to comment or reply to a post.
    • Thank you for the feedback Raffael, it is these small things that help the consultant so feedback is very important 🙂


  • Hi Fatih,

    GroovyIDE is a great tool! Many thanks!

    The following code is working fine in GroovyIDE, but not in CPI DEV tenant.

    import java.util.HashMap;
    import groovy.json.*;

    def Message processData(Message message) {
    //Body: JSON file
    def jsonFile = message.getBody();
    def aCandidate = new JsonSlurper().parse(jsonFile);

    def map = message.getProperties();
    def base64PDF = map.get("base64PDF");

    aCandidate.candidate.resume.file = base64PDF;
    def jsonOut = new JsonBuilder(aCandidate).toPrettyString();

    def builder = new JsonBuilder(aCandidate);
    builder.content.candidate.resume.file = base64PDF; // line 21
    def jsonOut = builder.toPrettyString();

    return message;


    In CPI DEV tenant, I get the error:

    javax.script.ScriptException: java.lang.Exception: java.lang.NullPointerException: Cannot set property 'file' on null object@ line 21 in script2.groovy, cause: java.lang.NullPointerException: Cannot set property 'file' on null object

    The JSON structure is like this:

    "candidate": {
    "candidate": {
    "contactDetails": {
    "PhoneNumber": "notavailable"
    "email": "",
    "firstName": "John",
    "lastName": "Doe"
    "resume": {
    "file": "base64String",
    "fileName": "Profile.pdf"

    What is the root cause of the different behaviour between GroovyIDE and CPI?


    Many thanks in advance for your comments!

    Regards, Xi