From 99b93f7f78f36b50d5b9c611ddacf3f7e0e09c07 Mon Sep 17 00:00:00 2001
From: Dominik Przybyl <dominik.przybyl@vml.com>
Date: Fri, 4 Oct 2024 16:24:18 +0200
Subject: [PATCH] added integration tests

---
 pkg/content_manager.go                        |  10 +-
 pkg/content_manager_int_test.go               | 506 ++++++++++++++++++
 pkg/int_test_content/filter.xml               |   4 +
 .../main_content/META-INF/MANIFEST.MF         |   3 +
 .../main_content/META-INF/vault/config.xml    |  86 +++
 .../META-INF/vault/definition/$.content.xml   |   7 +
 .../main_content/META-INF/vault/filter.xml    |   7 +
 .../main_content/META-INF/vault/nodetypes.cnd |   5 +
 .../META-INF/vault/properties.xml             |   9 +
 .../clientlibs/clientlib-site/$.content.xml   |   8 +
 .../mysite/clientlibs/clientlib-site/css.txt  |   3 +
 .../clientlibs/clientlib-site/css/site.css    |   1 +
 .../mysite/clientlibs/clientlib-site/js.txt   |   3 +
 .../clientlibs/clientlib-site/js/site.js      |   1 +
 .../components/helloworld/$.content.xml       |   5 +
 .../components/helloworld/$_cq_dialog.xml     |  23 +
 .../components/helloworld/$_cq_editConfig.xml |  12 +
 .../components/helloworld/$_cq_template.xml   |   4 +
 .../components/helloworld/helloworld.html     |  11 +
 .../jcr_root/conf/mysite/$.content.xml        |   4 +
 .../conf/mysite/$_sling_configs/$.content.xml |   8 +
 .../$.content.xml                             |   8 +
 .../conf/mysite/settings/$.content.xml        |   3 +
 .../conf/mysite/settings/wcm/$.content.xml    |   6 +
 .../settings/wcm/policies/$.content.xml       | 181 +++++++
 .../settings/wcm/policies/$_rep_policy.xml    |  20 +
 .../settings/wcm/template-types/$.content.xml |   5 +
 .../wcm/template-types/page/$.content.xml     |   8 +
 .../template-types/page/initial/$.content.xml |  18 +
 .../page/policies/$.content.xml               |  18 +
 .../page/structure/$.content.xml              |  36 ++
 .../conf/mysite/workflow/$.content.xml        |   4 +
 .../mysite/workflow/launcher/$.content.xml    |   4 +
 .../workflow/launcher/config/$.content.xml    |   4 +
 .../config/asset_processing/$.content.xml     |  12 +
 .../conf/mysite/workflow/models/$.content.xml |   4 +
 .../models/archive_page/$.content.xml         | 131 +++++
 .../jcr_root/content/mysite/$.content.xml     |  16 +
 .../jcr_root/content/mysite/us/$.content.xml  |  11 +
 .../content/mysite/us/en/$.content.xml        |  82 +++
 .../var/workflow/models/mysite/$.content.xml  |   3 +
 .../models/mysite/asset_processing.xml        | 246 +++++++++
 .../clientlibs/clientlib-site/$.content.xml   |   8 +
 .../mysite/clientlibs/clientlib-site/css.txt  |   3 +
 .../clientlibs/clientlib-site/css/site.css    |   1 +
 .../mysite/clientlibs/clientlib-site/js.txt   |   3 +
 .../clientlibs/clientlib-site/js/site.js      |   1 +
 .../components/helloworld/$.content.xml       |   6 +
 .../components/helloworld/$_cq_dialog.xml     |  24 +
 .../components/helloworld/$_cq_editConfig.xml |  12 +
 .../components/helloworld/$_cq_template.xml   |   4 +
 .../helloworld/$_cq_template/$.content.xml    |   4 +
 .../components/helloworld/helloworld.html     |  11 +
 .../jcr_root/conf/mysite/$.content.xml        |   4 +
 .../conf/mysite/$_sling_configs/$.content.xml |   9 +
 .../$.content.xml                             |   9 +
 .../conf/mysite/settings/$.content.xml        |   3 +
 .../conf/mysite/settings/wcm/$.content.xml    |   6 +
 .../settings/wcm/policies/$.content.xml       | 181 +++++++
 .../settings/wcm/policies/$_rep_policy.xml    |  20 +
 .../settings/wcm/template-types/$.content.xml |   5 +
 .../wcm/template-types/page/$.content.xml     |   9 +
 .../template-types/page/initial/$.content.xml |  18 +
 .../page/policies/$.content.xml               |  18 +
 .../page/structure/$.content.xml              |  36 ++
 .../conf/mysite/workflow/$.content.xml        |   4 +
 .../mysite/workflow/launcher/$.content.xml    |   4 +
 .../workflow/launcher/config/$.content.xml    |   4 +
 .../config/asset_processing/$.content.xml     |  13 +
 .../conf/mysite/workflow/models/$.content.xml |   4 +
 .../models/archive_page/$.content.xml         | 131 +++++
 .../jcr_root/content/mysite/$.content.xml     |  17 +
 .../jcr_root/content/mysite/us/$.content.xml  |  12 +
 .../content/mysite/us/en/$.content.xml        |  83 +++
 .../var/workflow/models/mysite/$.content.xml  |   3 +
 .../models/mysite/asset_processing.xml        | 246 +++++++++
 pkg/pkg/vault/META-INF/vault/nodetypes.cnd    |   1 -
 pkg/pkg/vault/META-INF/vault/properties.xml   |   1 +
 78 files changed, 2454 insertions(+), 4 deletions(-)
 create mode 100644 pkg/content_manager_int_test.go
 create mode 100644 pkg/int_test_content/filter.xml
 create mode 100644 pkg/int_test_content/main_content/META-INF/MANIFEST.MF
 create mode 100644 pkg/int_test_content/main_content/META-INF/vault/config.xml
 create mode 100644 pkg/int_test_content/main_content/META-INF/vault/definition/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/META-INF/vault/filter.xml
 create mode 100644 pkg/int_test_content/main_content/META-INF/vault/nodetypes.cnd
 create mode 100644 pkg/int_test_content/main_content/META-INF/vault/properties.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css.txt
 create mode 100644 pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css/site.css
 create mode 100644 pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js.txt
 create mode 100644 pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js/site.js
 create mode 100644 pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_dialog.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_editConfig.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_template.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/helloworld.html
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/$_sling_configs/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/$_sling_configs/com.mysite.pdfviewer.PdfViewerCaConfig/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/policies/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/policies/$_rep_policy.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/initial/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/policies/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/structure/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/config/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/config/asset_processing/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/models/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/models/archive_page/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/content/mysite/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/content/mysite/us/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/content/mysite/us/en/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/var/workflow/models/mysite/$.content.xml
 create mode 100644 pkg/int_test_content/main_content/jcr_root/var/workflow/models/mysite/asset_processing.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css.txt
 create mode 100644 pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css/site.css
 create mode 100644 pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js.txt
 create mode 100644 pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js/site.js
 create mode 100644 pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_dialog.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_editConfig.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_template.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_template/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/helloworld.html
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/$_sling_configs/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/$_sling_configs/com.mysite.pdfviewer.PdfViewerCaConfig/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/policies/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/policies/$_rep_policy.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/initial/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/policies/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/structure/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/config/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/config/asset_processing/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/models/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/models/archive_page/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/content/mysite/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/content/mysite/us/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/content/mysite/us/en/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/var/workflow/models/mysite/$.content.xml
 create mode 100644 pkg/int_test_content/new_content/jcr_root/var/workflow/models/mysite/asset_processing.xml

diff --git a/pkg/content_manager.go b/pkg/content_manager.go
index 3b7ef2e5..37c5fd86 100644
--- a/pkg/content_manager.go
+++ b/pkg/content_manager.go
@@ -87,7 +87,7 @@ func (cm *ContentManager) PullFile(instance *Instance, file string, clean bool,
 	if err := cm.pullContent(instance, workDir, opts); err != nil {
 		return err
 	}
-	syncFile := DetermineSyncFile(file)
+	syncFile := DetermineSyncFile(workDir, file)
 	if file != syncFile || replace {
 		if err := cm.contentManager.DeleteFile(file, nil); err != nil {
 			return err
@@ -139,9 +139,13 @@ func (cm *ContentManager) Copy(srcInstance *Instance, destInstances []Instance,
 	return nil
 }
 
-func DetermineSyncFile(file string) string {
+func DetermineSyncFile(workDir string, file string) string {
 	if regexp.MustCompile(FlattenFilePattern).MatchString(file) {
-		return filepath.Join(strings.ReplaceAll(file, content.XmlFileSuffix, ""), content.JCRContentFile)
+		syncFile := filepath.Join(strings.ReplaceAll(file, content.XmlFileSuffix, ""), content.JCRContentFile)
+		_, jcrPath, _ := strings.Cut(syncFile, content.JCRRoot)
+		if pathx.Exists(filepath.Join(workDir, content.JCRRoot, jcrPath)) {
+			return syncFile
+		}
 	}
 	return file
 }
diff --git a/pkg/content_manager_int_test.go b/pkg/content_manager_int_test.go
new file mode 100644
index 00000000..ed8932ea
--- /dev/null
+++ b/pkg/content_manager_int_test.go
@@ -0,0 +1,506 @@
+//go:build int_test
+
+package pkg_test
+
+import (
+	"crypto/sha256"
+	"embed"
+	"fmt"
+	"github.com/wttech/aemc/pkg"
+	"github.com/wttech/aemc/pkg/common/filex"
+	"github.com/wttech/aemc/pkg/common/pathx"
+	"github.com/wttech/aemc/pkg/common/timex"
+	"github.com/wttech/aemc/pkg/content"
+	"io/fs"
+	"os"
+	"path/filepath"
+	"strings"
+	"testing"
+)
+
+//go:embed int_test_content
+var VaultFS embed.FS
+
+func TestPullDir(t *testing.T) {
+	testPullContent(t, "/content/mysite", "", nil, "", []string{
+		"/content/mysite/.content.xml",
+		"/content/mysite/us/.content.xml",
+		"/content/mysite/us/en/.content.xml",
+	})
+}
+
+func TestPullDirWithNamespace(t *testing.T) {
+	testPullContent(t, "/conf/mysite/_sling_configs", "", nil, "", []string{
+		"/conf/mysite/_sling_configs/.content.xml",
+		"/conf/mysite/_sling_configs/com.mysite.pdfviewer.PdfViewerCaConfig/.content.xml",
+	})
+}
+
+func TestPullOnePage(t *testing.T) {
+	testPullContent(t, "", "/content/mysite/us/.content.xml", nil, "", []string{
+		"/content/mysite/us/.content.xml",
+	})
+}
+
+func TestPullOneTemplate(t *testing.T) {
+	testPullContent(t, "", "/conf/mysite/settings/wcm/template-types/page/.content.xml", nil, "", []string{
+		"/conf/mysite/settings/wcm/template-types/page/.content.xml",
+	})
+}
+
+func TestPullCqTemplate(t *testing.T) {
+	testPullContent(t, "", "/apps/mysite/components/helloworld/_cq_template/.content.xml", nil, "", []string{
+		"/apps/mysite/components/helloworld/_cq_template.xml",
+	})
+}
+
+func TestPullCqDialogFlatten(t *testing.T) {
+	testPullContent(t, "", "/apps/mysite/components/helloworld/_cq_dialog.xml", nil, "", []string{
+		"/apps/mysite/components/helloworld/_cq_dialog.xml",
+	})
+}
+
+func TestPullOnlyContentXml(t *testing.T) {
+	testPullContent(t, "", "/apps/mysite/components/helloworld/.content.xml", nil, "", []string{
+		"/apps/mysite/components/helloworld/.content.xml",
+	})
+}
+
+func TestPullRepPolicy(t *testing.T) {
+	testPullContent(t, "", "/conf/mysite/settings/wcm/policies/_rep_policy.xml", nil, "", []string{
+		"/conf/mysite/settings/wcm/policies/_rep_policy.xml",
+	})
+}
+
+func TestPullXmlFile(t *testing.T) {
+	testPullContent(t, "", "/var/workflow/models/mysite/asset_processing.xml", nil, "", []string{
+		"/var/workflow/models/mysite/asset_processing.xml",
+	})
+}
+
+func TestPullTextFile(t *testing.T) {
+	testPullContent(t, "", "/apps/mysite/components/helloworld/helloworld.html", nil, "", []string{
+		"/apps/mysite/components/helloworld/helloworld.html",
+	})
+}
+
+func TestPullFilterRoots(t *testing.T) {
+	testPullContent(t, "/", "", []string{"/content/mysite"}, "", []string{
+		"/content/mysite/.content.xml",
+		"/content/mysite/us/.content.xml",
+		"/content/mysite/us/en/.content.xml",
+	})
+
+}
+func TestPullFilterFile(t *testing.T) {
+	workDir := pathx.RandomDir(os.TempDir(), "filter")
+	defer func() { _ = pathx.DeleteIfExists(workDir) }()
+	if err := copyFile("int_test_content", workDir, "int_test_content/filter.xml"); err != nil {
+		t.Fatal(err)
+	}
+	filterFile := filepath.Join(workDir, pkg.FilterXML)
+	testPullContent(t, "/", "", nil, filterFile, []string{
+		"/content/mysite/.content.xml",
+		"/content/mysite/us/.content.xml",
+		"/content/mysite/us/en/.content.xml",
+	})
+}
+
+func TestPushDir(t *testing.T) {
+	testPushContent(t, "/content/mysite", []string{
+		"/content/mysite/.content.xml",
+		"/content/mysite/us/.content.xml",
+		"/content/mysite/us/en/.content.xml",
+	})
+}
+
+func TestPushDirWithNamespace(t *testing.T) {
+	testPushContent(t, "/conf/mysite/_sling_configs", []string{
+		"/conf/mysite/_sling_configs/.content.xml",
+		"/conf/mysite/_sling_configs/com.mysite.pdfviewer.PdfViewerCaConfig/.content.xml",
+	})
+}
+
+func TestPushOnePage(t *testing.T) {
+	testPushContent(t, "/content/mysite/us/.content.xml", []string{
+		"/content/mysite/us/.content.xml",
+	})
+}
+
+func TestPushOneTemplate(t *testing.T) {
+	testPushContent(t, "/conf/mysite/settings/wcm/template-types/page/.content.xml", []string{
+		"/conf/mysite/settings/wcm/template-types/page/.content.xml",
+	})
+}
+
+func TestPushCqTemplate(t *testing.T) {
+	testPushContent(t, "/apps/mysite/components/helloworld/_cq_template/.content.xml", []string{
+		"/apps/mysite/components/helloworld/_cq_template.xml",
+	})
+}
+
+func TestPushCqDialogFlatten(t *testing.T) {
+	testPushContent(t, "/apps/mysite/components/helloworld/_cq_dialog.xml", []string{
+		"/apps/mysite/components/helloworld/_cq_dialog.xml",
+	})
+}
+
+func TestPushOnlyContentXml(t *testing.T) {
+	testPushContent(t, "/apps/mysite/components/helloworld/.content.xml", []string{
+		"/apps/mysite/components/helloworld/.content.xml",
+	})
+}
+
+func TestPushRepPolicy(t *testing.T) {
+	testPushContent(t, "/conf/mysite/settings/wcm/policies/_rep_policy.xml", []string{
+		"/conf/mysite/settings/wcm/policies/_rep_policy.xml",
+	})
+}
+
+func TestPushXmlFile(t *testing.T) {
+	testPushContent(t, "/var/workflow/models/mysite/asset_processing.xml", []string{
+		"/var/workflow/models/mysite/asset_processing.xml",
+	})
+}
+
+func TestPushTextFile(t *testing.T) {
+	testPushContent(t, "/apps/mysite/components/helloworld/helloworld.html", []string{
+		"/apps/mysite/components/helloworld/helloworld.html",
+	})
+}
+
+func testPullContent(t *testing.T, relDir string, relFile string, filterRoots []string, filterFile string, expectedFiles []string) {
+	aem := pkg.DefaultAEM()
+	contentManager := pkg.NewContentManager(aem)
+	instance := aem.InstanceManager().NewLocalAuthor()
+	packageManager := instance.PackageManager()
+
+	remotePath, err := installMainContent(packageManager)
+	defer uninstallMainContent(packageManager, instance, remotePath)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	resultDir, err := pullContent(contentManager, instance, relDir, relFile, filterRoots, filterFile)
+	defer func() { _ = pathx.DeleteIfExists(resultDir) }()
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	diffs, err := checkPullResult(resultDir, expectedFiles)
+	if err != nil {
+		t.Fatal(err)
+	}
+	if diffs != nil {
+		t.Errorf("testPullContent(%s, %s, %v, %s) -> %v", relDir, relFile, filterRoots, filterFile, diffs)
+	}
+}
+
+func testPushContent(t *testing.T, relPath string, expectedFiles []string) {
+	aem := pkg.DefaultAEM()
+	contentManager := pkg.NewContentManager(aem)
+	instance := aem.InstanceManager().NewLocalAuthor()
+	packageManager := instance.PackageManager()
+
+	remotePath, err := installMainContent(packageManager)
+	defer uninstallMainContent(packageManager, instance, remotePath)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	workDir := pathx.RandomDir(os.TempDir(), "content_push")
+	defer func() { _ = pathx.DeleteIfExists(workDir) }()
+	if err := copyFiles("int_test_content/new_content", workDir); err != nil {
+		t.Fatal(err)
+	}
+
+	path := filepath.Join(workDir, content.JCRRoot, relPath)
+	if err := pushContent(contentManager, instance, path); err != nil {
+		t.Fatal(err)
+	}
+
+	resultDir, err := pullContent(contentManager, instance, "/", "", []string{
+		"/apps/mysite",
+		"/conf/mysite",
+		"/content/mysite",
+		"/var/workflow/models/mysite",
+	}, "")
+	defer func() { _ = pathx.DeleteIfExists(resultDir) }()
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	diffs, err := checkPushResult(resultDir, expectedFiles)
+	if err != nil {
+		t.Fatal(err)
+	}
+	if diffs != nil {
+		t.Errorf("testPushContent(%s) -> %v", relPath, diffs)
+	}
+}
+
+func pullContent(contentManager *pkg.ContentManager, instance pkg.Instance, relDir string, relFile string, filterRoots []string, filterFile string) (string, error) {
+	resultDir := pathx.RandomDir(os.TempDir(), "content_pull")
+	var dir string
+	if relDir != "" {
+		dir = filepath.Join(resultDir, content.JCRRoot, relDir)
+	}
+	var file string
+	if relFile != "" {
+		file = filepath.Join(resultDir, content.JCRRoot, relFile)
+	}
+	if dir != "" {
+		if err := contentManager.PullDir(&instance, dir, true, false, pkg.PackageCreateOpts{
+			PID:         fmt.Sprintf("aemc:content-pull:%s-SNAPSHOT", timex.FileTimestampForNow()),
+			FilterRoots: determineFilterRoots(dir, file, filterRoots, filterFile),
+			FilterFile:  filterFile,
+		}); err != nil {
+			return resultDir, err
+		}
+	} else if file != "" {
+		if err := contentManager.PullFile(&instance, file, true, false, pkg.PackageCreateOpts{
+			PID:         fmt.Sprintf("aemc:content-pull:%s-SNAPSHOT", timex.FileTimestampForNow()),
+			FilterRoots: determineFilterRoots(dir, file, filterRoots, filterFile),
+			FilterFile:  filterFile,
+		}); err != nil {
+			return resultDir, err
+		}
+	}
+	return resultDir, nil
+}
+
+func pushContent(contentManager *pkg.ContentManager, instance pkg.Instance, path string) error {
+	if err := contentManager.Push([]pkg.Instance{instance}, true, pkg.PackageCreateOpts{
+		PID:             fmt.Sprintf("aemc:content-push:%s-SNAPSHOT", timex.FileTimestampForNow()),
+		FilterRoots:     determineFilterRoots(path, path, nil, ""),
+		ExcludePatterns: determineExcludePatterns(path),
+		ContentPath:     path,
+	}); err != nil {
+		return nil
+	}
+	return nil
+}
+
+func installMainContent(packageManager *pkg.PackageManager) (string, error) {
+	workDir := pathx.RandomDir(os.TempDir(), "content_pull")
+	defer func() { _ = pathx.DeleteIfExists(workDir) }()
+	if err := copyFiles("int_test_content/main_content", workDir); err != nil {
+		return "", err
+	}
+	pkgFile := pathx.RandomFileName(os.TempDir(), "content_pull", ".zip")
+	defer func() { _ = pathx.DeleteIfExists(pkgFile) }()
+	if err := content.Zip(workDir, pkgFile); err != nil {
+		return "", err
+	}
+	remotePath, err := packageManager.Upload(pkgFile)
+	if err != nil {
+		return "", err
+	}
+	if err = packageManager.Install(remotePath); err != nil {
+		return remotePath, err
+	}
+	return remotePath, nil
+}
+
+func uninstallMainContent(packageManager *pkg.PackageManager, instance pkg.Instance, remotePath string) {
+	_ = packageManager.Delete(remotePath)
+	_ = instance.Repo().Delete("/apps/mysite")
+	_ = instance.Repo().Delete("/conf/mysite")
+	_ = instance.Repo().Delete("/content/mysite")
+	_ = instance.Repo().Delete("/var/workflow/models/mysite")
+}
+
+func copyFiles(fsSrcDir string, osDestDir string) error {
+	if err := fs.WalkDir(VaultFS, fsSrcDir, func(path string, entry fs.DirEntry, err error) error {
+		if err != nil {
+			return err
+		}
+		if entry.IsDir() {
+			return nil
+		}
+		if err = copyFile(fsSrcDir, osDestDir, path); err != nil {
+			return err
+		}
+		return nil
+	}); err != nil {
+		return err
+	}
+	return nil
+}
+
+func copyFile(fsSrcDir string, osDestDir string, path string) error {
+	relPath, err := filepath.Rel(fsSrcDir, path)
+	if err != nil {
+		return err
+	}
+	relPath = strings.ReplaceAll(relPath, "$", "")
+	newPath := filepath.Join(osDestDir, relPath)
+	data, err := VaultFS.ReadFile(path)
+	if err != nil {
+		return err
+	}
+	if err = filex.Write(newPath, data); err != nil {
+		return err
+	}
+	return nil
+}
+
+func determineFilterRoots(dir string, file string, filterRoots []string, filterFile string) []string {
+	if len(filterRoots) > 0 {
+		return filterRoots
+	}
+	if filterFile != "" {
+		return nil
+	}
+	if dir != "" {
+		return []string{pkg.DetermineFilterRoot(dir)}
+	}
+	if file != "" {
+		return []string{pkg.DetermineFilterRoot(file)}
+	}
+	return nil
+}
+
+func determineExcludePatterns(file string) []string {
+	if !pathx.IsFile(file) || !strings.HasSuffix(file, content.JCRContentFile) || content.IsPageContentFile(file) {
+		return nil
+	}
+	dir := filepath.Dir(file)
+	entries, err := os.ReadDir(dir)
+	if err != nil {
+		return nil
+	}
+	var excludePatterns []string
+	for _, entry := range entries {
+		if entry.Name() != content.JCRContentFile {
+			jcrPath := pkg.DetermineFilterRoot(filepath.Join(dir, entry.Name()))
+			excludePattern := fmt.Sprintf("%s(/.*)?", jcrPath)
+			excludePatterns = append(excludePatterns, excludePattern)
+		}
+	}
+	return excludePatterns
+}
+
+func determineResultFiles(workDir string) (map[string]string, error) {
+	files := map[string]string{}
+	if err := filepath.Walk(workDir, func(path string, info os.FileInfo, err error) error {
+		if err != nil {
+			return err
+		}
+		if info.IsDir() || !strings.Contains(path, "/mysite/") {
+			return nil
+		}
+		_, relPath, _ := strings.Cut(path, content.JCRRoot)
+		data, err := os.ReadFile(path)
+		if err != nil {
+			return err
+		}
+		files[relPath] = calculateHashCode(data)
+		return nil
+	}); err != nil {
+		return nil, err
+	}
+	return files, nil
+}
+
+func determineTestFiles(workDir string) (map[string]string, error) {
+	files := map[string]string{}
+	if err := fs.WalkDir(VaultFS, workDir, func(path string, entry fs.DirEntry, err error) error {
+		if err != nil {
+			return err
+		}
+		if entry.IsDir() || !strings.Contains(path, "/mysite/") {
+			return nil
+		}
+		_, relPath, _ := strings.Cut(path, content.JCRRoot)
+		relPath = strings.ReplaceAll(relPath, "$", "")
+		data, err := VaultFS.ReadFile(path)
+		if err != nil {
+			return err
+		}
+		files[relPath] = calculateHashCode(data)
+		return nil
+	}); err != nil {
+		return nil, err
+	}
+	return files, nil
+}
+
+func determineExpectedFiles(workDir string, expectedFiles []string) (map[string]string, error) {
+	files := map[string]string{}
+	for _, expectedFile := range expectedFiles {
+		path := filepath.Join(workDir, expectedFile)
+		path = strings.ReplaceAll(path, "/.", "/$.")
+		path = strings.ReplaceAll(path, "/_", "/$_")
+		data, err := VaultFS.ReadFile(path)
+		if err != nil {
+			return nil, err
+		}
+		files[expectedFile] = calculateHashCode(data)
+	}
+	return files, nil
+}
+
+func determineDifferenceFiles(actualFiles map[string]string, expectedFiles map[string]string) map[string]string {
+	diffFiles := map[string]string{}
+	for relPath, hashCode := range actualFiles {
+		hashCode2, exists := expectedFiles[relPath]
+		if !exists {
+			diffFiles[relPath] = ""
+		}
+		if hashCode != hashCode2 {
+			diffFiles[relPath] = hashCode
+		}
+	}
+	for relPath := range expectedFiles {
+		if _, exists := actualFiles[relPath]; !exists {
+			diffFiles[relPath] = ""
+		}
+	}
+	return diffFiles
+}
+
+func determineKeySet(filesMap map[string]string) []string {
+	var filesList []string
+	for relPath := range filesMap {
+		filesList = append(filesList, relPath)
+	}
+	return filesList
+}
+
+func checkPullResult(resultDir string, expectedFiles []string) ([]string, error) {
+	files1, err := determineResultFiles(resultDir)
+	if err != nil {
+		return nil, err
+	}
+	files2, err := determineExpectedFiles("int_test_content/main_content/jcr_root", expectedFiles)
+	if err != nil {
+		return nil, err
+	}
+	diffFiles := determineDifferenceFiles(files1, files2)
+	return determineKeySet(diffFiles), nil
+}
+
+func checkPushResult(resultDir string, expectedFiles []string) ([]string, error) {
+	files1, err := determineResultFiles(resultDir)
+	if err != nil {
+		return nil, err
+	}
+	files2, err := determineTestFiles("int_test_content/main_content/jcr_root")
+	if err != nil {
+		return nil, err
+	}
+	diffFiles := determineDifferenceFiles(files1, files2)
+	files3, err := determineExpectedFiles("int_test_content/new_content/jcr_root", expectedFiles)
+	if err != nil {
+		return nil, err
+	}
+	diffFiles2 := determineDifferenceFiles(diffFiles, files3)
+	return determineKeySet(diffFiles2), nil
+}
+
+func calculateHashCode(data []byte) string {
+	hash := sha256.New()
+	hash.Write(data)
+	return fmt.Sprintf("%x", hash.Sum(nil))
+}
diff --git a/pkg/int_test_content/filter.xml b/pkg/int_test_content/filter.xml
new file mode 100644
index 00000000..fb438729
--- /dev/null
+++ b/pkg/int_test_content/filter.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workspaceFilter version="1.0">
+    <filter root="/content/mysite"/>
+</workspaceFilter>
diff --git a/pkg/int_test_content/main_content/META-INF/MANIFEST.MF b/pkg/int_test_content/main_content/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..002441b0
--- /dev/null
+++ b/pkg/int_test_content/main_content/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Content-Package-Id: my_packages:test-content:1.0.0-SNAPSHOT
+Content-Package-Type: mixed
diff --git a/pkg/int_test_content/main_content/META-INF/vault/config.xml b/pkg/int_test_content/main_content/META-INF/vault/config.xml
new file mode 100644
index 00000000..f1b081a1
--- /dev/null
+++ b/pkg/int_test_content/main_content/META-INF/vault/config.xml
@@ -0,0 +1,86 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+<vaultfs version="1.1">
+    <!--
+        Defines the content aggregation. The order of the defined aggregates
+        is important for finding the correct aggregator.
+    -->
+    <aggregates>
+        <!--
+            Defines an aggregate that handles nt:file and nt:resource nodes.
+        -->
+        <aggregate type="file" title="File Aggregate"/>
+
+        <!--
+            Defines an aggregate that handles file/folder like nodes. It matches
+            all nt:hierarchyNode nodes that have or define a jcr:content
+            child node and excludes child nodes that are nt:hierarchyNodes.
+        -->
+        <aggregate type="filefolder" title="File/Folder Aggregate"/>
+
+        <!--
+            Defines an aggregate that defines full coverage for certain node
+            types that cannot be covered by the default aggregator.
+        -->
+        <aggregate type="full" title="Full Coverage Aggregate">
+            <matches>
+                <include nodeType="rep:AccessControl" respectSupertype="true" />
+                <include nodeType="rep:Policy" respectSupertype="true" />
+                <include nodeType="cq:Widget" respectSupertype="true" />
+                <include nodeType="cq:EditConfig" respectSupertype="true" />
+                <include nodeType="cq:WorkflowModel" respectSupertype="true" />
+                <include nodeType="vlt:FullCoverage" respectSupertype="true" />
+                <include nodeType="mix:language" respectSupertype="true" />
+                <include nodeType="sling:OsgiConfig" respectSupertype="true" />
+            </matches>
+        </aggregate>
+
+        <!--
+            Defines an aggregate that handles nt:folder like nodes.
+        -->
+        <aggregate type="generic" title="Folder Aggregate">
+            <matches>
+                <include nodeType="nt:folder" respectSupertype="true" />
+            </matches>
+            <contains>
+                <exclude isNode="true" />
+            </contains>
+        </aggregate>
+
+        <!--
+            Defines the default aggregate
+        -->
+        <aggregate type="generic" title="Default Aggregator" isDefault="true">
+            <matches>
+                <!-- all -->
+            </matches>
+            <contains>
+                <exclude nodeType="nt:hierarchyNode" respectSupertype="true" />
+            </contains>
+        </aggregate>
+
+    </aggregates>
+
+    <!--
+      defines the input handlers
+    -->
+    <handlers>
+        <handler type="folder"/>
+        <handler type="file"/>
+        <handler type="generic"/>
+    </handlers>
+</vaultfs>
diff --git a/pkg/int_test_content/main_content/META-INF/vault/definition/$.content.xml b/pkg/int_test_content/main_content/META-INF/vault/definition/$.content.xml
new file mode 100644
index 00000000..935962c3
--- /dev/null
+++ b/pkg/int_test_content/main_content/META-INF/vault/definition/$.content.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:vlt="http://www.day.com/jcr/vault/1.0"
+    jcr:primaryType="vlt:PackageDefinition"
+    group="my_packages"
+    name="test-content"
+    version="1.0.0-SNAPSHOT"
+    builtWith="AEM Compose"/>
diff --git a/pkg/int_test_content/main_content/META-INF/vault/filter.xml b/pkg/int_test_content/main_content/META-INF/vault/filter.xml
new file mode 100644
index 00000000..e0c2d68a
--- /dev/null
+++ b/pkg/int_test_content/main_content/META-INF/vault/filter.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<workspaceFilter version="1.0">
+    <filter root="/apps/mysite"/>
+    <filter root="/conf/mysite"/>
+    <filter root="/content/mysite"/>
+    <filter root="/var/workflow/models/mysite"/>
+</workspaceFilter>
diff --git a/pkg/int_test_content/main_content/META-INF/vault/nodetypes.cnd b/pkg/int_test_content/main_content/META-INF/vault/nodetypes.cnd
new file mode 100644
index 00000000..fd926604
--- /dev/null
+++ b/pkg/int_test_content/main_content/META-INF/vault/nodetypes.cnd
@@ -0,0 +1,5 @@
+<'rep'='internal'>
+
+[rep:RepoAccessControllable]
+  mixin
+  + rep:repoPolicy (rep:Policy) protected ignore
diff --git a/pkg/int_test_content/main_content/META-INF/vault/properties.xml b/pkg/int_test_content/main_content/META-INF/vault/properties.xml
new file mode 100644
index 00000000..d2be1f16
--- /dev/null
+++ b/pkg/int_test_content/main_content/META-INF/vault/properties.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
+<properties>
+    <entry key="group">my_packages</entry>
+    <entry key="name">test-content</entry>
+    <entry key="version">1.0.0-SNAPSHOT</entry>
+    <entry key="createdBy">AEM Compose</entry>
+    <entry key="acHandling">merge</entry>
+</properties>
diff --git a/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/$.content.xml b/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/$.content.xml
new file mode 100644
index 00000000..cbb48e78
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/$.content.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:ClientLibraryFolder"
+    allowProxy="{Boolean}true"
+    categories="[mysite.site]"
+    cssProcessor="[default:none,min:none]"
+    dependencies="[mysite.dependencies]"
+    jsProcessor="[default:none,min:none]"/>
diff --git a/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css.txt b/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css.txt
new file mode 100644
index 00000000..f852363a
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css.txt
@@ -0,0 +1,3 @@
+#base=css
+
+site.css
\ No newline at end of file
diff --git a/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css/site.css b/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css/site.css
new file mode 100644
index 00000000..3a86ca3b
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css/site.css
@@ -0,0 +1 @@
+body,html{background:#ececec;color:#202020;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:1pc;line-height:1.5;margin:0}@media(prefers-color-scheme:dark){body,html{background:#131313;color:#dfdfdf}}a{color:#2020e0}@media(prefers-color-scheme:dark){a{color:#dfdf1f}}button,input,optgroup,select,textarea{font:inherit}.cmp-helloworld__item-label{margin-bottom:0}.cmp-helloworld__item-output{margin-top:0}.cmp-navigation__item--level-0:hover>.cmp-navigation__group{background:#ececec}main.container{padding:.5em 1em}footer.experiencefragment{border-top:1px solid #202020;padding:.5em 1em}@media(prefers-color-scheme:dark){footer.experiencefragment{border-color:#dfdfdf}}footer.experiencefragment .cmp-separator__horizontal-rule{border:0;margin:0}header.experiencefragment{border-bottom:1px solid #202020;padding:.5em 1em}@media(prefers-color-scheme:dark){header.experiencefragment{border-bottom-color:#dfdfdf}}header.experiencefragment a{color:#202020;text-decoration:none}@media(prefers-color-scheme:dark){header.experiencefragment a{color:#dfdfdf}}header.experiencefragment a:focus,header.experiencefragment a:hover{color:#2020e0;text-decoration:underline}@media(prefers-color-scheme:dark){header.experiencefragment a:focus,header.experiencefragment a:hover{color:#dfdf1f}}header.experiencefragment .cmp-container{display:grid;grid-template-columns:4fr 1fr 1fr}header.experiencefragment .cmp-navigation__group{list-style:none;margin:0;padding:0}header.experiencefragment .cmp-navigation__item--level-0{display:grid;grid-template-columns:1fr 3fr}header.experiencefragment .cmp-navigation__item--level-0>.cmp-navigation__group{display:grid;grid-template-columns:repeat(3,1fr)}header.experiencefragment .cmp-navigation__item-link{display:block}header.experiencefragment .cmp-navigation__item--active>.cmp-navigation__item-link{font-weight:700}header.experiencefragment .cmp-languagenavigation{position:relative}header.experiencefragment .cmp-languagenavigation:before{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="rgb(32,32,32)" d="M12.1,0.2h-0.1c-3.1,0-6.1,1.3-8.3,3.5C1.4,6,0.2,8.9,0.2,12.1c0,3.1,1.3,6.1,3.5,8.3c2.2,2.2,5.1,3.4,8.3,3.4 c0,0,0,0,0.1,0c6.5,0,11.7-5.3,11.7-11.8C23.7,5.5,18.5,0.3,12.1,0.2z M18.3,11.5c-0.1-1.4-0.3-2.8-0.7-4.1C18.5,7,19.4,6.5,20.3,6 c1.1,1.6,1.9,3.5,2,5.5H18.3z M22.2,12.5c-0.1,2.1-0.8,4-2,5.5c-0.8-0.6-1.7-1-2.6-1.4c0.3-1.1,0.6-2.2,0.7-3.3c0-0.3,0-0.5,0-0.8 H22.2z M19.6,5.2c-0.8,0.5-1.6,0.9-2.4,1.3c-0.6-1.4-1.4-2.7-2.3-3.8c-0.2-0.2-0.4-0.4-0.6-0.6C16.4,2.5,18.3,3.7,19.6,5.2z M12.8,22.2c-0.1,0-0.2,0-0.3,0v-5.7c1.3,0,2.6,0.3,3.8,0.7C15.6,19.1,14.3,20.8,12.8,22.2z M9.9,20.8c-0.9-1.1-1.7-2.3-2.2-3.6 c1.2-0.4,2.5-0.6,3.8-0.7v5.7c-0.1,0-0.2,0-0.3,0C10.7,21.8,10.3,21.3,9.9,20.8z M11.4,1.8c0,0,0.1,0,0.1,0v5.7 c-1.3,0-2.6-0.3-3.8-0.7C8.5,4.9,9.7,3.2,11.4,1.8z M14.1,3.3c0.9,1.1,1.6,2.3,2.2,3.5c-1.2,0.4-2.5,0.6-3.8,0.7V1.8 c0.1,0,0.1,0,0.2,0C13.2,2.2,13.7,2.7,14.1,3.3z M16.7,7.7c0.4,1.2,0.6,2.5,0.7,3.8h-4.8V8.4C13.9,8.4,15.3,8.2,16.7,7.7z M11.5,8.4 v3.1H6.7C6.7,10.2,7,9,7.4,7.7C8.7,8.2,10.1,8.4,11.5,8.4z M11.5,12.5v3.1c-1.4,0-2.8,0.3-4.2,0.7c-0.4-1.2-0.6-2.5-0.7-3.8H11.5z M12.5,15.6v-3.1h4.8c0,0.2,0,0.5,0,0.7c-0.1,1.1-0.3,2.1-0.6,3.1C15.3,15.8,13.9,15.6,12.5,15.6z M9.6,2C8.4,3.3,7.4,4.8,6.8,6.5 C5.9,6.1,5.1,5.7,4.4,5.2c0.1-0.1,0.2-0.3,0.4-0.4C6.1,3.4,7.8,2.5,9.6,2z M5.7,11.5H1.8c0.1-2,0.8-3.9,1.9-5.5 C4.6,6.5,5.5,7,6.4,7.4C6,8.7,5.7,10.1,5.7,11.5z M6.4,16.6C5.5,17,4.6,17.5,3.7,18c-1.2-1.6-1.9-3.5-1.9-5.5h3.9 C5.7,13.9,5.9,15.3,6.4,16.6z M4.4,18.8c0.8-0.5,1.5-0.9,2.4-1.3c0.6,1.4,1.4,2.7,2.4,3.9c0.1,0.2,0.3,0.3,0.4,0.5 c-1.8-0.4-3.4-1.3-4.7-2.7C4.6,19.1,4.5,19,4.4,18.8z M14.5,21.9c1.2-1.3,2.1-2.8,2.8-4.4c0.8,0.3,1.6,0.8,2.4,1.2 C18.3,20.3,16.5,21.4,14.5,21.9z"/></svg>');background-repeat:no-repeat;content:" ";display:block;height:1.5em}@media(prefers-color-scheme:dark){header.experiencefragment .cmp-languagenavigation:before{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="rgb(223,223,223)" d="M12.1,0.2h-0.1c-3.1,0-6.1,1.3-8.3,3.5C1.4,6,0.2,8.9,0.2,12.1c0,3.1,1.3,6.1,3.5,8.3c2.2,2.2,5.1,3.4,8.3,3.4 c0,0,0,0,0.1,0c6.5,0,11.7-5.3,11.7-11.8C23.7,5.5,18.5,0.3,12.1,0.2z M18.3,11.5c-0.1-1.4-0.3-2.8-0.7-4.1C18.5,7,19.4,6.5,20.3,6 c1.1,1.6,1.9,3.5,2,5.5H18.3z M22.2,12.5c-0.1,2.1-0.8,4-2,5.5c-0.8-0.6-1.7-1-2.6-1.4c0.3-1.1,0.6-2.2,0.7-3.3c0-0.3,0-0.5,0-0.8 H22.2z M19.6,5.2c-0.8,0.5-1.6,0.9-2.4,1.3c-0.6-1.4-1.4-2.7-2.3-3.8c-0.2-0.2-0.4-0.4-0.6-0.6C16.4,2.5,18.3,3.7,19.6,5.2z M12.8,22.2c-0.1,0-0.2,0-0.3,0v-5.7c1.3,0,2.6,0.3,3.8,0.7C15.6,19.1,14.3,20.8,12.8,22.2z M9.9,20.8c-0.9-1.1-1.7-2.3-2.2-3.6 c1.2-0.4,2.5-0.6,3.8-0.7v5.7c-0.1,0-0.2,0-0.3,0C10.7,21.8,10.3,21.3,9.9,20.8z M11.4,1.8c0,0,0.1,0,0.1,0v5.7 c-1.3,0-2.6-0.3-3.8-0.7C8.5,4.9,9.7,3.2,11.4,1.8z M14.1,3.3c0.9,1.1,1.6,2.3,2.2,3.5c-1.2,0.4-2.5,0.6-3.8,0.7V1.8 c0.1,0,0.1,0,0.2,0C13.2,2.2,13.7,2.7,14.1,3.3z M16.7,7.7c0.4,1.2,0.6,2.5,0.7,3.8h-4.8V8.4C13.9,8.4,15.3,8.2,16.7,7.7z M11.5,8.4 v3.1H6.7C6.7,10.2,7,9,7.4,7.7C8.7,8.2,10.1,8.4,11.5,8.4z M11.5,12.5v3.1c-1.4,0-2.8,0.3-4.2,0.7c-0.4-1.2-0.6-2.5-0.7-3.8H11.5z M12.5,15.6v-3.1h4.8c0,0.2,0,0.5,0,0.7c-0.1,1.1-0.3,2.1-0.6,3.1C15.3,15.8,13.9,15.6,12.5,15.6z M9.6,2C8.4,3.3,7.4,4.8,6.8,6.5 C5.9,6.1,5.1,5.7,4.4,5.2c0.1-0.1,0.2-0.3,0.4-0.4C6.1,3.4,7.8,2.5,9.6,2z M5.7,11.5H1.8c0.1-2,0.8-3.9,1.9-5.5 C4.6,6.5,5.5,7,6.4,7.4C6,8.7,5.7,10.1,5.7,11.5z M6.4,16.6C5.5,17,4.6,17.5,3.7,18c-1.2-1.6-1.9-3.5-1.9-5.5h3.9 C5.7,13.9,5.9,15.3,6.4,16.6z M4.4,18.8c0.8-0.5,1.5-0.9,2.4-1.3c0.6,1.4,1.4,2.7,2.4,3.9c0.1,0.2,0.3,0.3,0.4,0.5 c-1.8-0.4-3.4-1.3-4.7-2.7C4.6,19.1,4.5,19,4.4,18.8z M14.5,21.9c1.2-1.3,2.1-2.8,2.8-4.4c0.8,0.3,1.6,0.8,2.4,1.2 C18.3,20.3,16.5,21.4,14.5,21.9z"/></svg>')}}header.experiencefragment .cmp-languagenavigation>.cmp-languagenavigation__group{background:#ececec;border:1px solid #202020;border-top:0;padding:0 8px;position:absolute;top:34px;-webkit-transition-delay:.5s;transition-delay:.5s;visibility:hidden;width:20em}@media(prefers-color-scheme:dark){header.experiencefragment .cmp-languagenavigation>.cmp-languagenavigation__group{background:#131313;border-color:#dfdfdf}}header.experiencefragment .cmp-languagenavigation:hover>.cmp-languagenavigation__group{-webkit-transition-delay:0s;transition-delay:0s;visibility:visible}header.experiencefragment .cmp-languagenavigation__group{list-style:none;margin:0;padding:0}header.experiencefragment .cmp-languagenavigation__item-title{font-size:x-small;text-transform:uppercase}header.experiencefragment .cmp-languagenavigation__item--level-0{margin-bottom:.5em}header.experiencefragment .cmp-languagenavigation__item--level-1{display:inline}header.experiencefragment .cmp-languagenavigation__item--level-1:not(:first-child):before{content:" | "}header.experiencefragment .cmp-languagenavigation__item--active>.cmp-languagenavigation__item-link{font-weight:700}header.experiencefragment .cmp-search__field{display:-webkit-box;display:-ms-flexbox;display:flex;margin:-3px 0}header.experiencefragment .cmp-search__input{height:26px}
\ No newline at end of file
diff --git a/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js.txt b/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js.txt
new file mode 100644
index 00000000..ffaf1afa
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js.txt
@@ -0,0 +1,3 @@
+#base=js
+
+site.js
\ No newline at end of file
diff --git a/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js/site.js b/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js/site.js
new file mode 100644
index 00000000..1ca7fa6c
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js/site.js
@@ -0,0 +1 @@
+!function(){var e={356:function(){!function(){"use strict";var e='[data-cmp-is="helloworld"]',t='[data-cmp-hook-helloworld="property"]',n='[data-cmp-hook-helloworld="model"]';function o(e){e&&e.element&&function(e){e.element.removeAttribute("data-cmp-is");var o=e.element.querySelectorAll(t);o=1==o.length?o[0].textContent:null;var r=e.element.querySelectorAll(n);r=1==r.length?r[0].textContent:null,console&&console.log&&console.log("HelloWorld component JavaScript example","\nText property:\n",o,"\nModel message:\n",r)}(e)}function r(){for(var t=document.querySelectorAll(e),n=0;n<t.length;n++)new o({element:t[n]});var r=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,l=document.querySelector("body");new r((function(t){t.forEach((function(t){var n=[].slice.call(t.addedNodes);n.length>0&&n.forEach((function(t){t.querySelectorAll&&[].slice.call(t.querySelectorAll(e)).forEach((function(e){new o({element:e})}))}))}))})).observe(l,{subtree:!0,childList:!0,characterData:!0})}"loading"!==document.readyState?r():document.addEventListener("DOMContentLoaded",r)}()}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var l=t[o]={exports:{}};return e[o](l,l.exports,n),l.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){"use strict";n(356)}()}();
\ No newline at end of file
diff --git a/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$.content.xml b/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$.content.xml
new file mode 100644
index 00000000..3fad3550
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$.content.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Component"
+    jcr:title="Hello World Component"
+    componentGroup="My Site - Content"/>
diff --git a/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_dialog.xml b/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_dialog.xml
new file mode 100644
index 00000000..16d39076
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_dialog.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="nt:unstructured"
+    jcr:title="Properties"
+    sling:resourceType="cq/gui/components/authoring/dialog">
+    <content
+        jcr:primaryType="nt:unstructured"
+        sling:resourceType="granite/ui/components/coral/foundation/fixedcolumns">
+        <items jcr:primaryType="nt:unstructured">
+            <column
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="granite/ui/components/coral/foundation/container">
+                <items jcr:primaryType="nt:unstructured">
+                    <text
+                        jcr:primaryType="nt:unstructured"
+                        sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
+                        fieldLabel="Text"
+                        name="./text"/>
+                </items>
+            </column>
+        </items>
+    </content>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_editConfig.xml b/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_editConfig.xml
new file mode 100644
index 00000000..e6cda673
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_editConfig.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:EditConfig">
+    <cq:listeners
+        jcr:primaryType="cq:EditListenersConfig"
+        aftercreate="REFRESH_PARENT"
+        afterdelete="REFRESH_PARENT"
+        afteredit="REFRESH_SELF"
+        afterinsert="REFRESH_PARENT"
+        aftermove="REFRESH_PARENT"
+        afterremove="REFRESH_PARENT"/>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_template.xml b/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_template.xml
new file mode 100644
index 00000000..15b0b8db
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/$_cq_template.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="nt:unstructured"
+    text="Hello World!"/>
diff --git a/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/helloworld.html b/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/helloworld.html
new file mode 100644
index 00000000..50bdd9e4
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/apps/mysite/components/helloworld/helloworld.html
@@ -0,0 +1,11 @@
+<div class="cmp-helloworld" data-cmp-is="helloworld">
+    <h2 class="cmp-helloworld-title">Hello World Component</h2>
+    <div class="cmp-helloworld-item" data-sly-test="${properties.text}">
+        <p class="cmp-helloworld-item-label">Text property:</p>
+        <pre class="cmp-helloworld-item-output" data-cmp-hook-helloworld="property">${properties.text}</pre>
+    </div>
+    <div class="cmp-helloworld-item" data-sly-use.model="com.mysite.core.models.HelloWorldModel" data-sly-test="${model.message}">
+        <p class="cmp-helloworld-item-label">Model message:</p>
+        <pre class="cmp-helloworld-item-output"data-cmp-hook-helloworld="model">${model.message}</pre>
+    </div>
+</div>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/$.content.xml
new file mode 100644
index 00000000..c079c59d
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/$.content.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"
+    jcr:title="My Site"/>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/$_sling_configs/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/$_sling_configs/$.content.xml
new file mode 100644
index 00000000..90209c72
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/$_sling_configs/$.content.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="nt:unstructured">
+    <com.mysite.datalayer.DataLayerConfig
+        jcr:primaryType="nt:unstructured"
+        enabled="{Boolean}true"/>
+    <com.mysite.pdfviewer.PdfViewerCaConfig/>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/$_sling_configs/com.mysite.pdfviewer.PdfViewerCaConfig/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/$_sling_configs/com.mysite.pdfviewer.PdfViewerCaConfig/$.content.xml
new file mode 100644
index 00000000..39eb2fb3
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/$_sling_configs/com.mysite.pdfviewer.PdfViewerCaConfig/$.content.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        jcr:primaryType="cq:PageContent"
+        clientId="28b07c6be4d544f188dc2f36e33b196b"
+        reportSuiteId=""/>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/$.content.xml
new file mode 100644
index 00000000..491392d5
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/$.content.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"/>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/$.content.xml
new file mode 100644
index 00000000..c55e733a
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/$.content.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Page">
+    <policies/>
+    <template-types/>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/policies/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/policies/$.content.xml
new file mode 100644
index 00000000..ea668802
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/policies/$.content.xml
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:rep="internal"
+    jcr:mixinTypes="[rep:AccessControllable]"
+    jcr:primaryType="cq:Page">
+    <rep:policy/>
+    <mysite jcr:primaryType="nt:unstructured">
+        <components jcr:primaryType="nt:unstructured">
+            <image jcr:primaryType="nt:unstructured">
+                <policy_651483963895698
+                    jcr:description="- Enable lazy loading for faster page loading.&#xd;&#xa;- Define allowed image widths for automatic loading of the image in the most optimal resolution, given the size at which each image is displayed on the page, and the visitor's pixel density.&#xd;&#xa;- Disallow direct asset upload, to force authors to first upload the images to Assets."
+                    jcr:primaryType="nt:unstructured"
+                    jcr:title="Content Image"
+                    sling:resourceType="wcm/core/components/policy/policy"
+                    allowedRenditionWidths="[320,480,600,800,1024,1200,1600]"
+                    allowUpload="false"
+                    altValueFromDAM="true"
+                    disableLazyLoading="false"
+                    displayPopupTitle="true"
+                    enableAssetDelivery="true"
+                    isDecorative="false"
+                    jpegQuality="{Long}85"
+                    titleValueFromDAM="true"
+                    uuidDisabled="true">
+                    <jcr:content jcr:primaryType="nt:unstructured"/>
+                    <plugins jcr:primaryType="nt:unstructured">
+                        <crop
+                            jcr:primaryType="nt:unstructured"
+                            features="*">
+                            <aspectRatios jcr:primaryType="nt:unstructured">
+                                <item0
+                                    jcr:primaryType="nt:unstructured"
+                                    name="Wide Landscape"
+                                    ratio="0.6180"/>
+                                <item1
+                                    jcr:primaryType="nt:unstructured"
+                                    name="Landscape"
+                                    ratio="0.8284"/>
+                                <item2
+                                    jcr:primaryType="nt:unstructured"
+                                    name="Square"
+                                    ratio="1"/>
+                                <item3
+                                    jcr:primaryType="nt:unstructured"
+                                    name="Portrait"
+                                    ratio="1.6180"/>
+                            </aspectRatios>
+                        </crop>
+                        <rotate
+                            jcr:primaryType="nt:unstructured"
+                            features="right"/>
+                        <flip
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                    </plugins>
+                </policy_651483963895698>
+            </image>
+            <text jcr:primaryType="nt:unstructured">
+                <policy_641562756958017
+                    jcr:primaryType="nt:unstructured"
+                    jcr:title="Content Text"
+                    sling:resourceType="wcm/core/components/policy/policy">
+                    <jcr:content jcr:primaryType="nt:unstructured"/>
+                    <rtePlugins jcr:primaryType="nt:unstructured">
+                        <paraformat
+                            jcr:primaryType="nt:unstructured"
+                            features="*">
+                            <formats
+                                jcr:primaryType="nt:unstructured"
+                                override="true">
+                                <item0
+                                    jcr:primaryType="nt:unstructured"
+                                    description="Paragraph"
+                                    tag="p"/>
+                                <item1
+                                    jcr:primaryType="nt:unstructured"
+                                    description="Quote"
+                                    tag="blockquote"/>
+                                <item2
+                                    jcr:primaryType="nt:unstructured"
+                                    description="Preformatted"
+                                    tag="pre"/>
+                            </formats>
+                        </paraformat>
+                        <misctools
+                            jcr:primaryType="nt:unstructured"
+                            features="-">
+                            <specialCharsConfig jcr:primaryType="nt:unstructured">
+                                <chars
+                                    jcr:primaryType="nt:unstructured"
+                                    override="true">
+                                    <item0
+                                        jcr:primaryType="nt:unstructured"
+                                        entity="&amp;copy;"
+                                        name="copyright"/>
+                                    <item1
+                                        jcr:primaryType="nt:unstructured"
+                                        entity="&amp;euro;"
+                                        name="euro"/>
+                                    <item2
+                                        jcr:primaryType="nt:unstructured"
+                                        entity="&amp;reg;"
+                                        name="registered"/>
+                                    <item3
+                                        jcr:primaryType="nt:unstructured"
+                                        entity="&amp;trade;"
+                                        name="trademark"/>
+                                </chars>
+                            </specialCharsConfig>
+                        </misctools>
+                        <edit
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <findreplace
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <undo
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <spellcheck
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <image
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <table
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <lists
+                            jcr:primaryType="nt:unstructured"
+                            features="*"/>
+                        <justify
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <format
+                            jcr:primaryType="nt:unstructured"
+                            features="bold,italic"/>
+                        <links
+                            jcr:primaryType="nt:unstructured"
+                            features="modifylink,unlink"/>
+                        <subsuperscript
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                    </rtePlugins>
+                </policy_641562756958017>
+            </text>
+            <title jcr:primaryType="nt:unstructured">
+                <policy_641475696923109
+                    jcr:description="Allows only H1 and disallows links for the main page title."
+                    jcr:primaryType="nt:unstructured"
+                    jcr:title="Page Title"
+                    sling:resourceType="wcm/core/components/policy/policy"
+                    allowedTypes="h1"
+                    linkDisabled="true"
+                    type="h1">
+                    <jcr:content jcr:primaryType="nt:unstructured"/>
+                </policy_641475696923109>
+                <policy_641528232375303
+                    jcr:description="Allows all sizes, but not H1, which is reserved for the main page title."
+                    jcr:primaryType="nt:unstructured"
+                    jcr:title="Content Title"
+                    sling:resourceType="wcm/core/components/policy/policy"
+                    allowedTypes="[h2,h3,h4,h5,h6]"
+                    linkDisabled="false"
+                    type="h2">
+                    <jcr:content jcr:primaryType="nt:unstructured"/>
+                </policy_641528232375303>
+            </title>
+            <page jcr:primaryType="nt:unstructured">
+                <policy
+                    jcr:description="Includes the required client libraries."
+                    jcr:primaryType="nt:unstructured"
+                    jcr:title="Generic Page"
+                    sling:resourceType="wcm/core/components/policy/policy"
+                    clientlibs="[mysite.dependencies,mysite.site]"
+                    clientlibsJsHead="mysite.dependencies">
+                    <jcr:content jcr:primaryType="nt:unstructured"/>
+                </policy>
+            </page>
+        </components>
+    </mysite>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/policies/$_rep_policy.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/policies/$_rep_policy.xml
new file mode 100644
index 00000000..ad26bd52
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/policies/$_rep_policy.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:crx="http://www.day.com/crx/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
+    jcr:primaryType="rep:ACL">
+    <allow
+        jcr:primaryType="rep:GrantACE"
+        rep:principalName="everyone"
+        rep:privileges="{Name}[jcr:read]"/>
+    <allow1
+        jcr:primaryType="rep:GrantACE"
+        rep:principalName="content-authors"
+        rep:privileges="{Name}[crx:replicate]"/>
+    <allow2
+        jcr:primaryType="rep:GrantACE"
+        rep:principalName="template-authors"
+        rep:privileges="{Name}[jcr:versionManagement,rep:write,crx:replicate,jcr:lockManagement]"/>
+    <allow3
+        jcr:primaryType="rep:GrantACE"
+        rep:principalName="version-manager-service"
+        rep:privileges="{Name}[jcr:versionManagement,rep:write]"/>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/$.content.xml
new file mode 100644
index 00000000..724da713
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/$.content.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Page">
+    <page/>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/$.content.xml
new file mode 100644
index 00000000..db0d9ec0
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/$.content.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Template">
+    <jcr:content
+        jcr:description="Generic template for empty pages of My Site"
+        jcr:primaryType="cq:PageContent"
+        jcr:title="Page"/>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/initial/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/initial/$.content.xml
new file mode 100644
index 00000000..20a1550d
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/initial/$.content.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:template="/conf/mysite/settings/wcm/templates/page-content"
+        jcr:primaryType="cq:PageContent"
+        sling:resourceType="mysite/components/page">
+        <root
+            jcr:primaryType="nt:unstructured"
+            sling:resourceType="mysite/components/container"
+            layout="responsiveGrid">
+            <container
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="mysite/components/container"
+                layout="responsiveGrid"/>
+        </root>
+    </jcr:content>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/policies/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/policies/$.content.xml
new file mode 100644
index 00000000..20096f30
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/policies/$.content.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:policy="mysite/components/page/policy"
+        jcr:primaryType="nt:unstructured"
+        sling:resourceType="wcm/core/components/policies/mappings">
+        <root
+            cq:policy="mysite/components/container/policy_1574694950110"
+            jcr:primaryType="nt:unstructured"
+            sling:resourceType="wcm/core/components/policies/mapping">
+            <container
+                cq:policy="mysite/components/container/policy_1574695586800"
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="wcm/core/components/policies/mapping"/>
+        </root>
+    </jcr:content>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/structure/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/structure/$.content.xml
new file mode 100644
index 00000000..911a61a3
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/settings/wcm/template-types/page/structure/$.content.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:deviceGroups="[mobile/groups/responsive]"
+        cq:template="/conf/mysite/settings/wcm/templates/page-content"
+        jcr:primaryType="cq:PageContent"
+        sling:resourceType="mysite/components/page">
+        <root
+            jcr:primaryType="nt:unstructured"
+            sling:resourceType="mysite/components/container"
+            layout="responsiveGrid">
+            <experiencefragment-header
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="mysite/components/experiencefragment"
+                fragmentVariationPath="/content/experience-fragments/mysite/us/en/site/header/master"/>
+            <container
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="mysite/components/container"
+                editable="{Boolean}true"
+                layout="responsiveGrid"/>
+        </root>
+        <cq:responsive jcr:primaryType="nt:unstructured">
+            <breakpoints jcr:primaryType="nt:unstructured">
+                <phone
+                    jcr:primaryType="nt:unstructured"
+                    title="Smaller Screen"
+                    width="{Long}768"/>
+                <tablet
+                    jcr:primaryType="nt:unstructured"
+                    title="Tablet"
+                    width="{Long}1200"/>
+            </breakpoints>
+        </cq:responsive>
+    </jcr:content>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/$.content.xml
new file mode 100644
index 00000000..ee2e45c7
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/$.content.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"
+    jcr:title="workflow settings"/>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/$.content.xml
new file mode 100644
index 00000000..32703c6c
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/$.content.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"
+    jcr:title="workflow launcher"/>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/config/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/config/$.content.xml
new file mode 100644
index 00000000..5b1063ab
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/config/$.content.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"
+    jcr:title="workflow launcher configurations"/>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/config/asset_processing/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/config/asset_processing/$.content.xml
new file mode 100644
index 00000000..5dfea319
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/launcher/config/asset_processing/$.content.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:WorkflowLauncher"
+    description="Asset Processing"
+    disabledFeatures="[com.adobe.dam.asset.nui.feature.flag]"
+    enabled="{Boolean}true"
+    eventType="{Long}1"
+    excludeList="event-user-data:changedByPageManagerCopy"
+    glob="/content/dam(/((?!/subassets).)*/)renditions/original"
+    nodetype="nt:file"
+    runModes="author"
+    workflow="/var/workflow/models/mysite/asset_processing"/>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/models/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/models/$.content.xml
new file mode 100644
index 00000000..9f576d29
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/models/$.content.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"
+    jcr:title="workflow model pages"/>
diff --git a/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/models/archive_page/$.content.xml b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/models/archive_page/$.content.xml
new file mode 100644
index 00000000..41aa947b
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/conf/mysite/workflow/models/archive_page/$.content.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:designPath="/libs/settings/wcm/designs/default"
+        cq:template="/libs/cq/workflow/templates/model"
+        jcr:description="This custom workflow deactivates a page and moves it to archive.&#xd;&#xa;Requires Publishers approval"
+        jcr:primaryType="cq:PageContent"
+        jcr:title="Archive Page"
+        sling:resourceType="cq/workflow/components/pages/model"
+        lastSynced="{Date}2024-05-01T16:10:24.561Z">
+        <flow
+            jcr:primaryType="nt:unstructured"
+            sling:resourceType="foundation/components/parsys">
+            <set_variable_preview
+                jcr:description="Set value of variables"
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Set Agent Id as Preview"
+                sling:resourceType="cq/workflow/components/model/set_variable"
+                defaultValue="preview">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="com.adobe.granite.workflow.core.process.SetVariableProcess"
+                    PROCESS_AUTO_ADVANCE="true"
+                    variableMappings="\{&quot;variableName&quot;:&quot;agentId&quot;,&quot;mappingType&quot;:&quot;LITERAL&quot;,&quot;mappingValue&quot;:&quot;preview&quot;}"/>
+            </set_variable_preview>
+            <process_deactivate_page
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Deactivate Page/Asset from Preview"
+                sling:resourceType="cq/workflow/components/model/process">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="com.day.cq.wcm.workflow.process.DeactivatePageProcess"
+                    PROCESS_AUTO_ADVANCE="true"/>
+            </process_deactivate_page>
+            <set_variable_publish
+                jcr:description="Set Agent Id as Publish"
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Set Agent Id as Publish"
+                sling:resourceType="cq/workflow/components/model/set_variable"
+                defaultValue="publish">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="com.adobe.granite.workflow.core.process.SetVariableProcess"
+                    PROCESS_AUTO_ADVANCE="true"
+                    variableMappings="\{&quot;variableName&quot;:&quot;agentId&quot;,&quot;mappingType&quot;:&quot;LITERAL&quot;,&quot;mappingValue&quot;:&quot;publish&quot;}"/>
+            </set_variable_publish>
+            <participant
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Approve Archiving"
+                sling:resourceType="cq/workflow/components/model/dynamic_participant">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    DO_NOTIFY="true"
+                    DYNAMIC_PARTICIPANT="com.mysite.core.workflows.choosers.ArchivePageApproverDynamicParticipant"/>
+            </participant>
+            <or
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="cq/workflow/components/model/or"
+                branches="2"
+                orSplit="true">
+                <_x0031_
+                    jcr:primaryType="nt:unstructured"
+                    sling:resourceType="cq/flow/components/parsys">
+                    <noopprocess
+                        jcr:description="A no operation process"
+                        jcr:primaryType="nt:unstructured"
+                        jcr:title="Proceed With The Archiving"
+                        sling:resourceType="cq/workflow/components/workflow/noopprocess">
+                        <metaData
+                            jcr:primaryType="nt:unstructured"
+                            PROCESS="/libs/workflow/scripts/noop.ecma"
+                            PROCESS_AUTO_ADVANCE="true"/>
+                    </noopprocess>
+                </_x0031_>
+                <_x0032_
+                    jcr:primaryType="nt:unstructured"
+                    sling:resourceType="cq/flow/components/parsys">
+                    <goto
+                        jcr:description="Goto Step"
+                        jcr:primaryType="nt:unstructured"
+                        jcr:title="Reject The Archiving"
+                        sling:resourceType="cq/workflow/components/model/goto">
+                        <metaData
+                            jcr:primaryType="nt:unstructured"
+                            PROCESS="com.adobe.granite.workflow.core.process.GotoProcess"
+                            PROCESS_AUTO_ADVANCE="false"
+                            script="function check() {&#xd;&#xa;  return true;&#xd;&#xa;}"
+                            TARGET_NODE_PATH="/conf/global/settings/workflow/models/mysite/archive_page/jcr:content/flow/noopprocess"/>
+                    </goto>
+                </_x0032_>
+            </or>
+            <process
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Deactivate Page"
+                sling:resourceType="cq/workflow/components/model/process">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="com.day.cq.wcm.workflow.process.DeactivatePageProcess"
+                    PROCESS_AUTO_ADVANCE="true"/>
+            </process>
+            <process_557562317
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Move Page To Archive"
+                sling:resourceType="cq/workflow/components/model/process">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="com.mysite.core.workflows.processes.MovePageToArchiveProcess"
+                    PROCESS_AUTO_ADVANCE="true"/>
+            </process_557562317>
+            <noopprocess
+                jcr:description="A no operation process"
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Workflow End"
+                sling:resourceType="cq/workflow/components/workflow/noopprocess">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="/libs/workflow/scripts/noop.ecma"
+                    PROCESS_AUTO_ADVANCE="true"/>
+            </noopprocess>
+        </flow>
+        <variables jcr:primaryType="nt:unstructured">
+            <agentId
+                jcr:primaryType="nt:unstructured"
+                additionalProperties="\{}"
+                defaultValue="publish"
+                name="agentId"
+                type="java.lang.String"/>
+        </variables>
+    </jcr:content>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/content/mysite/$.content.xml b/pkg/int_test_content/main_content/jcr_root/content/mysite/$.content.xml
new file mode 100644
index 00000000..43c05ae5
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/content/mysite/$.content.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:allowedTemplates="[/conf/mysite/settings/wcm/templates/(?!xf-).*]"
+        cq:conf="/conf/mysite"
+        cq:redirectTarget="/content/mysite/us/en"
+        cq:template="/conf/mysite/settings/wcm/templates/page-content"
+        jcr:primaryType="cq:PageContent"
+        jcr:title="My Site"
+        sling:configRef="/conf/mysite"
+        sling:redirect="{Boolean}true"
+        sling:redirectStatus="{Long}302"
+        sling:resourceType="mysite/components/page"/>
+    <us/>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/content/mysite/us/$.content.xml b/pkg/int_test_content/main_content/jcr_root/content/mysite/us/$.content.xml
new file mode 100644
index 00000000..d88a60e8
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/content/mysite/us/$.content.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:redirectTarget="/content/mysite/us/en"
+        cq:template="/conf/mysite/settings/wcm/templates/page-content"
+        jcr:primaryType="cq:PageContent"
+        jcr:title="us"
+        sling:resourceType="mysite/components/page"/>
+    <en/>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/content/mysite/us/en/$.content.xml b/pkg/int_test_content/main_content/jcr_root/content/mysite/us/en/$.content.xml
new file mode 100644
index 00000000..99c0329d
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/content/mysite/us/en/$.content.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:contextHubPath="/etc/cloudsettings/default/contexthub"
+        cq:contextHubSegmentsPath="/etc/segmentation/contexthub"
+        cq:template="/conf/mysite/settings/wcm/templates/page-content"
+        jcr:primaryType="cq:PageContent"
+        jcr:title="en"
+        sling:resourceType="mysite/components/page"
+        pageTitle="My Site">
+        <root
+            jcr:primaryType="nt:unstructured"
+            sling:resourceType="mysite/components/container"
+            layout="responsiveGrid">
+            <container
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="mysite/components/container">
+                <title
+                    jcr:primaryType="nt:unstructured"
+                    sling:resourceType="mysite/components/title"/>
+                <container
+                    jcr:primaryType="nt:unstructured"
+                    sling:resourceType="mysite/components/container"
+                    layout="responsiveGrid">
+                    <teaser
+                        jcr:description="&lt;p>Don't stop half way, go for the top!&lt;/p>&#xd;&#xa;"
+                        jcr:primaryType="nt:unstructured"
+                        jcr:title="Epic Journey"
+                        sling:resourceType="mysite/components/teaser"
+                        actionsEnabled="false"
+                        descriptionFromPage="false"
+                        textIsRich="true"
+                        titleFromPage="false">
+                        <cq:responsive jcr:primaryType="nt:unstructured">
+                            <default
+                                jcr:primaryType="nt:unstructured"
+                                offset="0"
+                                width="4"/>
+                        </cq:responsive>
+                    </teaser>
+                    <teaser_copy
+                        jcr:description="&lt;p>Don't stop half way, go for the top!&lt;/p>&#xd;&#xa;"
+                        jcr:primaryType="nt:unstructured"
+                        jcr:title="Epic Journey"
+                        sling:resourceType="mysite/components/teaser"
+                        actionsEnabled="false"
+                        descriptionFromPage="false"
+                        textIsRich="true"
+                        titleFromPage="false">
+                        <cq:responsive jcr:primaryType="nt:unstructured">
+                            <default
+                                jcr:primaryType="nt:unstructured"
+                                offset="0"
+                                width="4"/>
+                        </cq:responsive>
+                    </teaser_copy>
+                    <teaser_copy_1579324932
+                        jcr:description="&lt;p>Don't stop half way, go for the top!&lt;/p>&#xd;&#xa;"
+                        jcr:primaryType="nt:unstructured"
+                        jcr:title="Epic Journey"
+                        sling:resourceType="mysite/components/teaser"
+                        actionsEnabled="false"
+                        descriptionFromPage="false"
+                        textIsRich="true"
+                        titleFromPage="false">
+                        <cq:responsive jcr:primaryType="nt:unstructured">
+                            <default
+                                jcr:primaryType="nt:unstructured"
+                                offset="0"
+                                width="4"/>
+                        </cq:responsive>
+                    </teaser_copy_1579324932>
+                    <helloworld
+                        jcr:primaryType="nt:unstructured"
+                        sling:resourceType="mysite/components/helloworld"
+                        text="lalala :)"/>
+                </container>
+            </container>
+        </root>
+    </jcr:content>
+</jcr:root>
diff --git a/pkg/int_test_content/main_content/jcr_root/var/workflow/models/mysite/$.content.xml b/pkg/int_test_content/main_content/jcr_root/var/workflow/models/mysite/$.content.xml
new file mode 100644
index 00000000..491392d5
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/var/workflow/models/mysite/$.content.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"/>
diff --git a/pkg/int_test_content/main_content/jcr_root/var/workflow/models/mysite/asset_processing.xml b/pkg/int_test_content/main_content/jcr_root/var/workflow/models/mysite/asset_processing.xml
new file mode 100644
index 00000000..61864281
--- /dev/null
+++ b/pkg/int_test_content/main_content/jcr_root/var/workflow/models/mysite/asset_processing.xml
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:WorkflowModel"
+    sling:resourceType="cq/workflow/components/model"
+    description="This workflow manages processing of assets."
+    title="Asset Processing">
+    <metaData
+        jcr:primaryType="nt:unstructured"
+        tags="dam,wcm"
+        transient="true"/>
+    <nodes jcr:primaryType="nt:unstructured">
+        <node0
+            jcr:primaryType="cq:WorkflowNode"
+            title="Start"
+            type="START">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node0>
+        <node1
+            jcr:primaryType="cq:WorkflowNode"
+            description="This process checks if the asset-processing workflow has to be executed. The workflow should terminate  eg. the asset got restored right before to make sure that trhe restored content is preserved."
+            title="Continue updating?"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.day.cq.dam.core.process.GateKeeperProcess"
+                PROCESS_ARGS=""
+                PROCESS_AUTO_ADVANCE="true"/>
+        </node1>
+        <node2
+            jcr:primaryType="cq:WorkflowNode"
+            description="A process to extract and import metadata, create references and apply processing profile, if the payload of the step is an asset or part of an asset."
+            title="Metadata Processor"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.day.cq.dam.core.process.MetadataProcessorProcess"
+                PROCESS_AUTO_ADVANCE="true"/>
+        </node2>
+        <node3
+            jcr:primaryType="cq:WorkflowNode"
+            description="Extracts video poster frame"
+            title="FFmpeg thumbnails"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.day.cq.dam.video.FFMpegThumbnailProcess"
+                PROCESS_ARGS="count:4,index:2,[140:100],[48:48],[319:319]"
+                PROCESS_AUTO_ADVANCE="true"/>
+        </node3>
+        <node4
+            jcr:primaryType="cq:WorkflowNode"
+            description="Generate thumbnails for eps files using image magick"
+            title="EPS thumbnails (powered by ImageMagick)"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                COMMANDS="convert -define jpeg:size=319x319 ${filename} -thumbnail 319x319 cq5dam.thumbnail.319.319.png"
+                MIME_TYPES="[image/eps,image/x-eps,application/postscript,application/eps,application/x-eps]"
+                PROCESS="com.day.cq.dam.core.process.CommandLineProcess"
+                PROCESS_AUTO_ADVANCE="true"
+                THUMBNAILS="[48:48,140:100,319:319]"/>
+        </node4>
+        <node5
+            jcr:primaryType="cq:WorkflowNode"
+            description="Create web enabled video formats"
+            title="FFmpeg transcoding"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.day.cq.dam.video.FFMpegTranscodeProcess"
+                PROCESS_ARGS="profile:format_ogg,profile:format_aac,profile:format_flv,profile:format_aac_ie"
+                PROCESS_AUTO_ADVANCE="true"/>
+        </node5>
+        <node6
+            jcr:primaryType="cq:WorkflowNode"
+            description="Rasterize PDF and Adobe Illustrator documents to a preview image rendition"
+            title="Rasterize PDF/AI Image Preview Rendition"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                MAX_HEIGHT="2048"
+                MAX_WIDTH="2048"
+                MIME_TYPES="[application/pdf,application/postscript,application/illustrator]"
+                PROCESS="com.day.cq.dam.core.process.CreatePdfPreviewProcess"
+                PROCESS_AUTO_ADVANCE="true"
+                RESOLUTION="72"/>
+        </node6>
+        <node7
+            jcr:primaryType="cq:WorkflowNode"
+            description="This process will create one or more thumbnails for the asset, create web enabled rendition and update folder thumbnail."
+            title="Process Thumbnails"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                CONFIGS="[140:100:false,48:48:false,319:319:false]"
+                CREATE_FPO_MIMETYPES="[image/pjpeg,image/jpeg,image/jpg,image/gif,image/x-png,image/tiff,image/png,application/x-photoshop,application/photoshop,image/vnd.adobe.photoshop,application/vnd.adobe.photoshop,image/bmp,image/x-tiff]"
+                FPO_QUALITY="10"
+                HEIGHT="1280"
+                MIME_TYPE="image/jpeg"
+                MIMETYPE="image/jpeg"
+                PROCESS="com.day.cq.dam.core.impl.process.ThumbnailProcess"
+                PROCESS_AUTO_ADVANCE="true"
+                QUALITY="90"
+                SKIP="[audio/mpeg,video/(.*)]"
+                WIDTH="1280"/>
+        </node7>
+        <node8
+            jcr:primaryType="cq:WorkflowNode"
+            description="Batch Upload assets to configured remote Scene7 service for Dynamic Media delivery"
+            title="Scene7 Batch Upload"
+            type="EXTERNAL_PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                advanceOnTimeout="true"
+                EXTERNAL_PROCESS="com.day.cq.dam.scene7.impl.process.Scene7BatchUploadProcess"
+                period="30"
+                PROCESS_AUTO_ADVANCE="true"
+                timeout="3600"/>
+        </node8>
+        <node9
+            jcr:primaryType="cq:WorkflowNode"
+            description="Upload assets to configured remote Scene7 service for Dynamic Media delivery."
+            title="Scene7 Direct Binary Upload"
+            type="EXTERNAL_PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                advanceOnTimeout="true"
+                EXTERNAL_PROCESS="com.day.cq.dam.scene7.impl.process.DirectBinaryAccessS7UplProcess"
+                period="30"
+                PROCESS_AUTO_ADVANCE="true"
+                timeout="3600"/>
+        </node9>
+        <node10
+            jcr:primaryType="cq:WorkflowNode"
+            description="This process executes customer workflows on the asset"
+            title="Custom DAM Workflow Runner"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.adobe.cq.dam.processor.nui.impl.workflow.CustomDamWorkflowRunnerProcess"
+                PROCESS_AUTO_ADVANCE="true"/>
+        </node10>
+        <node11
+            jcr:primaryType="cq:WorkflowNode"
+            description="This process will send email based on an email template to current user when a transient workflow is completed"
+            title="Send Transient Workflow Completed Email"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.day.cq.dam.core.impl.process.SendTransientWorkflowCompletedEmailProcess"
+                PROCESS_AUTO_ADVANCE="true"
+                templatePath="dam/workflow/notification/email/transientworkflowcompleted/en.txt"/>
+        </node11>
+        <node12
+            jcr:primaryType="cq:WorkflowNode"
+            title="End"
+            type="END">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node12>
+    </nodes>
+    <transitions jcr:primaryType="nt:unstructured">
+        <node0_x0023_node1
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node0"
+            rule=""
+            to="node1">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node0_x0023_node1>
+        <node1_x0023_node2
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node1"
+            rule=""
+            to="node2">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node1_x0023_node2>
+        <node2_x0023_node3
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node2"
+            rule=""
+            to="node3">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node2_x0023_node3>
+        <node3_x0023_node4
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node3"
+            rule=""
+            to="node4">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node3_x0023_node4>
+        <node4_x0023_node5
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node4"
+            rule=""
+            to="node5">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node4_x0023_node5>
+        <node5_x0023_node6
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node5"
+            rule=""
+            to="node6">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node5_x0023_node6>
+        <node6_x0023_node7
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node6"
+            rule=""
+            to="node7">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node6_x0023_node7>
+        <node7_x0023_node8
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node7"
+            rule=""
+            to="node8">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node7_x0023_node8>
+        <node8_x0023_node9
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node8"
+            rule=""
+            to="node9">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node8_x0023_node9>
+        <node9_x0023_node10
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node9"
+            rule=""
+            to="node10">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node9_x0023_node10>
+        <node10_x0023_node11
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node10"
+            rule=""
+            to="node11">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node10_x0023_node11>
+        <node11_x0023_node12
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node11"
+            to="node12">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node11_x0023_node12>
+    </transitions>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/$.content.xml b/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/$.content.xml
new file mode 100644
index 00000000..cbb48e78
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/$.content.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:ClientLibraryFolder"
+    allowProxy="{Boolean}true"
+    categories="[mysite.site]"
+    cssProcessor="[default:none,min:none]"
+    dependencies="[mysite.dependencies]"
+    jsProcessor="[default:none,min:none]"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css.txt b/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css.txt
new file mode 100644
index 00000000..f852363a
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css.txt
@@ -0,0 +1,3 @@
+#base=css
+
+site.css
\ No newline at end of file
diff --git a/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css/site.css b/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css/site.css
new file mode 100644
index 00000000..3a86ca3b
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/css/site.css
@@ -0,0 +1 @@
+body,html{background:#ececec;color:#202020;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:1pc;line-height:1.5;margin:0}@media(prefers-color-scheme:dark){body,html{background:#131313;color:#dfdfdf}}a{color:#2020e0}@media(prefers-color-scheme:dark){a{color:#dfdf1f}}button,input,optgroup,select,textarea{font:inherit}.cmp-helloworld__item-label{margin-bottom:0}.cmp-helloworld__item-output{margin-top:0}.cmp-navigation__item--level-0:hover>.cmp-navigation__group{background:#ececec}main.container{padding:.5em 1em}footer.experiencefragment{border-top:1px solid #202020;padding:.5em 1em}@media(prefers-color-scheme:dark){footer.experiencefragment{border-color:#dfdfdf}}footer.experiencefragment .cmp-separator__horizontal-rule{border:0;margin:0}header.experiencefragment{border-bottom:1px solid #202020;padding:.5em 1em}@media(prefers-color-scheme:dark){header.experiencefragment{border-bottom-color:#dfdfdf}}header.experiencefragment a{color:#202020;text-decoration:none}@media(prefers-color-scheme:dark){header.experiencefragment a{color:#dfdfdf}}header.experiencefragment a:focus,header.experiencefragment a:hover{color:#2020e0;text-decoration:underline}@media(prefers-color-scheme:dark){header.experiencefragment a:focus,header.experiencefragment a:hover{color:#dfdf1f}}header.experiencefragment .cmp-container{display:grid;grid-template-columns:4fr 1fr 1fr}header.experiencefragment .cmp-navigation__group{list-style:none;margin:0;padding:0}header.experiencefragment .cmp-navigation__item--level-0{display:grid;grid-template-columns:1fr 3fr}header.experiencefragment .cmp-navigation__item--level-0>.cmp-navigation__group{display:grid;grid-template-columns:repeat(3,1fr)}header.experiencefragment .cmp-navigation__item-link{display:block}header.experiencefragment .cmp-navigation__item--active>.cmp-navigation__item-link{font-weight:700}header.experiencefragment .cmp-languagenavigation{position:relative}header.experiencefragment .cmp-languagenavigation:before{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="rgb(32,32,32)" d="M12.1,0.2h-0.1c-3.1,0-6.1,1.3-8.3,3.5C1.4,6,0.2,8.9,0.2,12.1c0,3.1,1.3,6.1,3.5,8.3c2.2,2.2,5.1,3.4,8.3,3.4 c0,0,0,0,0.1,0c6.5,0,11.7-5.3,11.7-11.8C23.7,5.5,18.5,0.3,12.1,0.2z M18.3,11.5c-0.1-1.4-0.3-2.8-0.7-4.1C18.5,7,19.4,6.5,20.3,6 c1.1,1.6,1.9,3.5,2,5.5H18.3z M22.2,12.5c-0.1,2.1-0.8,4-2,5.5c-0.8-0.6-1.7-1-2.6-1.4c0.3-1.1,0.6-2.2,0.7-3.3c0-0.3,0-0.5,0-0.8 H22.2z M19.6,5.2c-0.8,0.5-1.6,0.9-2.4,1.3c-0.6-1.4-1.4-2.7-2.3-3.8c-0.2-0.2-0.4-0.4-0.6-0.6C16.4,2.5,18.3,3.7,19.6,5.2z M12.8,22.2c-0.1,0-0.2,0-0.3,0v-5.7c1.3,0,2.6,0.3,3.8,0.7C15.6,19.1,14.3,20.8,12.8,22.2z M9.9,20.8c-0.9-1.1-1.7-2.3-2.2-3.6 c1.2-0.4,2.5-0.6,3.8-0.7v5.7c-0.1,0-0.2,0-0.3,0C10.7,21.8,10.3,21.3,9.9,20.8z M11.4,1.8c0,0,0.1,0,0.1,0v5.7 c-1.3,0-2.6-0.3-3.8-0.7C8.5,4.9,9.7,3.2,11.4,1.8z M14.1,3.3c0.9,1.1,1.6,2.3,2.2,3.5c-1.2,0.4-2.5,0.6-3.8,0.7V1.8 c0.1,0,0.1,0,0.2,0C13.2,2.2,13.7,2.7,14.1,3.3z M16.7,7.7c0.4,1.2,0.6,2.5,0.7,3.8h-4.8V8.4C13.9,8.4,15.3,8.2,16.7,7.7z M11.5,8.4 v3.1H6.7C6.7,10.2,7,9,7.4,7.7C8.7,8.2,10.1,8.4,11.5,8.4z M11.5,12.5v3.1c-1.4,0-2.8,0.3-4.2,0.7c-0.4-1.2-0.6-2.5-0.7-3.8H11.5z M12.5,15.6v-3.1h4.8c0,0.2,0,0.5,0,0.7c-0.1,1.1-0.3,2.1-0.6,3.1C15.3,15.8,13.9,15.6,12.5,15.6z M9.6,2C8.4,3.3,7.4,4.8,6.8,6.5 C5.9,6.1,5.1,5.7,4.4,5.2c0.1-0.1,0.2-0.3,0.4-0.4C6.1,3.4,7.8,2.5,9.6,2z M5.7,11.5H1.8c0.1-2,0.8-3.9,1.9-5.5 C4.6,6.5,5.5,7,6.4,7.4C6,8.7,5.7,10.1,5.7,11.5z M6.4,16.6C5.5,17,4.6,17.5,3.7,18c-1.2-1.6-1.9-3.5-1.9-5.5h3.9 C5.7,13.9,5.9,15.3,6.4,16.6z M4.4,18.8c0.8-0.5,1.5-0.9,2.4-1.3c0.6,1.4,1.4,2.7,2.4,3.9c0.1,0.2,0.3,0.3,0.4,0.5 c-1.8-0.4-3.4-1.3-4.7-2.7C4.6,19.1,4.5,19,4.4,18.8z M14.5,21.9c1.2-1.3,2.1-2.8,2.8-4.4c0.8,0.3,1.6,0.8,2.4,1.2 C18.3,20.3,16.5,21.4,14.5,21.9z"/></svg>');background-repeat:no-repeat;content:" ";display:block;height:1.5em}@media(prefers-color-scheme:dark){header.experiencefragment .cmp-languagenavigation:before{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="rgb(223,223,223)" d="M12.1,0.2h-0.1c-3.1,0-6.1,1.3-8.3,3.5C1.4,6,0.2,8.9,0.2,12.1c0,3.1,1.3,6.1,3.5,8.3c2.2,2.2,5.1,3.4,8.3,3.4 c0,0,0,0,0.1,0c6.5,0,11.7-5.3,11.7-11.8C23.7,5.5,18.5,0.3,12.1,0.2z M18.3,11.5c-0.1-1.4-0.3-2.8-0.7-4.1C18.5,7,19.4,6.5,20.3,6 c1.1,1.6,1.9,3.5,2,5.5H18.3z M22.2,12.5c-0.1,2.1-0.8,4-2,5.5c-0.8-0.6-1.7-1-2.6-1.4c0.3-1.1,0.6-2.2,0.7-3.3c0-0.3,0-0.5,0-0.8 H22.2z M19.6,5.2c-0.8,0.5-1.6,0.9-2.4,1.3c-0.6-1.4-1.4-2.7-2.3-3.8c-0.2-0.2-0.4-0.4-0.6-0.6C16.4,2.5,18.3,3.7,19.6,5.2z M12.8,22.2c-0.1,0-0.2,0-0.3,0v-5.7c1.3,0,2.6,0.3,3.8,0.7C15.6,19.1,14.3,20.8,12.8,22.2z M9.9,20.8c-0.9-1.1-1.7-2.3-2.2-3.6 c1.2-0.4,2.5-0.6,3.8-0.7v5.7c-0.1,0-0.2,0-0.3,0C10.7,21.8,10.3,21.3,9.9,20.8z M11.4,1.8c0,0,0.1,0,0.1,0v5.7 c-1.3,0-2.6-0.3-3.8-0.7C8.5,4.9,9.7,3.2,11.4,1.8z M14.1,3.3c0.9,1.1,1.6,2.3,2.2,3.5c-1.2,0.4-2.5,0.6-3.8,0.7V1.8 c0.1,0,0.1,0,0.2,0C13.2,2.2,13.7,2.7,14.1,3.3z M16.7,7.7c0.4,1.2,0.6,2.5,0.7,3.8h-4.8V8.4C13.9,8.4,15.3,8.2,16.7,7.7z M11.5,8.4 v3.1H6.7C6.7,10.2,7,9,7.4,7.7C8.7,8.2,10.1,8.4,11.5,8.4z M11.5,12.5v3.1c-1.4,0-2.8,0.3-4.2,0.7c-0.4-1.2-0.6-2.5-0.7-3.8H11.5z M12.5,15.6v-3.1h4.8c0,0.2,0,0.5,0,0.7c-0.1,1.1-0.3,2.1-0.6,3.1C15.3,15.8,13.9,15.6,12.5,15.6z M9.6,2C8.4,3.3,7.4,4.8,6.8,6.5 C5.9,6.1,5.1,5.7,4.4,5.2c0.1-0.1,0.2-0.3,0.4-0.4C6.1,3.4,7.8,2.5,9.6,2z M5.7,11.5H1.8c0.1-2,0.8-3.9,1.9-5.5 C4.6,6.5,5.5,7,6.4,7.4C6,8.7,5.7,10.1,5.7,11.5z M6.4,16.6C5.5,17,4.6,17.5,3.7,18c-1.2-1.6-1.9-3.5-1.9-5.5h3.9 C5.7,13.9,5.9,15.3,6.4,16.6z M4.4,18.8c0.8-0.5,1.5-0.9,2.4-1.3c0.6,1.4,1.4,2.7,2.4,3.9c0.1,0.2,0.3,0.3,0.4,0.5 c-1.8-0.4-3.4-1.3-4.7-2.7C4.6,19.1,4.5,19,4.4,18.8z M14.5,21.9c1.2-1.3,2.1-2.8,2.8-4.4c0.8,0.3,1.6,0.8,2.4,1.2 C18.3,20.3,16.5,21.4,14.5,21.9z"/></svg>')}}header.experiencefragment .cmp-languagenavigation>.cmp-languagenavigation__group{background:#ececec;border:1px solid #202020;border-top:0;padding:0 8px;position:absolute;top:34px;-webkit-transition-delay:.5s;transition-delay:.5s;visibility:hidden;width:20em}@media(prefers-color-scheme:dark){header.experiencefragment .cmp-languagenavigation>.cmp-languagenavigation__group{background:#131313;border-color:#dfdfdf}}header.experiencefragment .cmp-languagenavigation:hover>.cmp-languagenavigation__group{-webkit-transition-delay:0s;transition-delay:0s;visibility:visible}header.experiencefragment .cmp-languagenavigation__group{list-style:none;margin:0;padding:0}header.experiencefragment .cmp-languagenavigation__item-title{font-size:x-small;text-transform:uppercase}header.experiencefragment .cmp-languagenavigation__item--level-0{margin-bottom:.5em}header.experiencefragment .cmp-languagenavigation__item--level-1{display:inline}header.experiencefragment .cmp-languagenavigation__item--level-1:not(:first-child):before{content:" | "}header.experiencefragment .cmp-languagenavigation__item--active>.cmp-languagenavigation__item-link{font-weight:700}header.experiencefragment .cmp-search__field{display:-webkit-box;display:-ms-flexbox;display:flex;margin:-3px 0}header.experiencefragment .cmp-search__input{height:26px}
\ No newline at end of file
diff --git a/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js.txt b/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js.txt
new file mode 100644
index 00000000..ffaf1afa
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js.txt
@@ -0,0 +1,3 @@
+#base=js
+
+site.js
\ No newline at end of file
diff --git a/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js/site.js b/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js/site.js
new file mode 100644
index 00000000..1ca7fa6c
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/apps/mysite/clientlibs/clientlib-site/js/site.js
@@ -0,0 +1 @@
+!function(){var e={356:function(){!function(){"use strict";var e='[data-cmp-is="helloworld"]',t='[data-cmp-hook-helloworld="property"]',n='[data-cmp-hook-helloworld="model"]';function o(e){e&&e.element&&function(e){e.element.removeAttribute("data-cmp-is");var o=e.element.querySelectorAll(t);o=1==o.length?o[0].textContent:null;var r=e.element.querySelectorAll(n);r=1==r.length?r[0].textContent:null,console&&console.log&&console.log("HelloWorld component JavaScript example","\nText property:\n",o,"\nModel message:\n",r)}(e)}function r(){for(var t=document.querySelectorAll(e),n=0;n<t.length;n++)new o({element:t[n]});var r=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,l=document.querySelector("body");new r((function(t){t.forEach((function(t){var n=[].slice.call(t.addedNodes);n.length>0&&n.forEach((function(t){t.querySelectorAll&&[].slice.call(t.querySelectorAll(e)).forEach((function(e){new o({element:e})}))}))}))})).observe(l,{subtree:!0,childList:!0,characterData:!0})}"loading"!==document.readyState?r():document.addEventListener("DOMContentLoaded",r)}()}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var l=t[o]={exports:{}};return e[o](l,l.exports,n),l.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){"use strict";n(356)}()}();
\ No newline at end of file
diff --git a/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$.content.xml b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$.content.xml
new file mode 100644
index 00000000..64af2940
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$.content.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Component"
+    jcr:title="Hello World Component"
+    componentGroup="My Site - Content"
+    flag="true"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_dialog.xml b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_dialog.xml
new file mode 100644
index 00000000..3d816e82
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_dialog.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="nt:unstructured"
+    jcr:title="Properties"
+    sling:resourceType="cq/gui/components/authoring/dialog">
+    <content
+        jcr:primaryType="nt:unstructured"
+        sling:resourceType="granite/ui/components/coral/foundation/fixedcolumns">
+        <items jcr:primaryType="nt:unstructured">
+            <column
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="granite/ui/components/coral/foundation/container">
+                <items jcr:primaryType="nt:unstructured">
+                    <text
+                        jcr:primaryType="nt:unstructured"
+                        sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
+                        fieldDescription="Text"
+                        fieldLabel="Text"
+                        name="./text"/>
+                </items>
+            </column>
+        </items>
+    </content>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_editConfig.xml b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_editConfig.xml
new file mode 100644
index 00000000..e6cda673
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_editConfig.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:EditConfig">
+    <cq:listeners
+        jcr:primaryType="cq:EditListenersConfig"
+        aftercreate="REFRESH_PARENT"
+        afterdelete="REFRESH_PARENT"
+        afteredit="REFRESH_SELF"
+        afterinsert="REFRESH_PARENT"
+        aftermove="REFRESH_PARENT"
+        afterremove="REFRESH_PARENT"/>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_template.xml b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_template.xml
new file mode 100644
index 00000000..d42a4753
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_template.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="nt:unstructured"
+    text="Hello World"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_template/$.content.xml b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_template/$.content.xml
new file mode 100644
index 00000000..d42a4753
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/$_cq_template/$.content.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="nt:unstructured"
+    text="Hello World"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/helloworld.html b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/helloworld.html
new file mode 100644
index 00000000..c036fb3e
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/apps/mysite/components/helloworld/helloworld.html
@@ -0,0 +1,11 @@
+<div class="cmp-helloworld" data-cmp-is="helloworld">
+    <h2 class="cmp-helloworld-title">Hello World Component</h2>
+    <div class="cmp-helloworld-item" data-sly-test="${properties.text}">
+        <div class="cmp-helloworld-item-label">Text property:</div>
+        <div class="cmp-helloworld-item-output" data-cmp-hook-helloworld="property">${properties.text}</div>
+    </div>
+    <div class="cmp-helloworld-item" data-sly-use.model="com.mysite.core.models.HelloWorldModel" data-sly-test="${model.message}">
+        <div class="cmp-helloworld-item-label">Model message:</div>
+        <div class="cmp-helloworld-item-output"data-cmp-hook-helloworld="model">${model.message}</div>
+    </div>
+</div>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/$.content.xml
new file mode 100644
index 00000000..c079c59d
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/$.content.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"
+    jcr:title="My Site"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/$_sling_configs/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/$_sling_configs/$.content.xml
new file mode 100644
index 00000000..a9759f5f
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/$_sling_configs/$.content.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="nt:unstructured">
+    <com.mysite.datalayer.DataLayerConfig
+        jcr:primaryType="nt:unstructured"
+        enabled="{Boolean}true"
+        flag="true"/>
+    <com.mysite.pdfviewer.PdfViewerCaConfig/>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/$_sling_configs/com.mysite.pdfviewer.PdfViewerCaConfig/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/$_sling_configs/com.mysite.pdfviewer.PdfViewerCaConfig/$.content.xml
new file mode 100644
index 00000000..725d21ea
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/$_sling_configs/com.mysite.pdfviewer.PdfViewerCaConfig/$.content.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        jcr:primaryType="cq:PageContent"
+        clientId="28b07c6be4d544f188dc2f36e33b196b"
+        flag="true"
+        reportSuiteId=""/>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/$.content.xml
new file mode 100644
index 00000000..491392d5
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/$.content.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/$.content.xml
new file mode 100644
index 00000000..c55e733a
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/$.content.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Page">
+    <policies/>
+    <template-types/>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/policies/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/policies/$.content.xml
new file mode 100644
index 00000000..ea668802
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/policies/$.content.xml
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:rep="internal"
+    jcr:mixinTypes="[rep:AccessControllable]"
+    jcr:primaryType="cq:Page">
+    <rep:policy/>
+    <mysite jcr:primaryType="nt:unstructured">
+        <components jcr:primaryType="nt:unstructured">
+            <image jcr:primaryType="nt:unstructured">
+                <policy_651483963895698
+                    jcr:description="- Enable lazy loading for faster page loading.&#xd;&#xa;- Define allowed image widths for automatic loading of the image in the most optimal resolution, given the size at which each image is displayed on the page, and the visitor's pixel density.&#xd;&#xa;- Disallow direct asset upload, to force authors to first upload the images to Assets."
+                    jcr:primaryType="nt:unstructured"
+                    jcr:title="Content Image"
+                    sling:resourceType="wcm/core/components/policy/policy"
+                    allowedRenditionWidths="[320,480,600,800,1024,1200,1600]"
+                    allowUpload="false"
+                    altValueFromDAM="true"
+                    disableLazyLoading="false"
+                    displayPopupTitle="true"
+                    enableAssetDelivery="true"
+                    isDecorative="false"
+                    jpegQuality="{Long}85"
+                    titleValueFromDAM="true"
+                    uuidDisabled="true">
+                    <jcr:content jcr:primaryType="nt:unstructured"/>
+                    <plugins jcr:primaryType="nt:unstructured">
+                        <crop
+                            jcr:primaryType="nt:unstructured"
+                            features="*">
+                            <aspectRatios jcr:primaryType="nt:unstructured">
+                                <item0
+                                    jcr:primaryType="nt:unstructured"
+                                    name="Wide Landscape"
+                                    ratio="0.6180"/>
+                                <item1
+                                    jcr:primaryType="nt:unstructured"
+                                    name="Landscape"
+                                    ratio="0.8284"/>
+                                <item2
+                                    jcr:primaryType="nt:unstructured"
+                                    name="Square"
+                                    ratio="1"/>
+                                <item3
+                                    jcr:primaryType="nt:unstructured"
+                                    name="Portrait"
+                                    ratio="1.6180"/>
+                            </aspectRatios>
+                        </crop>
+                        <rotate
+                            jcr:primaryType="nt:unstructured"
+                            features="right"/>
+                        <flip
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                    </plugins>
+                </policy_651483963895698>
+            </image>
+            <text jcr:primaryType="nt:unstructured">
+                <policy_641562756958017
+                    jcr:primaryType="nt:unstructured"
+                    jcr:title="Content Text"
+                    sling:resourceType="wcm/core/components/policy/policy">
+                    <jcr:content jcr:primaryType="nt:unstructured"/>
+                    <rtePlugins jcr:primaryType="nt:unstructured">
+                        <paraformat
+                            jcr:primaryType="nt:unstructured"
+                            features="*">
+                            <formats
+                                jcr:primaryType="nt:unstructured"
+                                override="true">
+                                <item0
+                                    jcr:primaryType="nt:unstructured"
+                                    description="Paragraph"
+                                    tag="p"/>
+                                <item1
+                                    jcr:primaryType="nt:unstructured"
+                                    description="Quote"
+                                    tag="blockquote"/>
+                                <item2
+                                    jcr:primaryType="nt:unstructured"
+                                    description="Preformatted"
+                                    tag="pre"/>
+                            </formats>
+                        </paraformat>
+                        <misctools
+                            jcr:primaryType="nt:unstructured"
+                            features="-">
+                            <specialCharsConfig jcr:primaryType="nt:unstructured">
+                                <chars
+                                    jcr:primaryType="nt:unstructured"
+                                    override="true">
+                                    <item0
+                                        jcr:primaryType="nt:unstructured"
+                                        entity="&amp;copy;"
+                                        name="copyright"/>
+                                    <item1
+                                        jcr:primaryType="nt:unstructured"
+                                        entity="&amp;euro;"
+                                        name="euro"/>
+                                    <item2
+                                        jcr:primaryType="nt:unstructured"
+                                        entity="&amp;reg;"
+                                        name="registered"/>
+                                    <item3
+                                        jcr:primaryType="nt:unstructured"
+                                        entity="&amp;trade;"
+                                        name="trademark"/>
+                                </chars>
+                            </specialCharsConfig>
+                        </misctools>
+                        <edit
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <findreplace
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <undo
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <spellcheck
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <image
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <table
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <lists
+                            jcr:primaryType="nt:unstructured"
+                            features="*"/>
+                        <justify
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                        <format
+                            jcr:primaryType="nt:unstructured"
+                            features="bold,italic"/>
+                        <links
+                            jcr:primaryType="nt:unstructured"
+                            features="modifylink,unlink"/>
+                        <subsuperscript
+                            jcr:primaryType="nt:unstructured"
+                            features="-"/>
+                    </rtePlugins>
+                </policy_641562756958017>
+            </text>
+            <title jcr:primaryType="nt:unstructured">
+                <policy_641475696923109
+                    jcr:description="Allows only H1 and disallows links for the main page title."
+                    jcr:primaryType="nt:unstructured"
+                    jcr:title="Page Title"
+                    sling:resourceType="wcm/core/components/policy/policy"
+                    allowedTypes="h1"
+                    linkDisabled="true"
+                    type="h1">
+                    <jcr:content jcr:primaryType="nt:unstructured"/>
+                </policy_641475696923109>
+                <policy_641528232375303
+                    jcr:description="Allows all sizes, but not H1, which is reserved for the main page title."
+                    jcr:primaryType="nt:unstructured"
+                    jcr:title="Content Title"
+                    sling:resourceType="wcm/core/components/policy/policy"
+                    allowedTypes="[h2,h3,h4,h5,h6]"
+                    linkDisabled="false"
+                    type="h2">
+                    <jcr:content jcr:primaryType="nt:unstructured"/>
+                </policy_641528232375303>
+            </title>
+            <page jcr:primaryType="nt:unstructured">
+                <policy
+                    jcr:description="Includes the required client libraries."
+                    jcr:primaryType="nt:unstructured"
+                    jcr:title="Generic Page"
+                    sling:resourceType="wcm/core/components/policy/policy"
+                    clientlibs="[mysite.dependencies,mysite.site]"
+                    clientlibsJsHead="mysite.dependencies">
+                    <jcr:content jcr:primaryType="nt:unstructured"/>
+                </policy>
+            </page>
+        </components>
+    </mysite>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/policies/$_rep_policy.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/policies/$_rep_policy.xml
new file mode 100644
index 00000000..cfe50fa7
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/policies/$_rep_policy.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:crx="http://www.day.com/crx/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
+    jcr:primaryType="rep:ACL">
+    <allow
+        jcr:primaryType="rep:GrantACE"
+        rep:principalName="everyone"
+        rep:privileges="{Name}[jcr:read]"/>
+    <allow1
+        jcr:primaryType="rep:GrantACE"
+        rep:principalName="content-authors"
+        rep:privileges="{Name}[crx:replicate]"/>
+    <allow2
+        jcr:primaryType="rep:GrantACE"
+        rep:principalName="template-authors"
+        rep:privileges="{Name}[crx:replicate,rep:write,jcr:lockManagement]"/>
+    <allow3
+        jcr:primaryType="rep:GrantACE"
+        rep:principalName="version-manager-service"
+        rep:privileges="{Name}[jcr:versionManagement,rep:write]"/>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/$.content.xml
new file mode 100644
index 00000000..724da713
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/$.content.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Page">
+    <page/>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/$.content.xml
new file mode 100644
index 00000000..9c3ef9c0
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/$.content.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Template">
+    <jcr:content
+        jcr:description="Generic template for empty pages of My Site"
+        jcr:primaryType="cq:PageContent"
+        jcr:title="Page"
+        flag="true"/>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/initial/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/initial/$.content.xml
new file mode 100644
index 00000000..20a1550d
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/initial/$.content.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:template="/conf/mysite/settings/wcm/templates/page-content"
+        jcr:primaryType="cq:PageContent"
+        sling:resourceType="mysite/components/page">
+        <root
+            jcr:primaryType="nt:unstructured"
+            sling:resourceType="mysite/components/container"
+            layout="responsiveGrid">
+            <container
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="mysite/components/container"
+                layout="responsiveGrid"/>
+        </root>
+    </jcr:content>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/policies/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/policies/$.content.xml
new file mode 100644
index 00000000..20096f30
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/policies/$.content.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:policy="mysite/components/page/policy"
+        jcr:primaryType="nt:unstructured"
+        sling:resourceType="wcm/core/components/policies/mappings">
+        <root
+            cq:policy="mysite/components/container/policy_1574694950110"
+            jcr:primaryType="nt:unstructured"
+            sling:resourceType="wcm/core/components/policies/mapping">
+            <container
+                cq:policy="mysite/components/container/policy_1574695586800"
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="wcm/core/components/policies/mapping"/>
+        </root>
+    </jcr:content>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/structure/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/structure/$.content.xml
new file mode 100644
index 00000000..911a61a3
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/settings/wcm/template-types/page/structure/$.content.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:deviceGroups="[mobile/groups/responsive]"
+        cq:template="/conf/mysite/settings/wcm/templates/page-content"
+        jcr:primaryType="cq:PageContent"
+        sling:resourceType="mysite/components/page">
+        <root
+            jcr:primaryType="nt:unstructured"
+            sling:resourceType="mysite/components/container"
+            layout="responsiveGrid">
+            <experiencefragment-header
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="mysite/components/experiencefragment"
+                fragmentVariationPath="/content/experience-fragments/mysite/us/en/site/header/master"/>
+            <container
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="mysite/components/container"
+                editable="{Boolean}true"
+                layout="responsiveGrid"/>
+        </root>
+        <cq:responsive jcr:primaryType="nt:unstructured">
+            <breakpoints jcr:primaryType="nt:unstructured">
+                <phone
+                    jcr:primaryType="nt:unstructured"
+                    title="Smaller Screen"
+                    width="{Long}768"/>
+                <tablet
+                    jcr:primaryType="nt:unstructured"
+                    title="Tablet"
+                    width="{Long}1200"/>
+            </breakpoints>
+        </cq:responsive>
+    </jcr:content>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/$.content.xml
new file mode 100644
index 00000000..ee2e45c7
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/$.content.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"
+    jcr:title="workflow settings"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/$.content.xml
new file mode 100644
index 00000000..32703c6c
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/$.content.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"
+    jcr:title="workflow launcher"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/config/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/config/$.content.xml
new file mode 100644
index 00000000..5b1063ab
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/config/$.content.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"
+    jcr:title="workflow launcher configurations"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/config/asset_processing/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/config/asset_processing/$.content.xml
new file mode 100644
index 00000000..746cf1ea
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/launcher/config/asset_processing/$.content.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:WorkflowLauncher"
+    description="Asset Processing"
+    disabledFeatures="[com.adobe.dam.asset.nui.feature.flag]"
+    enabled="{Boolean}true"
+    eventType="{Long}1"
+    excludeList="event-user-data:changedByPageManagerCopy"
+    flag="true"
+    glob="/content/dam(/((?!/subassets).)*/)renditions/original"
+    nodetype="nt:file"
+    runModes="author"
+    workflow="/var/workflow/models/mysite/asset_processing"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/models/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/models/$.content.xml
new file mode 100644
index 00000000..9f576d29
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/models/$.content.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"
+    jcr:title="workflow model pages"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/models/archive_page/$.content.xml b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/models/archive_page/$.content.xml
new file mode 100644
index 00000000..41aa947b
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/conf/mysite/workflow/models/archive_page/$.content.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:designPath="/libs/settings/wcm/designs/default"
+        cq:template="/libs/cq/workflow/templates/model"
+        jcr:description="This custom workflow deactivates a page and moves it to archive.&#xd;&#xa;Requires Publishers approval"
+        jcr:primaryType="cq:PageContent"
+        jcr:title="Archive Page"
+        sling:resourceType="cq/workflow/components/pages/model"
+        lastSynced="{Date}2024-05-01T16:10:24.561Z">
+        <flow
+            jcr:primaryType="nt:unstructured"
+            sling:resourceType="foundation/components/parsys">
+            <set_variable_preview
+                jcr:description="Set value of variables"
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Set Agent Id as Preview"
+                sling:resourceType="cq/workflow/components/model/set_variable"
+                defaultValue="preview">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="com.adobe.granite.workflow.core.process.SetVariableProcess"
+                    PROCESS_AUTO_ADVANCE="true"
+                    variableMappings="\{&quot;variableName&quot;:&quot;agentId&quot;,&quot;mappingType&quot;:&quot;LITERAL&quot;,&quot;mappingValue&quot;:&quot;preview&quot;}"/>
+            </set_variable_preview>
+            <process_deactivate_page
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Deactivate Page/Asset from Preview"
+                sling:resourceType="cq/workflow/components/model/process">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="com.day.cq.wcm.workflow.process.DeactivatePageProcess"
+                    PROCESS_AUTO_ADVANCE="true"/>
+            </process_deactivate_page>
+            <set_variable_publish
+                jcr:description="Set Agent Id as Publish"
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Set Agent Id as Publish"
+                sling:resourceType="cq/workflow/components/model/set_variable"
+                defaultValue="publish">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="com.adobe.granite.workflow.core.process.SetVariableProcess"
+                    PROCESS_AUTO_ADVANCE="true"
+                    variableMappings="\{&quot;variableName&quot;:&quot;agentId&quot;,&quot;mappingType&quot;:&quot;LITERAL&quot;,&quot;mappingValue&quot;:&quot;publish&quot;}"/>
+            </set_variable_publish>
+            <participant
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Approve Archiving"
+                sling:resourceType="cq/workflow/components/model/dynamic_participant">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    DO_NOTIFY="true"
+                    DYNAMIC_PARTICIPANT="com.mysite.core.workflows.choosers.ArchivePageApproverDynamicParticipant"/>
+            </participant>
+            <or
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="cq/workflow/components/model/or"
+                branches="2"
+                orSplit="true">
+                <_x0031_
+                    jcr:primaryType="nt:unstructured"
+                    sling:resourceType="cq/flow/components/parsys">
+                    <noopprocess
+                        jcr:description="A no operation process"
+                        jcr:primaryType="nt:unstructured"
+                        jcr:title="Proceed With The Archiving"
+                        sling:resourceType="cq/workflow/components/workflow/noopprocess">
+                        <metaData
+                            jcr:primaryType="nt:unstructured"
+                            PROCESS="/libs/workflow/scripts/noop.ecma"
+                            PROCESS_AUTO_ADVANCE="true"/>
+                    </noopprocess>
+                </_x0031_>
+                <_x0032_
+                    jcr:primaryType="nt:unstructured"
+                    sling:resourceType="cq/flow/components/parsys">
+                    <goto
+                        jcr:description="Goto Step"
+                        jcr:primaryType="nt:unstructured"
+                        jcr:title="Reject The Archiving"
+                        sling:resourceType="cq/workflow/components/model/goto">
+                        <metaData
+                            jcr:primaryType="nt:unstructured"
+                            PROCESS="com.adobe.granite.workflow.core.process.GotoProcess"
+                            PROCESS_AUTO_ADVANCE="false"
+                            script="function check() {&#xd;&#xa;  return true;&#xd;&#xa;}"
+                            TARGET_NODE_PATH="/conf/global/settings/workflow/models/mysite/archive_page/jcr:content/flow/noopprocess"/>
+                    </goto>
+                </_x0032_>
+            </or>
+            <process
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Deactivate Page"
+                sling:resourceType="cq/workflow/components/model/process">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="com.day.cq.wcm.workflow.process.DeactivatePageProcess"
+                    PROCESS_AUTO_ADVANCE="true"/>
+            </process>
+            <process_557562317
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Move Page To Archive"
+                sling:resourceType="cq/workflow/components/model/process">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="com.mysite.core.workflows.processes.MovePageToArchiveProcess"
+                    PROCESS_AUTO_ADVANCE="true"/>
+            </process_557562317>
+            <noopprocess
+                jcr:description="A no operation process"
+                jcr:primaryType="nt:unstructured"
+                jcr:title="Workflow End"
+                sling:resourceType="cq/workflow/components/workflow/noopprocess">
+                <metaData
+                    jcr:primaryType="nt:unstructured"
+                    PROCESS="/libs/workflow/scripts/noop.ecma"
+                    PROCESS_AUTO_ADVANCE="true"/>
+            </noopprocess>
+        </flow>
+        <variables jcr:primaryType="nt:unstructured">
+            <agentId
+                jcr:primaryType="nt:unstructured"
+                additionalProperties="\{}"
+                defaultValue="publish"
+                name="agentId"
+                type="java.lang.String"/>
+        </variables>
+    </jcr:content>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/content/mysite/$.content.xml b/pkg/int_test_content/new_content/jcr_root/content/mysite/$.content.xml
new file mode 100644
index 00000000..b170bfe6
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/content/mysite/$.content.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:allowedTemplates="[/conf/mysite/settings/wcm/templates/(?!xf-).*]"
+        cq:conf="/conf/mysite"
+        cq:redirectTarget="/content/mysite/us/en"
+        cq:template="/conf/mysite/settings/wcm/templates/page-content"
+        jcr:primaryType="cq:PageContent"
+        jcr:title="My Site"
+        sling:configRef="/conf/mysite"
+        sling:redirect="{Boolean}true"
+        sling:redirectStatus="{Long}302"
+        sling:resourceType="mysite/components/page"
+        flag="true"/>
+    <us/>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/content/mysite/us/$.content.xml b/pkg/int_test_content/new_content/jcr_root/content/mysite/us/$.content.xml
new file mode 100644
index 00000000..87f23cd4
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/content/mysite/us/$.content.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:redirectTarget="/content/mysite/us/en"
+        cq:template="/conf/mysite/settings/wcm/templates/page-content"
+        jcr:primaryType="cq:PageContent"
+        jcr:title="us"
+        sling:resourceType="mysite/components/page"
+        flag="true"/>
+    <en/>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/content/mysite/us/en/$.content.xml b/pkg/int_test_content/new_content/jcr_root/content/mysite/us/en/$.content.xml
new file mode 100644
index 00000000..5d91f0fc
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/content/mysite/us/en/$.content.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:Page">
+    <jcr:content
+        cq:contextHubPath="/etc/cloudsettings/default/contexthub"
+        cq:contextHubSegmentsPath="/etc/segmentation/contexthub"
+        cq:template="/conf/mysite/settings/wcm/templates/page-content"
+        jcr:primaryType="cq:PageContent"
+        jcr:title="en"
+        sling:resourceType="mysite/components/page"
+        flag="true"
+        pageTitle="My Site">
+        <root
+            jcr:primaryType="nt:unstructured"
+            sling:resourceType="mysite/components/container"
+            layout="responsiveGrid">
+            <container
+                jcr:primaryType="nt:unstructured"
+                sling:resourceType="mysite/components/container">
+                <title
+                    jcr:primaryType="nt:unstructured"
+                    sling:resourceType="mysite/components/title"/>
+                <container
+                    jcr:primaryType="nt:unstructured"
+                    sling:resourceType="mysite/components/container"
+                    layout="responsiveGrid">
+                    <teaser
+                        jcr:description="&lt;p>Don't stop half way, go for the top!&lt;/p>&#xd;&#xa;"
+                        jcr:primaryType="nt:unstructured"
+                        jcr:title="Epic Journey"
+                        sling:resourceType="mysite/components/teaser"
+                        actionsEnabled="false"
+                        descriptionFromPage="false"
+                        textIsRich="true"
+                        titleFromPage="false">
+                        <cq:responsive jcr:primaryType="nt:unstructured">
+                            <default
+                                jcr:primaryType="nt:unstructured"
+                                offset="0"
+                                width="4"/>
+                        </cq:responsive>
+                    </teaser>
+                    <teaser_copy
+                        jcr:description="&lt;p>Don't stop half way, go for the top!&lt;/p>&#xd;&#xa;"
+                        jcr:primaryType="nt:unstructured"
+                        jcr:title="Epic Journey"
+                        sling:resourceType="mysite/components/teaser"
+                        actionsEnabled="false"
+                        descriptionFromPage="false"
+                        textIsRich="true"
+                        titleFromPage="false">
+                        <cq:responsive jcr:primaryType="nt:unstructured">
+                            <default
+                                jcr:primaryType="nt:unstructured"
+                                offset="0"
+                                width="4"/>
+                        </cq:responsive>
+                    </teaser_copy>
+                    <teaser_copy_1579324932
+                        jcr:description="&lt;p>Don't stop half way, go for the top!&lt;/p>&#xd;&#xa;"
+                        jcr:primaryType="nt:unstructured"
+                        jcr:title="Epic Journey"
+                        sling:resourceType="mysite/components/teaser"
+                        actionsEnabled="false"
+                        descriptionFromPage="false"
+                        textIsRich="true"
+                        titleFromPage="false">
+                        <cq:responsive jcr:primaryType="nt:unstructured">
+                            <default
+                                jcr:primaryType="nt:unstructured"
+                                offset="0"
+                                width="4"/>
+                        </cq:responsive>
+                    </teaser_copy_1579324932>
+                    <helloworld
+                        jcr:primaryType="nt:unstructured"
+                        sling:resourceType="mysite/components/helloworld"
+                        text="lalala :)"/>
+                </container>
+            </container>
+        </root>
+    </jcr:content>
+</jcr:root>
diff --git a/pkg/int_test_content/new_content/jcr_root/var/workflow/models/mysite/$.content.xml b/pkg/int_test_content/new_content/jcr_root/var/workflow/models/mysite/$.content.xml
new file mode 100644
index 00000000..491392d5
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/var/workflow/models/mysite/$.content.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
+    jcr:primaryType="sling:Folder"/>
diff --git a/pkg/int_test_content/new_content/jcr_root/var/workflow/models/mysite/asset_processing.xml b/pkg/int_test_content/new_content/jcr_root/var/workflow/models/mysite/asset_processing.xml
new file mode 100644
index 00000000..27f086bb
--- /dev/null
+++ b/pkg/int_test_content/new_content/jcr_root/var/workflow/models/mysite/asset_processing.xml
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+    jcr:primaryType="cq:WorkflowModel"
+    sling:resourceType="cq/workflow/components/model"
+    description="This workflow manages processing of assets."
+    title="Asset Processing.">
+    <metaData
+        jcr:primaryType="nt:unstructured"
+        tags="dam,wcm"
+        transient="true"/>
+    <nodes jcr:primaryType="nt:unstructured">
+        <node0
+            jcr:primaryType="cq:WorkflowNode"
+            title="Start"
+            type="START">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node0>
+        <node1
+            jcr:primaryType="cq:WorkflowNode"
+            description="This process checks if the asset-processing workflow has to be executed. The workflow should terminate  eg. the asset got restored right before to make sure that trhe restored content is preserved."
+            title="Continue updating?"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.day.cq.dam.core.process.GateKeeperProcess"
+                PROCESS_ARGS=""
+                PROCESS_AUTO_ADVANCE="true"/>
+        </node1>
+        <node2
+            jcr:primaryType="cq:WorkflowNode"
+            description="A process to extract and import metadata, create references and apply processing profile, if the payload of the step is an asset or part of an asset."
+            title="Metadata Processor"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.day.cq.dam.core.process.MetadataProcessorProcess"
+                PROCESS_AUTO_ADVANCE="true"/>
+        </node2>
+        <node3
+            jcr:primaryType="cq:WorkflowNode"
+            description="Extracts video poster frame"
+            title="FFmpeg thumbnails"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.day.cq.dam.video.FFMpegThumbnailProcess"
+                PROCESS_ARGS="count:4,index:2,[140:100],[48:48],[319:319]"
+                PROCESS_AUTO_ADVANCE="true"/>
+        </node3>
+        <node4
+            jcr:primaryType="cq:WorkflowNode"
+            description="Generate thumbnails for eps files using image magick"
+            title="EPS thumbnails (powered by ImageMagick)"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                COMMANDS="convert -define jpeg:size=319x319 ${filename} -thumbnail 319x319 cq5dam.thumbnail.319.319.png"
+                MIME_TYPES="[image/eps,image/x-eps,application/postscript,application/eps,application/x-eps]"
+                PROCESS="com.day.cq.dam.core.process.CommandLineProcess"
+                PROCESS_AUTO_ADVANCE="true"
+                THUMBNAILS="[48:48,140:100,319:319]"/>
+        </node4>
+        <node5
+            jcr:primaryType="cq:WorkflowNode"
+            description="Create web enabled video formats"
+            title="FFmpeg transcoding"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.day.cq.dam.video.FFMpegTranscodeProcess"
+                PROCESS_ARGS="profile:format_ogg,profile:format_aac,profile:format_flv,profile:format_aac_ie"
+                PROCESS_AUTO_ADVANCE="true"/>
+        </node5>
+        <node6
+            jcr:primaryType="cq:WorkflowNode"
+            description="Rasterize PDF and Adobe Illustrator documents to a preview image rendition"
+            title="Rasterize PDF/AI Image Preview Rendition"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                MAX_HEIGHT="2048"
+                MAX_WIDTH="2048"
+                MIME_TYPES="[application/pdf,application/postscript,application/illustrator]"
+                PROCESS="com.day.cq.dam.core.process.CreatePdfPreviewProcess"
+                PROCESS_AUTO_ADVANCE="true"
+                RESOLUTION="72"/>
+        </node6>
+        <node7
+            jcr:primaryType="cq:WorkflowNode"
+            description="This process will create one or more thumbnails for the asset, create web enabled rendition and update folder thumbnail."
+            title="Process Thumbnails"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                CONFIGS="[140:100:false,48:48:false,319:319:false]"
+                CREATE_FPO_MIMETYPES="[image/pjpeg,image/jpeg,image/jpg,image/gif,image/x-png,image/tiff,image/png,application/x-photoshop,application/photoshop,image/vnd.adobe.photoshop,application/vnd.adobe.photoshop,image/bmp,image/x-tiff]"
+                FPO_QUALITY="10"
+                HEIGHT="1280"
+                MIME_TYPE="image/jpeg"
+                MIMETYPE="image/jpeg"
+                PROCESS="com.day.cq.dam.core.impl.process.ThumbnailProcess"
+                PROCESS_AUTO_ADVANCE="true"
+                QUALITY="90"
+                SKIP="[audio/mpeg,video/(.*)]"
+                WIDTH="1280"/>
+        </node7>
+        <node8
+            jcr:primaryType="cq:WorkflowNode"
+            description="Batch Upload assets to configured remote Scene7 service for Dynamic Media delivery"
+            title="Scene7 Batch Upload"
+            type="EXTERNAL_PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                advanceOnTimeout="true"
+                EXTERNAL_PROCESS="com.day.cq.dam.scene7.impl.process.Scene7BatchUploadProcess"
+                period="30"
+                PROCESS_AUTO_ADVANCE="true"
+                timeout="3600"/>
+        </node8>
+        <node9
+            jcr:primaryType="cq:WorkflowNode"
+            description="Upload assets to configured remote Scene7 service for Dynamic Media delivery."
+            title="Scene7 Direct Binary Upload"
+            type="EXTERNAL_PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                advanceOnTimeout="true"
+                EXTERNAL_PROCESS="com.day.cq.dam.scene7.impl.process.DirectBinaryAccessS7UplProcess"
+                period="30"
+                PROCESS_AUTO_ADVANCE="true"
+                timeout="3600"/>
+        </node9>
+        <node10
+            jcr:primaryType="cq:WorkflowNode"
+            description="This process executes customer workflows on the asset"
+            title="Custom DAM Workflow Runner"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.adobe.cq.dam.processor.nui.impl.workflow.CustomDamWorkflowRunnerProcess"
+                PROCESS_AUTO_ADVANCE="true"/>
+        </node10>
+        <node11
+            jcr:primaryType="cq:WorkflowNode"
+            description="This process will send email based on an email template to current user when a transient workflow is completed"
+            title="Send Transient Workflow Completed Email"
+            type="PROCESS">
+            <metaData
+                jcr:primaryType="nt:unstructured"
+                PROCESS="com.day.cq.dam.core.impl.process.SendTransientWorkflowCompletedEmailProcess"
+                PROCESS_AUTO_ADVANCE="true"
+                templatePath="dam/workflow/notification/email/transientworkflowcompleted/en.txt"/>
+        </node11>
+        <node12
+            jcr:primaryType="cq:WorkflowNode"
+            title="End"
+            type="END">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node12>
+    </nodes>
+    <transitions jcr:primaryType="nt:unstructured">
+        <node0_x0023_node1
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node0"
+            rule=""
+            to="node1">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node0_x0023_node1>
+        <node1_x0023_node2
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node1"
+            rule=""
+            to="node2">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node1_x0023_node2>
+        <node2_x0023_node3
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node2"
+            rule=""
+            to="node3">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node2_x0023_node3>
+        <node3_x0023_node4
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node3"
+            rule=""
+            to="node4">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node3_x0023_node4>
+        <node4_x0023_node5
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node4"
+            rule=""
+            to="node5">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node4_x0023_node5>
+        <node5_x0023_node6
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node5"
+            rule=""
+            to="node6">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node5_x0023_node6>
+        <node6_x0023_node7
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node6"
+            rule=""
+            to="node7">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node6_x0023_node7>
+        <node7_x0023_node8
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node7"
+            rule=""
+            to="node8">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node7_x0023_node8>
+        <node8_x0023_node9
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node8"
+            rule=""
+            to="node9">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node8_x0023_node9>
+        <node9_x0023_node10
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node9"
+            rule=""
+            to="node10">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node9_x0023_node10>
+        <node10_x0023_node11
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node10"
+            rule=""
+            to="node11">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node10_x0023_node11>
+        <node11_x0023_node12
+            jcr:primaryType="cq:WorkflowTransition"
+            from="node11"
+            to="node12">
+            <metaData jcr:primaryType="nt:unstructured"/>
+        </node11_x0023_node12>
+    </transitions>
+</jcr:root>
diff --git a/pkg/pkg/vault/META-INF/vault/nodetypes.cnd b/pkg/pkg/vault/META-INF/vault/nodetypes.cnd
index c5b1f740..fd926604 100644
--- a/pkg/pkg/vault/META-INF/vault/nodetypes.cnd
+++ b/pkg/pkg/vault/META-INF/vault/nodetypes.cnd
@@ -3,4 +3,3 @@
 [rep:RepoAccessControllable]
   mixin
   + rep:repoPolicy (rep:Policy) protected ignore
-
diff --git a/pkg/pkg/vault/META-INF/vault/properties.xml b/pkg/pkg/vault/META-INF/vault/properties.xml
index 0ee3dc67..40978aae 100644
--- a/pkg/pkg/vault/META-INF/vault/properties.xml
+++ b/pkg/pkg/vault/META-INF/vault/properties.xml
@@ -5,4 +5,5 @@
     <entry key="name">[[.Name]]</entry>[[if (ne .Version "")]]
     <entry key="version">[[.Version]]</entry>[[end]]
     <entry key="createdBy">AEM Compose</entry>
+    <entry key="acHandling">merge</entry>
 </properties>