jCleanCim is an open source tool for validation and documentation generation from Enterprise Architect UML models of IEC TC57 CIM and IEC61850 UML models.
Up until the end of 2015 it had been hosted by the CIM Methods & Tools for Enterprise Integration group on the CIM Users Group web site, with access limited to the CIM and IEC61850 users community members only. To make it accessible to non-CIMug members, in 2016 it was transitioned to a fully open source tool and hosted at Tanja Kostic’s website.
In November of 2022, with Tanja Kostic’s approval, jCleanCim was officially migrated here as part of the CIMug’s Open Source Initiatives effort.
jCleanCim is a console (non-GUI) Java application, and its Java code is platform independent. It must nevertheless run on MS Windows, because it uses the Enterprise Architect and MS Word automation libraries (.dll files).
The full history is in the release notes.
2.4.0 (released 10-Aug-2026)
The “Introduction to jCleanCim” presentation gives an overview of the tool. It is available in PDF and PowerPoint formats.
Each unzipped jCleanCim distribution contains the full documentation in its doc directory. The main parts of the source code are documented, and that documentation is generated as javadoc: a set of linked web pages.
doc/jCleanCimIntro.pptx (doc/jCleanCimIntro.pdf), which is the recommended starting point.doc/api/index.html. The documentation of the root package org.tanjakostic.jcleancim (Description section) is a good starting point.doc/testReport/index.html. It is mainly of interest to developers.jCleanCim 2.4.0 ships as two distributions: binary and source. That is the only distribution split — there is no separate 32-bit or 64-bit download. Both require Java 17 or later; which bitness of Java you install depends on the Enterprise Architect project file you are reading.
Support for Java 17+ was introduced in jCleanCim 2.4.0.
| Your EA project file | Enterprise Architect | Binary distribution needs | Source distribution needs |
|---|---|---|---|
.eap(x) |
15.x and earlier (32-bit) | 32- or 64-bit Java 17+ JRE | 32- or 64-bit Java 17+ JDK |
.qea(x) |
16.0+ (64-bit) | 64-bit Java 17+ JRE only | 64-bit Java 17+ JDK only |
A 64-bit Java installation is recommended. It generates documentation from both
.eap(x) and .qea(x) project files, so it is the only choice that works across
every project you are likely to encounter.
On 32-bit Java availability. If you specifically need a 32-bit runtime for the legacy
.eap(x)path, note that most current OpenJDK vendors have wound down 32-bit Windows builds: Eclipse Temurin publishes x86-32 Windows binaries through JDK 17 but not for JDK 21 or later. This constrains a 32-bit installation to the JDK 17 line, which satisfies jCleanCim’s Java 17+ floor. It is another reason to prefer 64-bit where your EA version allows.
To verify what you already have, open the console window and type java -version
(runtime) or javac -version (development kit).
Archive: jCleanCim-[version]-bin.zip
Intended use. Run jCleanCim from the console (cmd.exe). For the jCleanCim end-user.
Prerequisites
Installing
Unzip the distribution anywhere on your file system; it will uncompress into its own directory tagged with the version, so there is no danger of overwriting an older installation. Any archive tool will do — right-click the .zip in Windows Explorer and choose “Extract All”, or use the equivalent command in 7-Zip or WinZip.
Archive: jCleanCim-[version]-src.zip
Intended use. Run jCleanCim from the console (cmd.exe) or from within Eclipse. Develop and build it with Apache Ant or with Eclipse. For the jCleanCim developer, packager, and end-user.
Prerequisites — required
ant -version.If you are already developing in Java with Eclipse, you have what you need. If your only Eclipse is the runtime bundled with CIMTool, that is not sufficient — it is a runtime without Java code development support. On the Eclipse download site, the minimum required distribution is “Eclipse IDE for Java Developers”; you can then install the CIMTool plug-in into that (or a more recent) Eclipse.
Prerequisites — optional, at runtime
Prerequisites — optional, during the Ant build
dot -V. If Graphviz is not
installed, the target that depends on it is skipped and the rest of the build is
unaffected; only that one diagram is missing. The exception is ant dist-src, which
stops rather than produce a source distribution without the diagram (see the note
below).Graphviz is the only external install needed for the build. The other build-time
tools — JUnit 4 and Grand — are bundled in the source
distribution’s lib directory and require no separate download; see
Dependencies.
Installing
Same as for the binary distribution (jCleanCim-[version]-bin.zip).
The source distribution contains the Eclipse project files. To use it with Eclipse, then after unzipping, start Eclipse and use Import -> Existing project and browse to the unzipped directory.
Note: This is the most flexible option if you are developing, as you can have the Eclipse project anywhere on your disk (not necessarily in an Eclipse workspace).
Note for source distribution (and if you need to create the distribution yourself): the Ant build file contains a target that invokes the GraphViz application to render the build target dependency graph as a PDF. If you do not have GraphViz installed on your local system, that target is skipped during an ordinary build. Producing the source distribution (ant dist-src, also run by ant all) is different: it stops with an error rather than silently ship a distribution without the diagram. Either install GraphViz and re-run, or run ant dist-src -Dallow.incomplete.dist=true to build the source distribution without it.
To be self-contained, jCleanCim distributions bundle relevant third party open source/distributable libraries. Java jars are in the project’s lib directory, and MS Windows dlls are in the dlls directory.
The following libraries are packaged with all the distributions of jCleanCim:
.eap(x) or .qea(x) project file), before any XMI or other artefact generation takes place..eap/.eapx files are MS Access databases, read with the Jackcess library..qea/.qeax files are SQLite databases, read with the SQLite JDBC driver. This was added in release 2.4.0 alongside Jackcess — it does not replace it, since both project file formats remain supported.commons-lang-2.6.jar) is bundled; Jackcess also depends on it..docx) documents, the distributions bundle Apache POI (poi-ooxml).The following libraries are packaged only with source distribution of jCleanCim:
ant dist-src stops unless run with -Dallow.incomplete.dist=true. These are not used from the jCleanCim source code.UmlGraph.jar) is still included, but as of release 2.4.0 the build no longer uses it: UmlGraph 5.6.6 is built against the javadoc doclet API that JDK 13 removed, so UML class diagrams are no longer embedded in the javadoc. Its configuration is kept, commented out, in build.xml until a JDK 17-capable UmlGraph is adopted.pdfdoclet-1.0.2-all.jar file is still included but is not used by the build.Since jCleanCim talks to EA and to MS Word through their automation APIs, the model building (as a first step in the application) and the MS Word document generation (if enabled) take time:
.eap(x), SQLite for .qea(x)), even for items in a collection. Performance is therefore determined by the number of elements (classes, attributes, and so on) and the number of diagrams saved to file. Release 1.7.0 provided a new implementation for reading the UML model from EA (option model.useSql = true, in that release only). Since release 1.8.0, a further implementation is available (see Fast loading of .eap file) and the model.useSql boolean option is replaced by an option that takes one of three predefined string values. In short: to export XMI for a model release, or diagrams for document generation, use model.builder=sqlxml; otherwise leave the option empty or set model.builder=db. See also hint on fixing ordering errors .docgen.saveReopenEvery speeds up MS Word document generation and is strongly recommended. The default value is 12; a higher value may be faster for a given document, so it is worth testing. See also discussion on this option and its resulting performance improvement.Java processing (validation, statistics, collecting documentation from the in-memory model for the writers, and XML generation for web access) takes a few seconds for all the models and scenarios tested.
The following known limitations (not planned to be addressed soon) and performance advice apply when running jCleanCim:
To validate the model only, or to generate XML or Word documents without diagrams, use model.builder=db, the fastest option; this builder cannot export diagrams. With any other builder option, and when docgen.on=true, diagrams get exported from the EA model (in order to be used in the generated doc), while with docgen.on=false (or empty, or absent) document generation is disabled and no diagrams are exported. Skipping diagram export saves 300–500 ms per normative diagram: at least half a minute for a model with 100 normative diagrams.
EA ordering errors. (since 1.8.0) In the initial, model building phase, you may see logged ERROR (+++ EA ordering error) for several UML elements (diagrams, packages, classes, etc.). EA’s internal storage does not always keep the order of items in a container up to date. Through the API (very slow), jCleanCim follows the order returned by EA. When processing SQL query results (faster) or reading the tables directly (fastest), those position indices may be uninitialised, as stored in the repository. To fix the order, open the model in EA and move an item in the indicated list up and then down again; this triggers EA’s internal update, and the error no longer appears on the next run.
model.builder=japi is still used for reading the EA file:
Contributions of a portable solution that does not modify the user’s registry are welcome; please submit the code with test cases as a GitHub issue or pull request for integration into the baseline. Until then, on a non-English installation of MS Word, add the English custom caption labels Figure and Table. If jCleanCim fails on a non-English installation of MS Word, the most likely cause is that these English caption labels have not been defined.
For an overview of all configuration options, unpack a release into your local directory and open doc/api/org/tanjakostic/jcleancim/common/Config.html. You can reach the same page from doc/api/index.html by selecting the class Config from the class list. The javadoc is generated at build time and ships inside each distribution, so it is not part of this site.
Starting with release 2.0.0, jCleanCim has been licensed under the terms of GNU LGPLv3 license and includes a modified copyright. The copyright as well as a reference to the license for this software is available at the download site, and is included in every distribution and in every java source file.
An accessible comparison of open-source licenses is available at choosealicense.com.