Power Tip: Using Alternate Versions of Intelligence Community Specifications

DDMSence comes bundled with the Public Release versions of the IC Information Security Marking (ISM), Need-to-Know Metadata (NTK), and Virtual (VIRT) schemas, which allows them to be distributed without caveat on the public Internet. For many developers, this should be sufficient. However, some developers may need to make use of values from higher classification versions of the specifications (such as the FOUO version). The instructions below show you how to replace the bundled files from one of the supported versions of DDMS with your own copies.

Information Security Marking (ISM)


  1. These instructions assume that you are updating from a Public Release to a more restricted release, and are NOT changing ISM versions altogether. Please remember that each DDMS version identifies one specific supported version of ISM. For example, in DDMS 4.1, replacing ISM.XML V9 Public Release with ISM.XML V9 FOUO is supported, but replacing it with ISM.XML V4 FOUO may have unexpected side effects or simply fail to work.
  2. Out of the box, DDMSence only contains files cleared for Public Release. Using restricted files with DDMSence does not absolve you of your responsibility for obeying all handling and dissemination instructions on those files. Do not proceed unless you are comfortable with this responsibility.

What You Need

  1. The top-level ISM schema files, IC-ISM.xsd and CVEGeneratedTypes.xsd (the latter schema only exists in earlier versions). These files might be found in your ISM archive at ISM9/Schema/ISM/.
  2. The supporting generated CVE schemas. These files might be found at ISM9/Schema/ISM/CVEGenerated/.
  3. The raw vocabulary files used to create the schemas. These files might be found at ISM9/CVE/ISM/.


  1. First, decide on a classpath-accessible directory where your files will be stored.
  2. DDMSence will expect ISM schema files to be available at schemas/<ddmsVersionNumber>/ISM/, relative to the library. In your custom directory, set up the appropriate schemas/<ddmsVersionNumber>/ISM/ directory structure, according to the diagram on the upper right. It should contain the top-level ISM schemas, a subdirectory (CVEGenerated) for the generated schemas, and a subdirectory (CVE) for the raw vocabulary files.
  3. Next, you will need to edit the classpath of your JVM to ensure that this directory structure has a higher priority than the DDMSence JAR file by loading it before the JAR file.
  4. When you run your program, DDMSence will search your custom directory first, and only turn to the bundled files in the DDMSence JAR if it cannot find the custom directory.
  5. To confirm your success, try creating a DDMS XML instance that uses vocabulary values not found in the bundled ISM files. Normally if you tried to open this instance with the Essentials sample program, it would complain about the vocabulary value. If you have followed these instructions properly, the instance should load correctly.


  1. This example shows how you would swap ISM files for DDMS 5.0.
  2. Let's use the directory, C:\tomcat\shared\classes, as the location for our schemas.
  3. After following the instructions for creating the directory structure, you should now have a file at C:\tomcat\shared\classes\schemas\5.0\ISM\CVE\CVEnumISMClassificationAll.xml.
  4. The commands below show how you would add this custom directory into your classpath. It assumes that your classpath was original stored in an the environment variable (DDMSENCE_CLASSPATH), and places the custom directory first. Afterwards, it runs the Essentials sample program.
  5. set DDMSENCE_CLASSPATH=C:\tomcat\shared\classes;%DDMSENCE_CLASSPATH%
    java -cp %DDMSENCE_CLASSPATH% buri.ddmsence.samples.Essentials

    Figure 1. Putting your custom directory at the beginning of your classpath, in Windows/DOS

Need-to-Know Metadata (NTK)

The same instructions can be used to swap NTK versions. There is only a single NTK schema file, IC-NTK.xsd which DDMSence expects to find at schemas/<ddmsVersionNumber>/NTK/.

Virtual Coverage (VIRT)

The same instructions can be used to swap VIRT versions. You will need two files (DDMSence does not make use of the CVE file for VIRT):

DDMSence expects to find these files at schemas/<ddmsVersionNumber>/VIRT/.

Back to Top
Back to Power Tips