diff --git a/cambridge_d10.info.yml b/cambridge_d10.info.yml
index 4da2b183f36d1454522298f7f54c60bdae4c5d39..055da5b6a4d7569500244263af10ceb02f8e3643 100755
--- a/cambridge_d10.info.yml
+++ b/cambridge_d10.info.yml
@@ -53,6 +53,7 @@ install:
   - drupal:dynamic_page_cache
   - drupal:easy_breadcrumb
   - drupal:editor
+  - drupal:entity_embed
   - drupal:entity_reference_revisions
   - drupal:entityqueue
   - drupal:entityqueue_smartqueue
@@ -112,6 +113,7 @@ install:
   - drupal:paragraphs_ee
   - drupal:path
   - drupal:pathauto
+  - drupal:pathologic
   - drupal:page_cache
   - drupal:redirect
   - drupal:redirect_after_login
diff --git a/composer.json b/composer.json
index 4e8a173a6bc6d9a91da16171fd041518a7000c2e..503a04a67d1ed138f43f75db4ca2c622d52480db 100644
--- a/composer.json
+++ b/composer.json
@@ -20,6 +20,7 @@
         "drupal/editor_advanced_link": "~2.2.4",
         "drupal/editor_file": "~1.8.0",
         "drupal/entity_browser": "~2.10.0",
+        "drupal/entity_embed": "^1.7",
         "drupal/entity_reference_revisions": "~1.11.0",
         "drupal/entityqueue": "~1.7.0",
         "drupal/eu_cookie_compliance": "~1.24.0",
@@ -90,7 +91,7 @@
         "drupal/ckeditor_media_embed": "^1.13",
         "drupal/config_ignore": "^3.3",
         "drupal/core-composer-scaffold": "^10",
-        "drupal/core-recommended": "10.3.2",
+        "drupal/core-recommended": "~10.3.13",
         "drupal/date_recur": "^3.5@beta",
         "drupal/date_recur_modular": "^3.1",
         "drupal/datetime_extras": "^1.1",
diff --git a/config/install/core.entity_form_display.paragraph.link_grid.default.yml b/config/install/core.entity_form_display.paragraph.link_grid.default.yml
index b73539bddfd28378e310dd3cf0ae39897a9d6020..40b6a653794946b3b76452efedc0b226f27f0d94 100644
--- a/config/install/core.entity_form_display.paragraph.link_grid.default.yml
+++ b/config/install/core.entity_form_display.paragraph.link_grid.default.yml
@@ -10,7 +10,7 @@ dependencies:
     - maxlength
     - paragraphs
 _core:
-  default_config_hash: t-Ppd_gluQTjfQIbg7RZrlFa3d7MrYl-wdHPJNZV1Ec
+  default_config_hash: mYbxckE3L_OxIo2aprES3Ur20IKh4tAhhVFs3iZVTAQ
 id: paragraph.link_grid.default
 targetEntityType: paragraph
 bundle: link_grid
diff --git a/config/install/core.entity_view_display.media.image.wysiwyg.yml b/config/install/core.entity_view_display.media.image.wysiwyg.yml
new file mode 100644
index 0000000000000000000000000000000000000000..387c5d2e51bd8d834b30298a75d1671190577aae
--- /dev/null
+++ b/config/install/core.entity_view_display.media.image.wysiwyg.yml
@@ -0,0 +1,49 @@
+langcode: en-gb
+status: true
+dependencies:
+  config:
+    - core.entity_view_mode.media.wysiwyg
+    - field.field.media.image.field_caption
+    - field.field.media.image.field_media_image
+    - image.style.free_crop
+    - media.type.image
+  module:
+    - image
+    - layout_builder
+    - text
+third_party_settings:
+  layout_builder:
+    enabled: false
+    allow_custom: false
+_core:
+  default_config_hash: S0idz3d1xsVtyCvs9ftdDJctji6d0ysAAEIjcZroD-w
+id: media.image.wysiwyg
+targetEntityType: media
+bundle: image
+mode: wysiwyg
+content:
+  field_caption:
+    type: text_default
+    label: hidden
+    settings: {  }
+    third_party_settings: {  }
+    weight: 2
+    region: content
+  field_media_image:
+    type: image
+    label: hidden
+    settings:
+      image_link: ''
+      image_style: free_crop
+      image_loading:
+        attribute: lazy
+    third_party_settings: {  }
+    weight: 1
+    region: content
+hidden:
+  created: true
+  langcode: true
+  name: true
+  search_api_excerpt: true
+  thumbnail: true
+  uid: true
diff --git a/config/install/core.entity_view_display.paragraph.link_grid.default.yml b/config/install/core.entity_view_display.paragraph.link_grid.default.yml
index 5b167fff8b7da3acc34e1276db00e75f50774a27..a35ba65d78d353f4fd147350ecdab525b7680757 100644
--- a/config/install/core.entity_view_display.paragraph.link_grid.default.yml
+++ b/config/install/core.entity_view_display.paragraph.link_grid.default.yml
@@ -22,7 +22,7 @@ third_party_settings:
         props: {  }
         slots: {  }
 _core:
-  default_config_hash: qpeuCYH3z7y5LNJip7eoT7wR4CiwaIkermpxe5qBg-E
+  default_config_hash: zcFJmQlWZe3Qp8fZg_MQY_VWUPDfNvb6z6B1TU7utho
 id: paragraph.link_grid.default
 targetEntityType: paragraph
 bundle: link_grid
diff --git a/config/install/core.entity_view_display.paragraph.link_grid.preview.yml b/config/install/core.entity_view_display.paragraph.link_grid.preview.yml
index 896fbe8ad4c44b36e06d5b28d9c68c83818c0599..e15994e2ce10e7ca2cb210bbdb7818a7bfefa914 100644
--- a/config/install/core.entity_view_display.paragraph.link_grid.preview.yml
+++ b/config/install/core.entity_view_display.paragraph.link_grid.preview.yml
@@ -3,10 +3,8 @@ status: true
 dependencies:
   config:
     - core.entity_view_mode.paragraph.preview
-    - field.field.paragraph.link_grid.field_card
     - field.field.paragraph.link_grid.field_link_grid_description
     - field.field.paragraph.link_grid.field_link_grid_title
-    - field.field.paragraph.link_grid.field_link_with_description
     - field.field.paragraph.link_grid.field_list_of_links
     - paragraphs.paragraphs_type.link_grid
   module:
@@ -30,7 +28,7 @@ third_party_settings:
         props: {  }
         slots: {  }
 _core:
-  default_config_hash: 6uF2VbeoTYAW1z6mbz_kH2oVoysEq5rNOYu4L26makM
+  default_config_hash: YBB7P_S-_O78kvK695ocx3laS0yOgGTa3Nv39meq9dA
 id: paragraph.link_grid.preview
 targetEntityType: paragraph
 bundle: link_grid
@@ -69,7 +67,4 @@ content:
           show_deprecated: 0
     weight: 2
     region: content
-hidden:
-  field_card: true
-  field_link_with_description: true
-
+hidden: {  }
diff --git a/config/install/core.entity_view_mode.media.wysiwyg.yml b/config/install/core.entity_view_mode.media.wysiwyg.yml
new file mode 100644
index 0000000000000000000000000000000000000000..eafdb0da77b5592ede913964259c8a7af7d6fae9
--- /dev/null
+++ b/config/install/core.entity_view_mode.media.wysiwyg.yml
@@ -0,0 +1,10 @@
+langcode: en
+status: true
+dependencies:
+  module:
+    - media
+id: media.wysiwyg
+label: wysiwyg
+description: 'For migrated, embedded images'
+targetEntityType: media
+cache: true
\ No newline at end of file
diff --git a/config/install/editor.editor.filtered_html.yml b/config/install/editor.editor.filtered_html.yml
new file mode 100644
index 0000000000000000000000000000000000000000..2ca1ffd4c58843304ef94926e86c33599f965dd3
--- /dev/null
+++ b/config/install/editor.editor.filtered_html.yml
@@ -0,0 +1,126 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - filter.format.filtered_html
+  module:
+    - ckeditor5
+format: filtered_html
+editor: ckeditor5
+settings:
+  toolbar:
+    items:
+      - undo
+      - heading
+      - bold
+      - italic
+      - '|'
+      - link
+      - sourceEditing
+      - drupalInsertImage
+      - bulletedList
+      - blockQuote
+      - numberedList
+  plugins:
+    ckeditor5_heading:
+      enabled_headings:
+        - heading2
+        - heading3
+        - heading4
+        - heading5
+        - heading6
+    ckeditor5_imageResize:
+      allow_resize: true
+    ckeditor5_list:
+      properties:
+        reversed: true
+        startIndex: true
+      multiBlock: true
+    ckeditor5_paste_filter_pasteFilter:
+      enabled: false
+      filters:
+        -
+          enabled: true
+          weight: -10
+          search: '<o:p><\/o:p>'
+          replace: ''
+        -
+          enabled: true
+          weight: -9
+          search: '(<[^>]*) (style="[^"]*")'
+          replace: $1
+        -
+          enabled: true
+          weight: -8
+          search: '(<[^>]*) (face="[^"]*")'
+          replace: $1
+        -
+          enabled: true
+          weight: -7
+          search: '(<[^>]*) (class="[^"]*")'
+          replace: $1
+        -
+          enabled: true
+          weight: -6
+          search: '(<[^>]*) (valign="[^"]*")'
+          replace: $1
+        -
+          enabled: true
+          weight: -5
+          search: '<font[^>]*>'
+          replace: ''
+        -
+          enabled: true
+          weight: -4
+          search: '<\/font>'
+          replace: ''
+        -
+          enabled: true
+          weight: -3
+          search: '<span[^>]*>'
+          replace: ''
+        -
+          enabled: true
+          weight: -2
+          search: '<\/span>'
+          replace: ''
+        -
+          enabled: true
+          weight: -1
+          search: '<p>&nbsp;<\/p>'
+          replace: ''
+        -
+          enabled: true
+          weight: 0
+          search: '<p><\/p>'
+          replace: ''
+        -
+          enabled: true
+          weight: 1
+          search: '<b><\/b>'
+          replace: ''
+        -
+          enabled: true
+          weight: 2
+          search: '<i><\/i>'
+          replace: ''
+        -
+          enabled: true
+          weight: 3
+          search: '<a name="OLE_LINK[^"]*">(.*?)<\/a>'
+          replace: $1
+    ckeditor5_sourceEditing:
+      allowed_tags:
+        - '<a hreflang>'
+    linkit_extension:
+      linkit_enabled: false
+    media_media:
+      allow_view_mode_override: false
+image_upload:
+  status: true
+  scheme: public
+  directory: inline-images
+  max_size: null
+  max_dimensions:
+    width: null
+    height: null
diff --git a/config/install/field.storage.paragraph.field_list_of_links.yml b/config/install/field.storage.paragraph.field_list_of_links.yml
index 847c848becfaaa2c8e68957f6119dee8b060e337..fafe540b2b4e4aa3606b2372cbedd67e5e064583 100644
--- a/config/install/field.storage.paragraph.field_list_of_links.yml
+++ b/config/install/field.storage.paragraph.field_list_of_links.yml
@@ -4,6 +4,8 @@ dependencies:
   module:
     - entity_reference_revisions
     - paragraphs
+_core:
+  default_config_hash: 0yI3vWPVnEQ53UDJWym8aeQd4NlGm_ebARzfjj4y5YU
 id: paragraph.field_list_of_links
 field_name: field_list_of_links
 entity_type: paragraph
@@ -12,8 +14,8 @@ settings:
   target_type: paragraph
 module: entity_reference_revisions
 locked: false
-cardinality: -1
+cardinality: 12
 translatable: true
 indexes: {  }
 persist_with_no_fields: false
-custom_storage: false
\ No newline at end of file
+custom_storage: false
diff --git a/config/install/field_validation.rule_set.paragraph_link_grid.yml b/config/install/field_validation.rule_set.paragraph_link_grid.yml
index 59ef5b5fbbeb21d917778abb6892f00bb0233111..0e6a43beefb405bbae7d9c76a38e6f66339567d2 100644
--- a/config/install/field_validation.rule_set.paragraph_link_grid.yml
+++ b/config/install/field_validation.rule_set.paragraph_link_grid.yml
@@ -32,7 +32,7 @@ field_validation_rules:
     uuid: 4574a04c-cbd9-42bb-b55a-a3dbac4d1900
     field_name: field_list_of_links
     column: target_id
-    error_message: 'Please add at least 3 links'
+    error_message: 'Please add a minimum of 3 links and a maximum of 12 links.'
     roles: {  }
     condition:
       field: ''
diff --git a/config/install/filter.format.filtered_html.yml b/config/install/filter.format.filtered_html.yml
index fbe7d87b841bf587611ceea59e43dc14b57d14c1..9c0d02ac5f2f1e493c793f91dc2649ca278eb9e3 100644
--- a/config/install/filter.format.filtered_html.yml
+++ b/config/install/filter.format.filtered_html.yml
@@ -1,15 +1,77 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - core.entity_view_mode.media.wysiwyg
+  module:
+    - editor
+    - entity_embed
+    - media
+    - pathologic
+_core:
+  default_config_hash: 7ynWy0YKuoNEkOWe2O3WanJMNzsgrsSHH-Ia7Gw9bh0
 name: 'Filtered HTML'
 format: filtered_html
 weight: 1
 filters:
+  editor_file_reference:
+    id: editor_file_reference
+    provider: editor
+    status: true
+    weight: 0
+    settings: {  }
+  entity_embed:
+    id: entity_embed
+    provider: entity_embed
+    status: true
+    weight: 100
+    settings: {  }
+  filter_align:
+    id: filter_align
+    provider: filter
+    status: true
+    weight: 0
+    settings: {  }
+  filter_caption:
+    id: filter_caption
+    provider: filter
+    status: true
+    weight: 0
+    settings: {  }
   filter_html:
     id: filter_html
     provider: filter
+    status: false
+    weight: -10
+    settings:
+      allowed_html: '<a hreflang>'
+      filter_html_help: true
+      filter_html_nofollow: false
+  filter_pathologic:
+    id: filter_pathologic
+    provider: pathologic
     status: true
+    weight: 50
     settings:
-      allowed_html: '<p> <br> <strong> <a href hreflang>'
+      settings_source: global
+      local_settings:
+        protocol_style: full
+        local_paths: ''
+        keep_language_prefix: true
   filter_url:
     id: filter_url
     provider: filter
-    status: true
+    status: false
     weight: -1
+    settings:
+      filter_url_length: 72
+  media_embed:
+    id: media_embed
+    provider: media
+    status: true
+    weight: 100
+    settings:
+      default_view_mode: default
+      allowed_view_modes:
+        wysiwyg: wysiwyg
+      allowed_media_types: {  }
\ No newline at end of file