Scripting was an advanced feature that enables administrators to execute some BeanShell scripts in folders, triggered on every notified event ( for example uploading documents ).

This feature has been enhanced by Automation ( see ExecuteScripting at Built-in Automation Action plugins ), which helps you to do the same things with a few mouse clicks. For compatibility reasons there is also an Automation task where you can put a BeanShell code.

OpenKM uses BeanShell. For more information check

BeanShell is a small, free, embeddable Java source interpreter with object scripting language features, written in Java. BeanShell dynamically executes standard Java syntax and extends it with common scripting conveniences such as loose types, commands, and method closures like those in Perl and JavaScript.

See some examples at Scripting samples.

Execute script as part of application starting process

Can be executed as an script as a part of application starting process. To do so, just create a start.bsh file in $TOMCAT_HOME

For example, we use this feature to create a complete environment (create custom users, register property groups, register workflow) each time the OpenKM demo is restarted.

Execute script as part of application stopping process

Can be executed a an script as part of the application stopping process. To do so, just create a stop.bsh file in $TOMCAT_HOME

Scripting in Automation

In the  Automation Scripting execution, there're several variables that are directly injected in scripting environment that can be used.

List of variables what can be used directly:



The system token.


Involved node (NodeDocument, NodeFolder, etc. )


Node unique identifier.


Only available when converting a document to PDF or to SWF.


The user id.


import com.openkm.api.*;
// Variable uuid is injected by automation to the scripting environment
OKMProperty.getInstance().addKeyword(null, uuid, "test");