You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/09/23 15:10:44 UTC

[isis] branch master updated: ISIS-2437: add c4 diagrams to System Overview (no relations yet)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new d776505  ISIS-2437: add c4 diagrams to System Overview (no relations yet)
d776505 is described below

commit d77650555a5e334ac725115d38a13b0776975e6a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Sep 23 17:10:31 2020 +0200

    ISIS-2437: add c4 diagrams to System Overview (no relations yet)
---
 .../system/modules/ROOT/pages/about.adoc           | 1381 +++++++++++++++++++-
 .../main/java/org/apache/isis/tooling/c4/C4.java   |   48 +-
 .../org/apache/isis/tooling/c4/test/C4Test.java    |   76 +-
 ...ldung-example.puml => baeldung-example-v1.puml} |    0
 .../isis/tooling/c4/test/baeldung-example-v2.puml  |   33 +
 tooling/cli/pom.xml                                |    5 +
 .../isis/tooling/cli/projdoc/ProjectDocModel.java  |   51 +-
 .../isis/tooling/model4adoc/AsciiDocFactory.java   |   52 +
 tooling/pom.xml                                    |    6 +
 9 files changed, 1625 insertions(+), 27 deletions(-)

diff --git a/antora/components/system/modules/ROOT/pages/about.adoc b/antora/components/system/modules/ROOT/pages/about.adoc
index 2722d40..5d84d3a 100644
--- a/antora/components/system/modules/ROOT/pages/about.adoc
+++ b/antora/components/system/modules/ROOT/pages/about.adoc
@@ -4,6 +4,49 @@ These tables summarize all Maven artifacts available with _Apache Isis_.
 
 == Base
 
+[plantuml,Base,svg]
+----
+@startuml(id=Base)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis\n<size:10>[Container: packaging: pom]</size>" <<4>> as 4
+  rectangle "==Apache Isis (Aggregator)\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+  rectangle "==Apache Isis Antora\n<size:10>[Container: packaging: pom]</size>" <<3>> as 3
+  rectangle "==Apache Isis Supplemental - Legal Info\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
+}
+@enduml
+----
+
 .Projects/Modules (Base)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -51,6 +94,31 @@ These tables summarize all Maven artifacts available with _Apache Isis_.
 
 == Commons
 
+[plantuml,Commons,svg]
+----
+@startuml(id=Commons)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Commons\n<size:10>[Container: packaging: jar]</size>" <<2>> as 2
+}
+@enduml
+----
+
 .Projects/Modules (Commons)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -61,7 +129,7 @@ These tables summarize all Maven artifacts available with _Apache Isis_.
 |jar
 |\commons
 |Apache Isis Commons
-|Isis library, defining utilities (potentially) required by the entire Apache Isis ecosystem.
+|Apache Isis Commons is a library with utilities, that are shared with the entire Apache Isis ecosystem.
 
 _Dependencies_
 
@@ -70,6 +138,7 @@ _Dependencies_
 * javax:javaee-api:jar:<managed>
 * org.junit.jupiter:junit-jupiter-api:jar:<managed>
 * org.junit.jupiter:junit-jupiter-engine:jar:<managed>
+* org.junit.jupiter:junit-jupiter-params:jar:<managed>
 * org.junit.vintage:junit-vintage-engine:jar:<managed>
 * org.slf4j:slf4j-api:jar:<managed>
 * org.springframework:spring-context:jar:<managed>
@@ -83,6 +152,91 @@ _Dependencies_
 
 == Core
 
+[plantuml,Core,svg]
+----
+@startuml(id=Core)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<11>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<12>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<8>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<9>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<10>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Core\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+  rectangle "==Apache Isis Core - AppLib\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
+  rectangle "==Apache Isis Core - Code Gen (ByteBuddy)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Core - Configuration\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
+  rectangle "==Apache Isis Core - MetaModel\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+  rectangle "==Apache Isis Core - Runtime\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
+  rectangle "==Apache Isis Core - Runtime Services\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
+  rectangle "==Apache Isis Core - Schemas\n<size:10>[Container: packaging: jar]</size>" <<12>> as 12
+  rectangle "==Apache Isis Core - Security\n<size:10>[Container: packaging: jar]</size>" <<10>> as 10
+  rectangle "==Apache Isis Core - Unit Test Support\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
+  rectangle "==Apache Isis Core - WebApp\n<size:10>[Container: packaging: jar]</size>" <<11>> as 11
+}
+@enduml
+----
+
 .Projects/Modules (Core)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -117,6 +271,7 @@ _Components_
 * org.apache.isis.applib.annotation.ViewModel
 * org.apache.isis.applib.services.audit.AuditerServiceLogging
 * org.apache.isis.applib.services.clock.ClockService
+* org.apache.isis.applib.services.command.CommandService
 * org.apache.isis.applib.services.command.spi.CommandServiceListener$Null
 * org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto
 * org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandsDto
@@ -394,6 +549,31 @@ _Dependencies_
 
 == App
 
+[plantuml,App,svg]
+----
+@startuml(id=App)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Starter Parent\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+}
+@enduml
+----
+
 .Projects/Modules (App)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -412,6 +592,61 @@ _Dependencies_
 
 == Mavendeps
 
+[plantuml,Mavendeps,svg]
+----
+@startuml(id=Mavendeps)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Maven Deps\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+  rectangle "==Apache Isis Maven Deps - BDD Integ Spec\n<size:10>[Container: packaging: pom]</size>" <<3>> as 3
+  rectangle "==Apache Isis Maven Deps - Integration Testing\n<size:10>[Container: packaging: pom]</size>" <<4>> as 4
+  rectangle "==Apache Isis Maven Deps - JDK11\n<size:10>[Container: packaging: pom]</size>" <<5>> as 5
+  rectangle "==Apache Isis Maven Deps - Testing\n<size:10>[Container: packaging: pom]</size>" <<6>> as 6
+  rectangle "==Apache Isis Maven Deps - Webapp\n<size:10>[Container: packaging: pom]</size>" <<7>> as 7
+}
+@enduml
+----
+
 .Projects/Modules (Mavendeps)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -511,6 +746,61 @@ _Dependencies_
 
 == Mappings
 
+[plantuml,Mappings,svg]
+----
+@startuml(id=Mappings)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Ext - REST Client (applib)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+  rectangle "==Apache Isis Ext - REST Client (parent)\n<size:10>[Container: packaging: pom]</size>" <<6>> as 6
+  rectangle "==Apache Isis Map - JaxRS Client (applib)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Map - JaxRS Client (impl)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
+  rectangle "==Apache Isis Map - JaxRS Client (parent)\n<size:10>[Container: packaging: pom]</size>" <<3>> as 3
+  rectangle "==Apache Isis Mappings\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+}
+@enduml
+----
+
 .Projects/Modules (Mappings)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -589,6 +879,61 @@ _Dependencies_
 
 == Persistence
 
+[plantuml,Persistence,svg]
+----
+@startuml(id=Persistence)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Persistence - JDO\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+  rectangle "==Apache Isis Persistence - JDO (applib)\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
+  rectangle "==Apache Isis Persistence - JDO (datanucleus 5)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Persistence - JPA\n<size:10>[Container: packaging: pom]</size>" <<5>> as 5
+  rectangle "==Apache Isis Persistence - JPA (applib)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
+  rectangle "==Apache Isis Persistence - JPA (model)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+}
+@enduml
+----
+
 .Projects/Modules (Persistence)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -699,6 +1044,43 @@ _Dependencies_
 
 == Security
 
+[plantuml,Security,svg]
+----
+@startuml(id=Security)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Security - Bypass\n<size:10>[Container: packaging: jar]</size>" <<2>> as 2
+  rectangle "==Apache Isis Security - Keycloak\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
+  rectangle "==Apache Isis Security - Shiro\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+}
+@enduml
+----
+
 .Projects/Modules (Security)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -769,6 +1151,151 @@ _Dependencies_
 
 == Valuetypes
 
+[plantuml,Valuetypes,svg]
+----
+@startuml(id=Valuetypes)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<22>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<11>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<12>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<13>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<14>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<15>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<16>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<17>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<18>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<19>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<8>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<9>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<20>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<21>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<10>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Val - Asciidoctor (MetaModel)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
+  rectangle "==Apache Isis Val - Asciidoctor (Persistence)\n<size:10>[Container: packaging: pom]</size>" <<6>> as 6
+  rectangle "==Apache Isis Val - Asciidoctor (applib)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Val - Asciidoctor (parent)\n<size:10>[Container: packaging: pom]</size>" <<3>> as 3
+  rectangle "==Apache Isis Val - Asciidoctor (persistence jdo DN5)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+  rectangle "==Apache Isis Val - Asciidoctor (ui vaadin)\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
+  rectangle "==Apache Isis Val - Asciidoctor (ui wicket)\n<size:10>[Container: packaging: jar]</size>" <<10>> as 10
+  rectangle "==Apache Isis Val - Asciidoctor (ui)\n<size:10>[Container: packaging: pom]</size>" <<8>> as 8
+  rectangle "==Apache Isis Val - Markdown (MetaModel)\n<size:10>[Container: packaging: jar]</size>" <<13>> as 13
+  rectangle "==Apache Isis Val - Markdown (Persistence)\n<size:10>[Container: packaging: pom]</size>" <<14>> as 14
+  rectangle "==Apache Isis Val - Markdown (applib)\n<size:10>[Container: packaging: jar]</size>" <<12>> as 12
+  rectangle "==Apache Isis Val - Markdown (parent)\n<size:10>[Container: packaging: pom]</size>" <<11>> as 11
+  rectangle "==Apache Isis Val - Markdown (persistence jdo DN5)\n<size:10>[Container: packaging: jar]</size>" <<15>> as 15
+  rectangle "==Apache Isis Val - Markdown (ui wicket)\n<size:10>[Container: packaging: jar]</size>" <<17>> as 17
+  rectangle "==Apache Isis Val - Markdown (ui)\n<size:10>[Container: packaging: pom]</size>" <<16>> as 16
+  rectangle "==Apache Isis Val - SSE (ui)\n<size:10>[Container: packaging: pom]</size>" <<21>> as 21
+  rectangle "==Apache Isis Val - Server Sent Events\n<size:10>[Container: packaging: jar]</size>" <<19>> as 19
+  rectangle "==Apache Isis Val - Server Sent Events (metamodel)\n<size:10>[Container: packaging: jar]</size>" <<20>> as 20
+  rectangle "==Apache Isis Val - Server Sent Events (parent)\n<size:10>[Container: packaging: pom]</size>" <<18>> as 18
+  rectangle "==Apache Isis Val - Server Sent Events (ui wicket)\n<size:10>[Container: packaging: jar]</size>" <<22>> as 22
+  rectangle "==Apache Isis Value types\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+}
+@enduml
+----
+
 .Projects/Modules (Valuetypes)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -1062,6 +1589,91 @@ _Dependencies_
 
 == Viewer
 
+[plantuml,Viewer,svg]
+----
+@startuml(id=Viewer)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<11>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<12>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<8>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<9>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<10>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Viewer - Common Model\n<size:10>[Container: packaging: jar]</size>" <<2>> as 2
+  rectangle "==Apache Isis Viewer - RO\n<size:10>[Container: packaging: pom]</size>" <<3>> as 3
+  rectangle "==Apache Isis Viewer - RO (AppLib)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Viewer - RO (JAX-RS Resteasy v4)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
+  rectangle "==Apache Isis Viewer - RO (Rendering)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
+  rectangle "==Apache Isis Viewer - RO (Testing)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+  rectangle "==Apache Isis Viewer - RO (Viewer)\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
+  rectangle "==Apache Isis Viewer - Wicket\n<size:10>[Container: packaging: pom]</size>" <<9>> as 9
+  rectangle "==Apache Isis Viewer - Wicket (Model)\n<size:10>[Container: packaging: jar]</size>" <<10>> as 10
+  rectangle "==Apache Isis Viewer - Wicket (UI Components)\n<size:10>[Container: packaging: jar]</size>" <<11>> as 11
+  rectangle "==Apache Isis Viewer - Wicket (Viewer)\n<size:10>[Container: packaging: jar]</size>" <<12>> as 12
+}
+@enduml
+----
+
 .Projects/Modules (Viewer)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -1298,6 +1910,127 @@ _Dependencies_
 
 == Testing
 
+[plantuml,Testing,svg]
+----
+@startuml(id=Testing)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<11>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<12>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<13>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<14>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<15>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<16>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<17>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<18>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<8>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<9>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<10>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Testing\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+  rectangle "==Apache Isis Tst - FakeData (applib)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Tst - FakeData (fixtures)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
+  rectangle "==Apache Isis Tst - FakeData (integ tests)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
+  rectangle "==Apache Isis Tst - FakeData (parent)\n<size:10>[Container: packaging: pom]</size>" <<3>> as 3
+  rectangle "==Apache Isis Tst - Fixtures (applib)\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
+  rectangle "==Apache Isis Tst - Fixtures (parent)\n<size:10>[Container: packaging: pom]</size>" <<7>> as 7
+  rectangle "==Apache Isis Tst - H2 Console (parent)\n<size:10>[Container: packaging: pom]</size>" <<9>> as 9
+  rectangle "==Apache Isis Tst - H2 Console (ui)\n<size:10>[Container: packaging: jar]</size>" <<10>> as 10
+  rectangle "==Apache Isis Tst - HSQLDB Manager\n<size:10>[Container: packaging: jar]</size>" <<12>> as 12
+  rectangle "==Apache Isis Tst - HSQLDB Manager (parent)\n<size:10>[Container: packaging: pom]</size>" <<11>> as 11
+  rectangle "==Apache Isis Tst - Integ Test Support (applib)\n<size:10>[Container: packaging: jar]</size>" <<14>> as 14
+  rectangle "==Apache Isis Tst - Integ Test Support (parent)\n<size:10>[Container: packaging: pom]</size>" <<13>> as 13
+  rectangle "==Apache Isis Tst - Spec/Cucumber (applib)\n<size:10>[Container: packaging: jar]</size>" <<16>> as 16
+  rectangle "==Apache Isis Tst - Spec/Cucumber (parent)\n<size:10>[Container: packaging: pom]</size>" <<15>> as 15
+  rectangle "==Apache Isis Tst - Unit Test Support (applib)\n<size:10>[Container: packaging: jar]</size>" <<18>> as 18
+  rectangle "==Apache Isis Tst - Unit Test Support (parent)\n<size:10>[Container: packaging: pom]</size>" <<17>> as 17
+}
+@enduml
+----
+
 .Projects/Modules (Testing)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -1541,6 +2274,37 @@ _Dependencies_
 
 == Regression Tests
 
+[plantuml,Regression Tests,svg]
+----
+@startuml(id=Regression_Tests)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis - Regression Tests\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+  rectangle "==Apache Isis - Regression Tests (stable)\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
+}
+@enduml
+----
+
 .Projects/Modules (Regression Tests)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -1599,6 +2363,205 @@ _Dependencies_
 
 == Extensions
 
+[plantuml,Extensions,svg]
+----
+@startuml(id=Extensions)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<22>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<23>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<24>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<25>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<26>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<27>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<28>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<29>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<30>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<31>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<10>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<11>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<12>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<13>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<14>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<15>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<16>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<17>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<18>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<19>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<8>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<9>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<20>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<21>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Ext - @Model\n<size:10>[Container: packaging: jar]</size>" <<17>> as 17
+  rectangle "==Apache Isis Ext - CORS (impl)\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
+  rectangle "==Apache Isis Ext - CORS (parent)\n<size:10>[Container: packaging: pom]</size>" <<8>> as 8
+  rectangle "==Apache Isis Ext - Command Log\n<size:10>[Container: packaging: pom]</size>" <<3>> as 3
+  rectangle "==Apache Isis Ext - Command Log Implementation (JDO)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Ext - Command Replay\n<size:10>[Container: packaging: pom]</size>" <<5>> as 5
+  rectangle "==Apache Isis Ext - Command Replay for Primary\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
+  rectangle "==Apache Isis Ext - Command Replay for Secondary\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+  rectangle "==Apache Isis Ext - Flyway\n<size:10>[Container: packaging: pom]</size>" <<12>> as 12
+  rectangle "==Apache Isis Ext - Flyway Impl\n<size:10>[Container: packaging: jar]</size>" <<13>> as 13
+  rectangle "==Apache Isis Ext - Quartz\n<size:10>[Container: packaging: pom]</size>" <<22>> as 22
+  rectangle "==Apache Isis Ext - Quartz Impl\n<size:10>[Container: packaging: jar]</size>" <<23>> as 23
+  rectangle "==Apache Isis Ext - Sec Man\n<size:10>[Container: packaging: pom]</size>" <<24>> as 24
+  rectangle "==Apache Isis Ext - Sec Man API\n<size:10>[Container: packaging: jar]</size>" <<25>> as 25
+  rectangle "==Apache Isis Ext - Sec Man Encryption (Using jbcrypt)\n<size:10>[Container: packaging: jar]</size>" <<26>> as 26
+  rectangle "==Apache Isis Ext - Sec Man Model\n<size:10>[Container: packaging: jar]</size>" <<27>> as 27
+  rectangle "==Apache Isis Ext - Sec Man Persistence (Using JDO)\n<size:10>[Container: packaging: jar]</size>" <<28>> as 28
+  rectangle "==Apache Isis Ext - Sec Man Realm (Using Shiro)\n<size:10>[Container: packaging: jar]</size>" <<29>> as 29
+  rectangle "==Apache Isis Ext - Security - Shiro LDAP Realm (impl)\n<size:10>[Container: packaging: jar]</size>" <<31>> as 31
+  rectangle "==Apache Isis Ext - Security - Shiro LDAP Realm (parent)\n<size:10>[Container: packaging: pom]</size>" <<30>> as 30
+  rectangle "==Apache Isis Ext - Wicket Viewer - Excel Download (parent)\n<size:10>[Container: packaging: pom]</size>" <<10>> as 10
+  rectangle "==Apache Isis Ext - Wicket Viewer - Excel Download (ui)\n<size:10>[Container: packaging: jar]</size>" <<11>> as 11
+  rectangle "==Apache Isis Ext - Wicket Viewer - fullcalendar (applib)\n<size:10>[Container: packaging: jar]</size>" <<15>> as 15
+  rectangle "==Apache Isis Ext - Wicket Viewer - fullcalendar (parent)\n<size:10>[Container: packaging: pom]</size>" <<14>> as 14
+  rectangle "==Apache Isis Ext - Wicket Viewer - fullcalendar (ui)\n<size:10>[Container: packaging: jar]</size>" <<16>> as 16
+  rectangle "==Apache Isis Ext - Wicket Viewer - pdf.js (applib)\n<size:10>[Container: packaging: jar]</size>" <<19>> as 19
+  rectangle "==Apache Isis Ext - Wicket Viewer - pdf.js (metamodel)\n<size:10>[Container: packaging: jar]</size>" <<20>> as 20
+  rectangle "==Apache Isis Ext - Wicket Viewer - pdf.js (parent)\n<size:10>[Container: packaging: pom]</size>" <<18>> as 18
+  rectangle "==Apache Isis Ext - Wicket Viewer - pdf.js (ui)\n<size:10>[Container: packaging: jar]</size>" <<21>> as 21
+  rectangle "==Apache Isis Extensions\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+}
+@enduml
+----
+
 .Projects/Modules (Extensions)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -1705,7 +2668,6 @@ _Dependencies_
 * org.apache.isis.core:isis-core-config:jar:<managed>
 * org.apache.isis.core:isis-core-runtime:jar:<managed>
 * org.apache.isis.core:isis-schema:jar:<managed>
-* org.apache.isis.extensions:isis-extensions-command-log-jdo:jar:<managed>
 * org.apache.isis.extensions:isis-extensions-quartz-impl:jar:<managed>
 * org.apache.isis.mappings:isis-mappings-jaxrsclient-applib:jar:<managed>
 * org.apache.isis.mappings:isis-mappings-jaxrsclient-impl:jar:<managed>
@@ -2032,6 +2994,157 @@ _Dependencies_
 
 == Subdomains
 
+[plantuml,Subdomains,svg]
+----
+@startuml(id=Subdomains)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<11>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<22>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<23>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<12>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<13>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<14>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<15>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<16>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<17>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<18>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<19>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<8>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<9>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<20>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<21>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<10>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Sub - Base (applib)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Sub - Base (parent)\n<size:10>[Container: packaging: pom]</size>" <<3>> as 3
+  rectangle "==Apache Isis Sub - Docx (applib)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
+  rectangle "==Apache Isis Sub - Docx (parent)\n<size:10>[Container: packaging: pom]</size>" <<5>> as 5
+  rectangle "==Apache Isis Sub - Excel (Fixtures)\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
+  rectangle "==Apache Isis Sub - Excel (Integ Tests)\n<size:10>[Container: packaging: jar]</size>" <<10>> as 10
+  rectangle "==Apache Isis Sub - Excel (applib)\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
+  rectangle "==Apache Isis Sub - Excel (parent)\n<size:10>[Container: packaging: pom]</size>" <<7>> as 7
+  rectangle "==Apache Isis Sub - Excel (testing support)\n<size:10>[Container: packaging: jar]</size>" <<11>> as 11
+  rectangle "==Apache Isis Sub - Freemarker (applib)\n<size:10>[Container: packaging: jar]</size>" <<13>> as 13
+  rectangle "==Apache Isis Sub - Freemarker (parent)\n<size:10>[Container: packaging: pom]</size>" <<12>> as 12
+  rectangle "==Apache Isis Sub - Ognl (applib)\n<size:10>[Container: packaging: jar]</size>" <<15>> as 15
+  rectangle "==Apache Isis Sub - Ognl (parent)\n<size:10>[Container: packaging: pom]</size>" <<14>> as 14
+  rectangle "==Apache Isis Sub - PDF Box (applib)\n<size:10>[Container: packaging: jar]</size>" <<17>> as 17
+  rectangle "==Apache Isis Sub - PDF Box (parent)\n<size:10>[Container: packaging: pom]</size>" <<16>> as 16
+  rectangle "==Apache Isis Sub - Spring (applib)\n<size:10>[Container: packaging: jar]</size>" <<19>> as 19
+  rectangle "==Apache Isis Sub - Spring (parent)\n<size:10>[Container: packaging: pom]</size>" <<18>> as 18
+  rectangle "==Apache Isis Sub - XdocReport (applib)\n<size:10>[Container: packaging: jar]</size>" <<21>> as 21
+  rectangle "==Apache Isis Sub - XdocReport (parent)\n<size:10>[Container: packaging: pom]</size>" <<20>> as 20
+  rectangle "==Apache Isis Sub - Zip (applib)\n<size:10>[Container: packaging: jar]</size>" <<23>> as 23
+  rectangle "==Apache Isis Sub - Zip (parent)\n<size:10>[Container: packaging: pom]</size>" <<22>> as 22
+  rectangle "==Apache Isis Subdomains\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+}
+@enduml
+----
+
 .Projects/Modules (Subdomains)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -2325,6 +3438,61 @@ _Dependencies_
 
 == Tooling
 
+[plantuml,Tooling,svg]
+----
+@startuml(id=Tooling)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis - Tooling\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+  rectangle "==Apache Isis Tooling - C4 Modeling\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
+  rectangle "==Apache Isis Tooling - CLI (Command Line Interface)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Tooling - Java Model (Code Mining)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
+  rectangle "==Apache Isis Tooling - Model for AsciiDoc\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
+  rectangle "==Apache Isis Tooling - Project Model (Code mining)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+}
+@enduml
+----
+
 .Projects/Modules (Tooling)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -2353,6 +3521,23 @@ _Dependencies_
 
 
 |org.apache.isis.tooling
+|isis-tooling-c4modeling
+|jar
+|\tooling\c4modeling
+|Apache Isis Tooling - C4 Modeling
+|Library for programmatic C4 Model generation. 
+        
+        See https://c4model.com/
+
+_Dependencies_
+
+* com.structurizr:structurizr-core:jar:<managed>
+* com.structurizr:structurizr-plantuml:jar:<managed>
+* org.apache.isis.commons:isis-commons:jar:<managed>
+
+
+
+|org.apache.isis.tooling
 |isis-tooling-cli
 |jar
 |\tooling\cli
@@ -2363,6 +3548,7 @@ _Dependencies_
 
 * info.picocli:picocli:jar:<managed>
 * org.apache.isis.commons:isis-commons:jar:<managed>
+* org.apache.isis.tooling:isis-tooling-c4modeling:jar:<managed>
 * org.apache.isis.tooling:isis-tooling-javamodel:jar:<managed>
 * org.apache.isis.tooling:isis-tooling-model4adoc:jar:<managed>
 * org.apache.isis.tooling:isis-tooling-projectmodel:jar:<managed>
@@ -2422,6 +3608,61 @@ _Dependencies_
 
 == Examples
 
+[plantuml,Examples,svg]
+----
+@startuml(id=Examples)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Demo - Domain\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
+  rectangle "==Demo - JavaFX\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Demo - Parent\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+  rectangle "==Demo - Vaadin\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
+  rectangle "==Demo - Web\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
+  rectangle "==Demo - Wicket\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+}
+@enduml
+----
+
 .Projects/Modules (Examples)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -2481,6 +3722,8 @@ _Dependencies_
 * demoapp.dom.annotDomain.DomainObject.publishing.metaAnnot.enabled.DomainObjectPublishingEnabledMetaAnnotatedJdoSeedService
 * demoapp.dom.annotDomain.DomainObject.publishing.metaAnnotOverridden.enabled.DomainObjectPublishingEnabledMetaAnnotOverriddenJdoEntities
 * demoapp.dom.annotDomain.DomainObject.publishing.metaAnnotOverridden.enabled.DomainObjectPublishingEnabledMetaAnnotOverriddenJdoSeedService
+* demoapp.dom.annotDomain.Property.command.PropertyCommandJdoEntities
+* demoapp.dom.annotDomain.Property.command.PropertyCommandJdoSeedService
 * demoapp.dom.annotDomain.Property.publishing.PropertyPublishingJdoEntities
 * demoapp.dom.annotDomain.Property.publishing.PropertyPublishingJdoSeedService
 * demoapp.dom.annotDomain._changes.PublisherServiceToCaptureChangesInMemory
@@ -2716,6 +3959,85 @@ _Dependencies_
 
 == Incubator
 
+[plantuml,Incubator,svg]
+----
+@startuml(id=Incubator)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<11>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<8>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<9>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<10>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Inc - Client kroViz\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
+  rectangle "==Apache Isis Inc - Viewer JavaFX\n<size:10>[Container: packaging: pom]</size>" <<4>> as 4
+  rectangle "==Apache Isis Inc - Viewer JavaFX (Model)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
+  rectangle "==Apache Isis Inc - Viewer JavaFX (UI Components)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
+  rectangle "==Apache Isis Inc - Viewer JavaFX (Viewer)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+  rectangle "==Apache Isis Inc - Viewer Vaadin\n<size:10>[Container: packaging: pom]</size>" <<8>> as 8
+  rectangle "==Apache Isis Inc - Viewer Vaadin (Model)\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
+  rectangle "==Apache Isis Inc - Viewer Vaadin (UI Components)\n<size:10>[Container: packaging: jar]</size>" <<10>> as 10
+  rectangle "==Apache Isis Inc - Viewer Vaadin (Viewer)\n<size:10>[Container: packaging: jar]</size>" <<11>> as 11
+  rectangle "==Apache Isis Incubator\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+}
+@enduml
+----
+
 .Projects/Modules (Incubator)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
@@ -2881,6 +4203,61 @@ _Dependencies_
 
 == Legacy
 
+[plantuml,Legacy,svg]
+----
+@startuml(id=Legacy)
+title package-ecosystem - Containers
+caption Artifact Dependency Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<2>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<4>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<6>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<7>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+package "package-ecosystem\n[Software System]" {
+  rectangle "==Apache Isis Legacy\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
+  rectangle "==Apache Isis Legacy - Applib\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
+  rectangle "==Apache Isis Legacy - Commons\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Legacy - Metamodel\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
+  rectangle "==Apache Isis Legacy - REST Client\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
+  rectangle "==Apache Isis Legacy - Runtime\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+}
+@enduml
+----
+
 .Projects/Modules (Legacy)
 [cols="2m,2m,1m,1m,2,5a", options="header"]
 |===
diff --git a/tooling/c4modeling/src/main/java/org/apache/isis/tooling/c4/C4.java b/tooling/c4modeling/src/main/java/org/apache/isis/tooling/c4/C4.java
index 43268a7..8b4663f 100644
--- a/tooling/c4modeling/src/main/java/org/apache/isis/tooling/c4/C4.java
+++ b/tooling/c4modeling/src/main/java/org/apache/isis/tooling/c4/C4.java
@@ -20,25 +20,34 @@ package org.apache.isis.tooling.c4;
 
 import java.util.Optional;
 
+import javax.annotation.Nullable;
+
 import com.structurizr.Workspace;
-import com.structurizr.io.plantuml.PlantUMLWriter;
+import com.structurizr.io.plantuml.AbstractPlantUMLWriter;
+import com.structurizr.io.plantuml.StructurizrPlantUMLWriter;
 import com.structurizr.model.Element;
 import com.structurizr.model.Model;
+import com.structurizr.model.Person;
+import com.structurizr.model.SoftwareSystem;
 import com.structurizr.model.Tags;
+import com.structurizr.view.Shape;
+import com.structurizr.view.SystemContextView;
 import com.structurizr.view.View;
 import com.structurizr.view.ViewSet;
 
+import org.apache.isis.commons.internal.base._Strings;
+
 import lombok.AccessLevel;
 import lombok.Getter;
+import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
 public class C4 {
 
-    final PlantUMLWriter plantUMLWriter = new PlantUMLWriter();
-
     @Getter private final Workspace workspace;
+    private final AbstractPlantUMLWriter plantUMLWriter;
 
     /**
      * Creates a new workspace.
@@ -46,12 +55,17 @@ public class C4 {
      * @param name          the name of the workspace
      * @param description   a short description
      */
-    public static C4 of(String name, String description) {
-        val c4 = new C4(new Workspace(name, description));
+    public static C4 of(@NonNull String name, @Nullable String description) {
+        val plantUMLWriter = new StructurizrPlantUMLWriter();
+        val c4 = new C4(new Workspace(name, _Strings.nullToEmpty(description)), plantUMLWriter);
         c4.applyDefaultStyles();
         return c4;
     }
-
+    
+    public String getWorkspaceName() {
+        return workspace.getName();
+    }
+    
     /**
      * @return the software architecture model
      */
@@ -72,6 +86,20 @@ public class C4 {
     public String toPlantUML(View view) {
         return plantUMLWriter.toString(view);
     }
+    
+    // -- SIMPLE FACTORIES
+    
+    public Person person(@NonNull String name, @Nullable String description) {
+        return getModel().addPerson(name, _Strings.nullToEmpty(description));
+    }
+    
+    public SoftwareSystem softwareSystem(@NonNull String name, @Nullable String description) {
+        return getModel().addSoftwareSystem(name, _Strings.nullToEmpty(description));
+    }
+    
+    public SystemContextView systemContextView(@NonNull SoftwareSystem softwareSystem, @NonNull String key, @Nullable String description) {
+        return getViewSet().createSystemContextView(softwareSystem, key, _Strings.nullToEmpty(description));
+    }
 
     // -- EXPERIMENTAL
 
@@ -89,14 +117,18 @@ public class C4 {
         val styles = getViewSet().getConfiguration().getStyles();
 
         styles.addElementStyle(Tags.ELEMENT).color("#fffffe");
-        styles.addElementStyle(Tags.PERSON).background("#08427b");
+        //styles.addElementStyle(Tags.PERSON).background("#08427b");
         styles.addElementStyle(Tags.CONTAINER).background("#438dd5");
 
 
         //        styles.addElementStyle(Tags.SOFTWARE_SYSTEM)
         //        .color("#ffffff")    
         //        .background("#1168bd");
-        //styles.addElementStyle(Tags.PERSON).background("#08427b").color("#ffffff").shape(Shape.Person);
+        styles.addElementStyle(Tags.PERSON).background("#08427b").color("#ffffff").shape(Shape.Person);
     }
 
+
+
+
+
 }
diff --git a/tooling/c4modeling/src/test/java/org/apache/isis/tooling/c4/test/C4Test.java b/tooling/c4modeling/src/test/java/org/apache/isis/tooling/c4/test/C4Test.java
index 4136a2a..568f457 100644
--- a/tooling/c4modeling/src/test/java/org/apache/isis/tooling/c4/test/C4Test.java
+++ b/tooling/c4modeling/src/test/java/org/apache/isis/tooling/c4/test/C4Test.java
@@ -24,17 +24,18 @@ import java.nio.charset.StandardCharsets;
 
 import com.structurizr.Workspace;
 import com.structurizr.io.plantuml.PlantUMLWriter;
-import com.structurizr.model.Model;
 import com.structurizr.model.Person;
 import com.structurizr.model.SoftwareSystem;
 import com.structurizr.view.SystemContextView;
-import com.structurizr.view.ViewSet;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import org.apache.isis.commons.internal.base._Text;
+import org.apache.isis.tooling.c4.C4;
+
+import lombok.val;
 
 class C4Test {
 
@@ -51,34 +52,79 @@ class C4Test {
      * see https://www.baeldung.com/structurizr
      */
     @Test
-    void testStructurizrNative() throws IOException {
+    void testStructurizr_native() throws IOException {
+        
+        // First, we need to create a Workspace and a Model:
         
-        Workspace workspace = new Workspace("Payment Gateway", "Payment Gateway");
-        Model model = workspace.getModel();
+        val workspace = new Workspace("Payment Gateway", "Payment Gateway");
+        val model = workspace.getModel();
+        
+        // We also define a user and two software systems within that model:
         
         Person user = model.addPerson("Merchant", "Merchant");
-        SoftwareSystem paymentTerminal = model.addSoftwareSystem(
-          "Payment Terminal", "Payment Terminal");
+        SoftwareSystem paymentTerminal = model
+                .addSoftwareSystem("Payment Terminal", "Payment Terminal");
         user.uses(paymentTerminal, "Makes payment");
-        SoftwareSystem fraudDetector = model.addSoftwareSystem(
-          "Fraud Detector", "Fraud Detector");
+        SoftwareSystem fraudDetector = model
+                .addSoftwareSystem("Fraud Detector", "Fraud Detector");
         paymentTerminal.uses(fraudDetector, "Obtains fraud score");
         
-        ViewSet viewSet = workspace.getViews();
+        // Now that our system is defined, we can create a view
+        // Here we created a view that includes all software systems and persons. 
+        
+        val viewSet = workspace.getViews();
         
-        SystemContextView contextView = viewSet.createSystemContextView(
-          paymentTerminal, "context", "Payment Gateway Diagram");
+        SystemContextView contextView = viewSet
+                .createSystemContextView(paymentTerminal, "context", "Payment Gateway Diagram");
         contextView.addAllSoftwareSystems();
         contextView.addAllPeople();
         
-        StringWriter stringWriter = new StringWriter();
-        PlantUMLWriter plantUMLWriter = new PlantUMLWriter();
+        // Now the view needs to be rendered.
+        
+        val stringWriter = new StringWriter();
+        val plantUMLWriter = new PlantUMLWriter();
         plantUMLWriter.write(workspace, stringWriter);
         
         _Text.assertTextEquals(
-                _Text.readLinesFromResource(this.getClass(), "baeldung-example.puml", StandardCharsets.UTF_8), 
+                _Text.readLinesFromResource(this.getClass(), "baeldung-example-v1.puml", StandardCharsets.UTF_8), 
                 stringWriter.toString());
     }
     
+    /**
+     * see https://www.baeldung.com/structurizr
+     */
+    @Test
+    void testStructurizr_usingFactory() throws IOException {
+        
+        val c4 = C4.of("Payment Gateway", "Payment Gateway");
+        
+        // We also define a user and two software systems within that model:
+        
+        Person user = c4.person("Merchant", "Merchant");
+        SoftwareSystem paymentTerminal = c4.softwareSystem("Payment Terminal", "Payment Terminal");
+        SoftwareSystem fraudDetector = c4.softwareSystem("Fraud Detector", "Fraud Detector");
+        
+        user.uses(paymentTerminal, "Makes payment");        
+        paymentTerminal.uses(fraudDetector, "Obtains fraud score");
+        
+        // Now that our system is defined, we can create a view
+        // Here we created a view that includes all software systems and persons. 
+        
+        SystemContextView contextView = c4.systemContextView(paymentTerminal, "context", "Payment Gateway Diagram");
+        contextView.addAllSoftwareSystems();
+        contextView.addAllPeople();
+        
+        // Now the view needs to be rendered.
+        
+        val plantUmlSource = c4.toPlantUML(contextView);
+        
+        // System.out.println(plantUmlSource); //debug
+        
+        _Text.assertTextEquals(
+                _Text.readLinesFromResource(this.getClass(), "baeldung-example-v2.puml", StandardCharsets.UTF_8), 
+                plantUmlSource);
+        
+    }
+    
 
 }
diff --git a/tooling/c4modeling/src/test/resources/org/apache/isis/tooling/c4/test/baeldung-example.puml b/tooling/c4modeling/src/test/resources/org/apache/isis/tooling/c4/test/baeldung-example-v1.puml
similarity index 100%
rename from tooling/c4modeling/src/test/resources/org/apache/isis/tooling/c4/test/baeldung-example.puml
rename to tooling/c4modeling/src/test/resources/org/apache/isis/tooling/c4/test/baeldung-example-v1.puml
diff --git a/tooling/c4modeling/src/test/resources/org/apache/isis/tooling/c4/test/baeldung-example-v2.puml b/tooling/c4modeling/src/test/resources/org/apache/isis/tooling/c4/test/baeldung-example-v2.puml
new file mode 100644
index 0000000..33fdad1
--- /dev/null
+++ b/tooling/c4modeling/src/test/resources/org/apache/isis/tooling/c4/test/baeldung-example-v2.puml
@@ -0,0 +1,33 @@
+@startuml(id=context)
+title Payment Terminal - System Context
+caption Payment Gateway Diagram
+
+skinparam {
+  shadowing false
+  arrowFontSize 10
+  defaultTextAlignment center
+  wrapWidth 200
+  maxMessageSize 100
+}
+hide stereotype
+skinparam rectangle<<1>> {
+  BackgroundColor #08427b
+  FontColor #ffffff
+  BorderColor #052E56
+}
+skinparam rectangle<<2>> {
+  BackgroundColor #dddddd
+  FontColor #fffffe
+  BorderColor #9A9A9A
+}
+skinparam rectangle<<3>> {
+  BackgroundColor #dddddd
+  FontColor #fffffe
+  BorderColor #9A9A9A
+}
+rectangle "==Merchant\n<size:10>[Person]</size>\n\nMerchant" <<1>> as 1
+rectangle "==Fraud Detector\n<size:10>[Software System]</size>\n\nFraud Detector" <<3>> as 3
+rectangle "==Payment Terminal\n<size:10>[Software System]</size>\n\nPayment Terminal" <<2>> as 2
+1 .[#707070].> 2 : "Makes payment"
+2 .[#707070].> 3 : "Obtains fraud score"
+@enduml
\ No newline at end of file
diff --git a/tooling/cli/pom.xml b/tooling/cli/pom.xml
index fbeae9f..d4ba5cd 100644
--- a/tooling/cli/pom.xml
+++ b/tooling/cli/pom.xml
@@ -60,6 +60,11 @@
 			<groupId>org.apache.isis.tooling</groupId>
 			<artifactId>isis-tooling-javamodel</artifactId>
 		</dependency>
+		
+		<dependency>
+			<groupId>org.apache.isis.tooling</groupId>
+			<artifactId>isis-tooling-c4modeling</artifactId>
+		</dependency>
 
 		<dependency>
 			<groupId>info.picocli</groupId>
diff --git a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocModel.java b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocModel.java
index 4663334..2c21c20 100644
--- a/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocModel.java
+++ b/tooling/cli/src/main/java/org/apache/isis/tooling/cli/projdoc/ProjectDocModel.java
@@ -28,12 +28,16 @@ import java.util.stream.Collectors;
 
 import javax.annotation.Nullable;
 
+import com.structurizr.model.SoftwareSystem;
+
 import org.asciidoctor.ast.Document;
 
 import org.apache.isis.commons.internal.base._Files;
 import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.tooling.c4.C4;
 import org.apache.isis.tooling.cli.CliConfig.ProjectDoc;
 import org.apache.isis.tooling.javamodel.AnalyzerConfigFactory;
+import org.apache.isis.tooling.model4adoc.AsciiDocFactory;
 import org.apache.isis.tooling.model4adoc.AsciiDocWriter;
 import org.apache.isis.tooling.projectmodel.ArtifactCoordinates;
 import org.apache.isis.tooling.projectmodel.Dependency;
@@ -97,14 +101,54 @@ public class ProjectDocModel {
     
     // -- HELPER
 
+    private static class GroupDiagram {
+        
+        private final C4 c4;
+        private final SoftwareSystem softwareSystem;
+        
+        public GroupDiagram(C4 c4) {
+            this.c4 = c4;
+            this.softwareSystem = c4.softwareSystem("package-ecosystem", null);
+        }
+
+        public void collect(ProjectNode module) {
+            softwareSystem.addContainer(
+                    module.getName(), 
+                    "",//module.getDescription(), 
+                    String.format("packaging: %s", module.getArtifactCoordinates().getPackaging()));
+        }
+
+        public String toPlantUml() {
+            
+            val key = c4.getWorkspaceName();
+            
+            val containerView = c4.getViewSet().createContainerView(softwareSystem, key, "Artifact Dependency Diagram");
+            containerView.addAllContainers();
+            
+            val plantUmlSource = c4.toPlantUML(containerView);
+            return plantUmlSource;
+        }
+        
+        public String toAsciiDoc() {
+            
+            val key = c4.getWorkspaceName();
+            
+            return AsciiDocFactory.SourceFactory.plantuml(toPlantUml(), key, null);
+        }
+        
+    }
+
     private void createSection(
             final @NonNull Document doc, 
             final @NonNull String sectionName, 
             final @Nullable String groupIdPattern) {
 
-        val block = block(doc);
+        val titleBlock = block(doc);
 
-        block.setSource(String.format("== %s", sectionName));
+        titleBlock.setSource(String.format("== %s", sectionName));
+        
+        val descriptionBlock = block(doc);
+        val groupDiagram = new GroupDiagram(C4.of(sectionName, null));
 
         val table = table(doc);
         table.setTitle(String.format("Projects/Modules (%s)", sectionName));
@@ -132,6 +176,7 @@ public class ProjectDocModel {
             val projRelativePath = _Files.toRelativePath(projRoot, projPath);
 
             modulesWritten.add(module);
+            groupDiagram.collect(module);
 
             val row = row(table);
             cell(table, row, module.getArtifactCoordinates().getGroupId());
@@ -142,6 +187,8 @@ public class ProjectDocModel {
             cell(table, row, details(module));
         });
 
+        descriptionBlock.setSource(groupDiagram.toAsciiDoc());
+        
         modules.removeAll(modulesWritten);
 
     }
diff --git a/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/AsciiDocFactory.java b/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/AsciiDocFactory.java
index 32cb270..46878b5 100644
--- a/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/AsciiDocFactory.java
+++ b/tooling/model4adoc/src/main/java/org/apache/isis/tooling/model4adoc/AsciiDocFactory.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.tooling.model4adoc;
 
+import javax.annotation.Nullable;
+
 import org.asciidoctor.ast.Block;
 import org.asciidoctor.ast.Cell;
 import org.asciidoctor.ast.Column;
@@ -26,6 +28,9 @@ import org.asciidoctor.ast.Row;
 import org.asciidoctor.ast.StructuralNode;
 import org.asciidoctor.ast.Table;
 
+import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.internal.base._Text;
 import org.apache.isis.tooling.model4adoc.ast.SimpleBlock;
 import org.apache.isis.tooling.model4adoc.ast.SimpleCell;
 import org.apache.isis.tooling.model4adoc.ast.SimpleColumn;
@@ -33,6 +38,7 @@ import org.apache.isis.tooling.model4adoc.ast.SimpleDocument;
 import org.apache.isis.tooling.model4adoc.ast.SimpleRow;
 import org.apache.isis.tooling.model4adoc.ast.SimpleTable;
 
+import lombok.NonNull;
 import lombok.val;
 
 /**
@@ -125,6 +131,52 @@ public class AsciiDocFactory {
         return cell(row, col, source);
     }
     
+    public static class SourceFactory {
+
+        public static String wrap(@NonNull String sourceType, @NonNull String source, @Nullable String title, Can<String> options) {
+            val sb = new StringBuilder();
+            sb.append("[").append(sourceType);
+            options.stream().map(String::trim).filter(_Strings::isNotEmpty).map(s->","+s).forEach(sb::append);
+            sb.append("]\n").append("----\n");
+            if(_Strings.isNotEmpty(title)) {
+                val trimmedTitle = title.trim();
+                if(!trimmedTitle.isEmpty()) {
+                    sb.append(".").append(trimmedTitle).append("\n");
+                }
+            }
+            _Text.normalize(_Text.getLines(source))
+            .forEach(line->sb.append(line).append("\n"));
+            sb.append("----\n");
+            return sb.toString();
+        }
+        
+        public static String xml(@NonNull String xmlSource, @Nullable String title) {
+            return wrap("source,xml", xmlSource, title, Can.empty());
+        }
+        
+//        [source,java]
+//        .title
+//        ----
+//        public class SomeClass extends SomeOtherClass {
+//            ...
+//        }
+//        ----
+        public static String java(@NonNull String javaSource, @Nullable String title) {
+            return wrap("source,java", javaSource, title, Can.empty());
+        }
+        
+//      [plantuml,c4-demo,svg]
+//      ----
+//      @startuml
+//      ...
+//      @enduml
+//      ----
+        public static String plantuml(@NonNull String plantumlSource, @NonNull String diagramKey, @Nullable String title) {
+            return wrap(String.format("plantuml,%s,svg", diagramKey), plantumlSource, title, Can.of());
+        }
+        
+        
+    }
     
     // -- HELPER
     
diff --git a/tooling/pom.xml b/tooling/pom.xml
index 2c14035..c7675f1 100644
--- a/tooling/pom.xml
+++ b/tooling/pom.xml
@@ -105,6 +105,12 @@
 
 			<dependency>
 				<groupId>org.apache.isis.tooling</groupId>
+				<artifactId>isis-tooling-c4modeling</artifactId>
+				<version>${project.version}</version>
+			</dependency>
+
+			<dependency>
+				<groupId>org.apache.isis.tooling</groupId>
 				<artifactId>isis-tooling-model4adoc</artifactId>
 				<version>${project.version}</version>
 			</dependency>