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)
- 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.
- 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
- The top-level ISM schema files,
CVEGeneratedTypes.xsd (the latter schema only exists in earlier versions).
These files might be found in your ISM archive at
- The supporting generated CVE schemas. These files might be found at
- The raw vocabulary files used to create the schemas. These files might be found at
- First, decide on a classpath-accessible directory where your files will be stored.
- 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.
- 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.
- 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.
- 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.
- This example shows how you would swap ISM files for DDMS 5.0.
- Let's use the directory,
C:\tomcat\shared\classes, as the location for our schemas.
- After following the instructions for creating the directory structure, you should now have a file at
- 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
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
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
Back to Top
Back to Power Tips