diff --git a/doc/PDLEntities.puml b/doc/PDLEntities.puml
index e1cc3d68d..1fd30e015 100644
--- a/doc/PDLEntities.puml
+++ b/doc/PDLEntities.puml
@@ -596,7 +596,7 @@ namespace com.arsdigita.forum {
}
-namespace com.arsdigita.globalization.Charset {
+namespace com.arsdigita.globalization {
class Charset
class Locale
diff --git a/doc/ccm-core/ccm-core.png b/doc/ccm-core/ccm-core.png
new file mode 100644
index 000000000..55dcee442
Binary files /dev/null and b/doc/ccm-core/ccm-core.png differ
diff --git a/doc/ccm-core/ccm-core.puml b/doc/ccm-core/ccm-core.puml
new file mode 100644
index 000000000..5b2b646a5
--- /dev/null
+++ b/doc/ccm-core/ccm-core.puml
@@ -0,0 +1,18 @@
+@startuml
+
+title "
ccm-core
"
+
+!include com.arsdigita.auditing.iuml
+!include com.arsdigita.categorization.iuml
+!include com.arsdigita.cms.iuml
+!include com.arsdigita.formbuilder.iuml
+!include com.arsdigita.globalization.iuml
+!include com.arsdigita.kernel.iuml
+!include com.arsdigita.kernel.permissions.iuml
+!include com.arsdigita.messaging.iuml
+!include com.arsdigita.notification.iuml
+!include com.arsdigita.persistence.iuml
+!include com.arsdigita.portal.iuml
+!include com.arsdigita.preferences.iuml
+
+@enduml
diff --git a/doc/ccm-core/com.arsdigita.auditing.iuml b/doc/ccm-core/com.arsdigita.auditing.iuml
new file mode 100644
index 000000000..42ba3a338
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.auditing.iuml
@@ -0,0 +1,8 @@
+namespace com.arsdigita.auditing {
+
+ class BasicAuditTrail <>
+
+ com.arsdigita.kernel.ACSObject <|-- BasicAuditTrail
+
+ BasicAuditTrail -- com.arsdigita.kernel.User
+}
\ No newline at end of file
diff --git a/doc/ccm-core/com.arsdigita.categorization.iuml b/doc/ccm-core/com.arsdigita.categorization.iuml
new file mode 100644
index 000000000..e364d427a
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.categorization.iuml
@@ -0,0 +1,18 @@
+namespace com.arsdigita.categorization {
+
+ class Category <>
+ class CategoryLocalization <>
+ class UseContext <>
+ class CategoryPurpose <>
+
+ com.arsdigita.kernel.ACSObject <|-- Category
+ com.arsdigita.kernel.ACSObject <|-- CategoryLocalization
+ com.arsdigita.kernel.ACSObject <|-- CategoryPurpose
+
+ UseContext -- com.arsdigita.kernel.ACSObject
+ Category -- com.arsdigita.kernel.ACSObject
+
+ Category -- CategoryLocalization
+ Category -- UseContext
+ CategoryPurpose -- Category
+}
\ No newline at end of file
diff --git a/doc/ccm-core/com.arsdigita.cms.iuml b/doc/ccm-core/com.arsdigita.cms.iuml
new file mode 100644
index 000000000..1ba99b06e
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.cms.iuml
@@ -0,0 +1,22 @@
+namespace com.arsdigita.cms {
+
+ class ImageMimeType <>
+ class MimeTypeExtension <>
+ class MimeType <>
+ class MimeTypeStatus <>
+ class TextMimeType <>
+
+ MimeType <|-- ImageMimeType
+ MimeType <|-- TextMimeType
+
+ MimeType -- MimeTypeExtension
+
+
+}
+
+namespace com.arsdigita.cms.authoring {
+
+ class PostConvertHTML <>
+ class PreConvertHTML <>
+
+}
\ No newline at end of file
diff --git a/doc/ccm-core/com.arsdigita.formbuilder.iuml b/doc/ccm-core/com.arsdigita.formbuilder.iuml
new file mode 100644
index 000000000..2ea606237
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.formbuilder.iuml
@@ -0,0 +1,48 @@
+namespace com.arsdigita.formbuilder {
+
+ class Component <>
+ class DataDrivenSelect <>
+ class FormSection <>
+ class Listener <>
+ class MetaObject <>
+ class ObjectType <>
+ class Option <>
+ class PersistentDataQuery <>
+ class ProcessListener <>
+ class Widget <>
+ class WidgetLabel <>
+
+ com.arsdigita.kernel.ACSObject <|-- Component
+ com.arsdigita.kernel.ACSObject <|-- Listener
+ com.arsdigita.kernel.ACSObject <|-- MetaObject
+ com.arsdigita.kernel.ACSObject <|-- PersistentDataQuery
+ com.arsdigita.kernel.ACSObject <|-- ProcessListener
+
+ Component <|-- FormSection
+ Component <|-- Option
+ Component <|-- Widget
+ Component <|-- WidgetLabel
+ Widget <|-- DataDrivenSelect
+
+ Listener -- Widget
+ FormSection -- ProcessListener
+ Widget -- WidgetLabel
+
+}
+
+namespace com.arsdigita.formbuilder.actions {
+
+ class ConfirmEmailListener <>
+ class ConfirmRedirectListener <>
+ class RemoteServerPostListener <>
+ class SimpleEmailListener <>
+ class TemplateEmailListener <>
+ class XMLEmailListener <>
+
+ com.arsdigita.formbuilder.ProcessListener <|-- ConfirmEmailListener
+ com.arsdigita.formbuilder.ProcessListener <|-- ConfirmRedirectListener
+ com.arsdigita.formbuilder.ProcessListener <|-- RemoteServerPostListener
+ com.arsdigita.formbuilder.ProcessListener <|-- SimpleEmailListener
+ com.arsdigita.formbuilder.ProcessListener <|-- TemplateEmailListener
+ com.arsdigita.formbuilder.ProcessListener <|-- XMLEmailListener
+}
\ No newline at end of file
diff --git a/doc/ccm-core/com.arsdigita.globalization.iuml b/doc/ccm-core/com.arsdigita.globalization.iuml
new file mode 100644
index 000000000..42b525902
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.globalization.iuml
@@ -0,0 +1,9 @@
+namespace com.arsdigita.globalization {
+
+ class Charset
+ class Locale
+ class MessageCatalog
+
+ Charset -- Locale
+ MessageCatalog -- Locale
+}
diff --git a/doc/ccm-core/com.arsdigita.kernel.iuml b/doc/ccm-core/com.arsdigita.kernel.iuml
new file mode 100644
index 000000000..3ebc4de48
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.kernel.iuml
@@ -0,0 +1,36 @@
+namespace com.arsdigita.kernel {
+
+ class ACSObject <>
+ class EmailAdress <>
+ class Group <>
+ class Party <>
+ class PartyEmail <>
+ class PersonName <>
+ class ResourceType <>
+ class Resource <>
+ class Role <>
+ class ObjectContext <>
+ class User <>
+ class UserAuthentication <>
+
+ ACSObject <|-- Party
+ Party <|-- Group
+ Party <|-- User
+
+ Group -- User
+ Group -- Role
+ ObjectContext -- ACSObject
+ Party -- PartyEmail
+ Party -- com.arsdigita.kernel.permissions.Permission
+ Party -- UserAuthentication
+ Resource -- ResourceType
+ User -- com.arsdigita.kernel.permissions.Permission
+ User -- PersonName
+ User -- UserAuthentication
+
+}
+
+namespace com.arsdigita.kernel.security {
+ class KeyStore
+}
+
diff --git a/doc/ccm-core/com.arsdigita.kernel.permissions.iuml b/doc/ccm-core/com.arsdigita.kernel.permissions.iuml
new file mode 100644
index 000000000..3f63726d4
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.kernel.permissions.iuml
@@ -0,0 +1,8 @@
+namespace com.arsdigita.kernel.permissions {
+
+ class Permission <>
+ class Privilege <>
+
+ Permission -- com.arsdigita.kernel.ACSObject
+ Permission -- Privilege
+}
\ No newline at end of file
diff --git a/doc/ccm-core/com.arsdigita.kernel.png b/doc/ccm-core/com.arsdigita.kernel.png
new file mode 100644
index 000000000..6e4f21768
Binary files /dev/null and b/doc/ccm-core/com.arsdigita.kernel.png differ
diff --git a/doc/ccm-core/com.arsdigita.kernel.puml b/doc/ccm-core/com.arsdigita.kernel.puml
new file mode 100644
index 000000000..3e8234774
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.kernel.puml
@@ -0,0 +1,5 @@
+@startuml
+
+!include com.arsdigita.kernel.iuml
+
+@enduml
\ No newline at end of file
diff --git a/doc/ccm-core/com.arsdigita.messaging.iuml b/doc/ccm-core/com.arsdigita.messaging.iuml
new file mode 100644
index 000000000..4693d2165
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.messaging.iuml
@@ -0,0 +1,16 @@
+namespace com.arsdigita.messaging {
+
+ class Message <>
+ class MessagePart <>
+ class Thread <>
+ class ThreadedMessage <>
+
+ com.arsdigita.kernel.ACSObject <|-- Message
+ com.arsdigita.kernel.ACSObject <|-- Thread
+ Message <|-- ThreadedMessage
+
+ Message -- MessagePart
+ Message -- com.arsdigita.kernel.Party
+ Thread -- ThreadedMessage
+ Thread -- Party
+}
\ No newline at end of file
diff --git a/doc/ccm-core/com.arsdigita.notification.iuml b/doc/ccm-core/com.arsdigita.notification.iuml
new file mode 100644
index 000000000..57ddfdd17
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.notification.iuml
@@ -0,0 +1,9 @@
+namespace com.arsdigita.notification {
+
+ class Digest <>
+ class Notification <>
+ class QueueItem <>
+
+ com.arsdigita.kernel.ACSObject <|-- Digest
+ com.arsdigita.kernel.ACSObject <|-- Notification
+}
\ No newline at end of file
diff --git a/doc/ccm-core/com.arsdigita.persistence.iuml b/doc/ccm-core/com.arsdigita.persistence.iuml
new file mode 100644
index 000000000..a65996924
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.persistence.iuml
@@ -0,0 +1,8 @@
+namespace com.arsdigita.persistence {
+
+ class DynamicAssociation <>
+ class DynamicObjectType <>
+
+ com.arsdigita.kernel.ACSObject <|-- DynamicAssociation
+ com.arsdigita.kernel.ACSObject <|-- DynamicObjectType
+}
\ No newline at end of file
diff --git a/doc/ccm-core/com.arsdigita.portal.iuml b/doc/ccm-core/com.arsdigita.portal.iuml
new file mode 100644
index 000000000..6db0c76f9
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.portal.iuml
@@ -0,0 +1,15 @@
+namespace com.arsdigita.portal {
+
+ class AgentPortlet
+ class Portal
+ class Portlet
+ class PortletType
+
+ Portlet <|-- AgentPortlet
+ com.arsdigita.kernel.Resource <|-- Portal
+ com.arsdigita.kernel.Resource <|-- Portlet
+ com.arsdigita.kernel.ResourceType <|-- PortletType
+
+ Portal -- Portlet
+ PortletType -- com.arsdigita.web.ApplicationType
+}
\ No newline at end of file
diff --git a/doc/ccm-core/com.arsdigita.preferences.iuml b/doc/ccm-core/com.arsdigita.preferences.iuml
new file mode 100644
index 000000000..3f89ef1e8
--- /dev/null
+++ b/doc/ccm-core/com.arsdigita.preferences.iuml
@@ -0,0 +1,7 @@
+namespace com.arsdigita.preferences {
+
+ class PreferenceParameter <>
+ class Preferences <>
+
+ Preferences -- PerferenceParameter
+}
\ No newline at end of file