Skip to content
CONTEXT MAPPER
  • Docs
  • Language Reference
  • Generators
  • News
  • Background
  • Get Involved
    Introduction
    • Welcome
    • Getting started
    • Create CML Project
    • Examples
    • Usage as Library
    • Frequently Asked Questions
    Language Reference (Core)
    • CML Reference - Introduction
    • Language Semantics
    • Context Map
    • Bounded Context
    • Domain and Subdomain
    • Domain Vision Statement
    • Partnership
    • Shared Kernel
    • Customer/Supplier
    • Conformist
    • Open Host Service
    • Anticorruption Layer
    • Published Language
    • Responsibility Layers
    • Knowledge Level
    • Aggregate
    • Tactic DDD Syntax
    • Application and Process Layer
    • User Requirements
    • Stakeholders
    • Value Registers
    • Imports
    Analysis and Design Transformations
    • Rapid Object-oriented Analysis and Design
    • Story Splitting (PoC)
    • Stakeholder and Value Modelling Transformations
    Architectural Refactorings (ARs)
    • Architectural Refactorings
    • AR-1: Split Aggregate by Entities
    • AR-2: Split Bounded Context by Features
    • AR-3: Split Bounded Context by Owner
    • AR-4: Extract Aggregates by Volatility
    • AR-5: Extract Aggregates by Cohesion
    • AR-6: Merge Aggregates
    • AR-7: Merge Bounded Contexts
    • AR-8: Extract Shared Kernel
    • AR-9: Suspend Partnership
    • AR-10: Change Shared Kernel to Partnership
    • AR-11: Change Partnership to Shared Kernel
    Value-Driven Analysis and Design
    • Value-Driven Analysis and Design (VDAD) Support
    Service Cutter
    • Context Map Suggestions with Service Cutter
    • Service Cutter Configuration File (.servicecutter.yml)
    Reverse Engineering
    • Context Map Discovery
    Generators
    • Generators Overview
    • Context Map Generator
    • PlantUML Generator
    • BPMN Sketch Miner Generator
    • MDSL (Micro-)Service Contracts Generator
    • Service Cutter Generators
    • Generic Generator (Templating)
    Tutorials
    • Model Event Storming Results in Context Mapper
    • Event Sourcing and CQRS Modeling in Context Mapper
    • Generate Microservices From Context Map Using JHipster
    • Systematic Service Decomposition with Context Mapper and Service Cutter
    • Validating the Implementation against the Model (with ArchUnit)
    IDE Plugins and Extensions
    • Visual Studio Code Extension
    • Online IDE (no longer supported)
    • Eclipse Plugin
    • Feature Support

    Getting started

    To model with Context Mapper you need either our Eclipse Plugin or our Visual Studio Code extension. Both provide support for the CML language and its surrounding tools. Please note that the VS Code extension does not support all our features yet. Here you can find a table that illustrates which features are available in Eclipse and VS code. The VS code extension shall support all features soon!

    VS Code Extension

    To start using Context Mapper in Visual Studio code, you can simply install or download our extension via the marketplace:

    VS Code Marketplace: Context Mapper

    Or search for “Context Mapper” in the extension view of your visual studio code.

    Note: Does not support all features we have in Eclipse yet. You can find a feature support table here.

    Eclipse Plugin

    To start using Context Mapper in Eclipse, please install the plugin via the Eclipse Marketplace or our update site:

    Eclipse Marketplace: Context Mapper

    • Alternatively you can use the following update site URL for manual installation in Eclipse: https://contextmapper.org/eclipse-update-site/

    System Requirements

    Besides the IDE plugin/extension, you need the following tools on your machine:

    • Java JDK (JDK 8 or newer)
      • If using VS Code, there is an active issue with the recent versions of the JDK. Installing the archived version of JDK 15 GA seems to work.
    • If you want to use our Context Map generator, you must have installed Graphviz on your system.
      • Ensure that the binaries are part of the PATH environment variable and can be called from the terminal.
      • Especially on Windows this is not the case after the installation of Graphviz. The default installation path is C:\Program Files (x86)\GraphvizX.XX, which means you have to add C:\Program Files (x86)\GraphvizX.XX\bin to your PATH variable.
    • A PlantUML viewer for the Eclipse or VS Code:
      • You may want to install one the following two plugins to display the plantUML diagrams directly in Eclipse:
        • Asciidoctor Editor (Update site: https://dl.bintray.com/de-jcup/asciidoctoreditor)
        • PlantUML Eclipse Plugin (Update site: http://hallvard.github.io/plantuml/)
        • Note: Both plugins also require Graphviz to be installed on your machine!
        • Alternatively you can use a plantUML online server.
      • In VS Code you can also find several extensions for PlantUML.
        • Just search for “PlantUML” in the extensions view of your VS code.

    Note: If you want to integrate the DSL and its tools as library within your application, find more information here.

    Latest Releases

    Release notes for all our latest releases can be found here.

    Example

    The following example gives you a first impression how CML context maps look like: (DDD Sample Application)

    /**
     * The DDD Cargo sample application modeled in CML. Note that we split the application into
     * multiple bounded contexts.
     *
     */
    ContextMap {
      contains CargoBookingContext
      contains VoyagePlanningContext
      contains LocationContext
    
      CargoBookingContext [SK]<->[SK] VoyagePlanningContext
    
      CargoBookingContext [D]<-[U,OHS,PL] LocationContext
    
      VoyagePlanningContext [D]<-[U,OHS,PL] LocationContext
    }
    

    The bounded contexts have to be specified before you can use them within a context map. A simple example of a bounded context definition is:

    BoundedContext LocationContext {
      Module location {
        Aggregate Location {
          Entity Location {
            aggregateRoot
    
            PortCode portcode
            - UnLocode unLocode
              String name
          }
    
          ValueObject UnLocode {
            String unLocode
          }
    
          ValueObject LocationShared {
            PortCode portCode
            - Location location
          }
        }
      }
    }
    

    Next steps…

    A First Model

    Once you have installed Context Mapper, you can create a CML (Xtext) project and start modeling. Find more information how to create such a project here:

    • Create CML Project

    Check out our example models and the language reference if you do not want to start with an empty CML model.

    Refactorings and Generators

    Once you created your first Context Map in CML you can use the following tools to evolve your model and generate other representations of your architecture:

    • Use Architectural Refactorings (ARs) to evolve your model iteratively.
    • Generate graphical Context Maps
    • Generate PlantUML component and class diagrams
    • Generate MDSL (micro-)service contracts
    • Generate arbitrary textual files with Freemarker templates

    Reverse Engineer Context Map and Bounded Contexts

    In case you work on a project with existing monolithic or (micro-)service-oriented architectures you may want to reverse engineer an initial Context Map or the domain models within your Bounded Contexts to simplify the start with our tool. In this case have a look at our reverse engineering library which is able to generate CML models from existing source code.

    Improve this page on GitHub
    ← PreviousWelcome Next →Create CML Project
    © 2026 Context Mapper contributors
    • GitHub
    • Get Involved
    • Background & Publications
    • RSS