Creating a NIEM IEPD

Enterprise Architect's MDG Technology for NIEM provides a basic IEPD model as a starting point from which you can build your own IEPD model.

You can add the IEPD starter model to your project using the Model Wizard.

This figure shows the IEPD Starter Model pattern, available from the Model Wizard.

This topic provides an overview of the steps required to create a new NIEM IEPD model in Enterprise Architect, and to generate an IEPD from that model.

Creating a NIEM IEPD model and generating a NIEM IEPD



See also

Create a new EA project

Launch Enterprise Architect and create a new project.

The Model Wizard displays. 

Click on the 'Model Patterns' page, select the 'Framework' technology and scroll to find the NIEM 3.0 patterns.

It is essential that your NIEM project contains the NIEM 3 MPD Types and at least one of the NIEM 3 Reference Models.

Select the checkboxes for the NIEM 3 MPD Types and one of the NIEM 3 Reference Models.

Also available in the Model Wizard is a model pattern for basic NIEM IEPD.  This is intended as a starting point for your NIEM project.  Optionally select the checkbox for the NIEM 3 Starter Model.

Click OK to download and import the selected models into your project.

Create an IEPD model

If you chose not to include the IEPD model in the previous step, you can create your own model now.

In the Project Browser, create a new Package or (View node) to hold your IEPD model.

Within the new Package, create a NIEM 3.0 MPD diagram.

You can add instances of the types available in the NIEM 3 MPD Types Package to your diagram (and to your IEPD model), by dragging them onto your MPD diagram.

Use the Project Browser to locate the Class types that you require, then press Ctrl as you drag the element into position on your diagram.  The system prompts you to choose an action; either: 

  • place a link to the Class on the diagram, or
  • create and add a new instance specification of the Class

For the MPD model, you would generally use Object Instances.

To begin with, create an Object Instance of the ModelPackageDescription Class. (As you will see shortly, you need an instance of ModelPackageDescription to drive the generation of your MPD.)

Customize your model

Whether you chose to download the IEPD Starter Model, or created your own IEPD model by dragging instances from the Project Browser, you must set values for the properties of the object instances that are appropriate to the model you are creating.  This is achieved by setting the run-state properties of the various object instances used in your IEPD model.

The Package 'NIEM 3 MDP Types' contains definitions for the Class 'Model Package Description', as well as a number of other Classes.  These other Classes are referenced as classifiers for attributes of the 'Model Package Description' Class.  Relationships between the various Classes defined in this Package, can be viewed on the diagram 'NIEM-UML Model Package Description'.

The 'Model Package Description' Class has a number of attributes that are simple string types, as well as some attributes that are classified by types that are defined within the 'NIEM 3 MDP Types' Package.

When setting the run state values for properties with simple types in the Model Package Description object, you can use the 'Set Run State' command.  This can be accessed by right-clicking the object on a diagram, then choosing 'Features & Properties | Set Run State...' (or by pressing Ctrl+Shift+R).

Where properties reference other Classes as their types, you cannot simply enter a run state value.

Enterprise Architect supports two methods of specifying values for these properties, each method requires creation of an object instance of the referenced Class.

You should create an object instance of the type corresponding to the property, then either create an association between the two objects and set a role name for the property being set, or nest the object as a child within the object whose properties are being set and name the child object using the name of the property being set.  When associating an object, the object's name is not important, but the role name must match the name of the property being set.

For example, you might create an object instance of the type IEPConformanceTargetType and nest it within the Model Package Description object.  In this case, the child object must be named 'IEPConformanceTarget' to correspond with the attribute of that name in the Class definition.  Ensure that the child object is indeed nested within the parent, by inspecting the hierarchy shown in the Project Browser.

If using a role name on an association, create the 'property' object as a separate (non-nested) object instance, then create an association from the 'owner' to the 'object' and finally specify a role name for the target object. For example, create an association from the Model Package Description object to an object instance of IEPConformanceTargetType.  Open the 'Properties' dialog for the association and name the role of the target as 'IEPConformanceTarget', to correspond to the name of the attribute in the 'Model Package Description' Class. Again, in this scenario, the name of the object itself is not important, it could even be anonymous, but the role name must match the name of the attribute whose value you are setting.

Note that a Model Package Description object might specify many IEPConformanceTargets.  You must create an object instance for each one and each one must be named 'IEPConformanceTarget'.

Either of these techniques can then be used to set properties within the IEPConformanceTargetType object. For example, to set the value of the ValidityConstraintWithContext attribute, create an object instance of the Class ValidityConstraintWithContextType (which might be an instance of the derived type QualifiedNamesType) and either name it and nest it, or associate it and name the role.

File use can be modeled by adding Artifact elements to the diagram and linking with the required File Type Usage connector from the toolbox.

Create your data model

This is where you model the data that will be sent in your information exchange message.

In NIEM, this is typically modeled within Packages that have the <<InformationModel>> stereotype, representing the different namespaces used in the model. These Packages typically include a Niem-core Package that is a subset of the Niem-core reference model Package, and two extension Packages that extend what is available from Niem-core, one of which represents the exchange message.

Your project might also require subsets of other NIEM schemas, such as those from the Biometrics or EmergencyManagement domains.

For further information on creating data models, see the help topics Creating a NIEM 3.0 Data Model and Subsetting NIEM with the Schema Composer.

Subsetting NIEM with the Schema Composer

Generate the IEPD

Your NIEM model does not have to be complete before you generate an IEPD from it.

Generating the IEPD can be considered an iterative process.  You might perform a generation of just your namespace schemas before you have completed your Model Package Description and before you have defined your conformance targets.  You might generate with a fully described MPD instance and conformance targets before you have defined your Information Models.  You can continue to update your model and generate your IEPD however you see fit.

To generate your IEPD, select the Model Package Description instance specification, either on the diagram or in the Project Browser. Right-click the MPD instance to open the context menu or go to the main menu, and select 'Extensions | NIEM 3.0 | Generate NIEM 3.0 Schema'.

The Generate NIEM MPD Schemas window will open.

This window lists the Namespace Schemas that are used in your model and you can select which of these to generate.  You can also choose which of the NIEM infrastructure schemas to include in the generation.

In this window you can also set the root directory for generation of the output files, and the relative paths within that directory for the Namespace Schemas that will be generated.

Once you have made your selection and specified the file paths, click on the Generate button to commence generation of the IEPD.

For detailed information on the Generate NIEM MPD Schemas window, see the Help topic NIEM MPD Generation.

NIEM MPD Generation


  • ALL projects containing NIEM 3 models must include the NIEM 3 MPD Types Package downloaded via the Model Wizard; the ModelPackageDescription instance is central to your NIEM model
    The instance and the relationships to <<InformationModel>> Packages and other artifacts, are used to drive the MPD Generation; without an MPD instance in your model, you will not be able to generate an MPD
  • Usually, you must have at least one of the NIEM 3 Reference Models imported into your project; the reference models contain UML representations of the Niem-core reference schema, as well as the many domain specific reference schemas, which must be available in your project if you intend to create subset schemas using Enterprise Architect's Schema Composer