diff --git a/.diagrams/architecture/announcements/states.mermaid b/.diagrams/architecture/announcements/states.mermaid
new file mode 100644
index 000000000..37963cb2a
--- /dev/null
+++ b/.diagrams/architecture/announcements/states.mermaid
@@ -0,0 +1,18 @@
+---
+config:
+ layout: elk
+ elk:
+ nodePlacementStrategy: NETWORK_SIMPLEX
+---
+flowchart TD
+ draft>draft]
+ published>published]
+ expired>expired]
+ archived>archived]
+
+ published --Save as--> published
+ expired & draft --Save as--> draft & published
+ published -.On
expires_on
date.-> expired
+ draft & published & expired --Archive--> archived
+ archived & expired -.Scheduled
task.-> delete[Delete after 90 days]
+ published --Unpublish--> draft
\ No newline at end of file
diff --git a/.diagrams/architecture/announcements/states.mermaid.png b/.diagrams/architecture/announcements/states.mermaid.png
new file mode 100644
index 000000000..2ab83db34
Binary files /dev/null and b/.diagrams/architecture/announcements/states.mermaid.png differ
diff --git a/.diagrams/architecture/announcements/user-actions.mermaid b/.diagrams/architecture/announcements/user-actions.mermaid
new file mode 100644
index 000000000..b73281c8c
--- /dev/null
+++ b/.diagrams/architecture/announcements/user-actions.mermaid
@@ -0,0 +1,42 @@
+flowchart TD
+ start([Admin User])
+
+ %% Nodes - Actions
+ active[Publicly available]
+ email[Send email 14 days before expire_on date]
+ scheduleExpire[Automatically expire announcement after expire_on date]
+ scheduleDelete[Automatically delete announcement after 90 days]
+
+ %% Nodes - decisions
+ choice{Actions}
+ saveAny{Save As}
+ saveP{Save As}
+
+ %% Nodes - Data objects
+ draft>fa:fa-file Draft Announcement]
+ published>fa:fa-file Published Announcement]
+ expired>fa:fa-file Expired Announcement]
+ archive>fa:fa-file Archived Announcement]
+
+ %% New workflow
+ start --> choice
+ choice --New--> saveAny
+
+ %% Existing workflows
+ choice --Edit draft/expired--> saveAny
+ choice --Edit published--> saveP
+ choice --Unpublish--> draft
+ published -.Scheduled task.-> email
+
+ %% Saving workflow
+ saveAny --Draft--> draft
+ saveAny & saveP --Publish--> published
+ published -.After active_on date.-> active
+
+ %% Expire workflows
+ published -.Scheduled task.-> scheduleExpire
+ scheduleExpire --> expired
+
+ %% Delete workflows
+ choice --Archive--> archive
+ expired & archive -.Scheduled task.-> scheduleDelete
\ No newline at end of file