diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml
index 65f06abfcc..c8b1014713 100644
--- a/config/alfresco/bootstrap-context.xml
+++ b/config/alfresco/bootstrap-context.xml
@@ -308,7 +308,9 @@
-
+
+
+
diff --git a/config/alfresco/patch/patch-services-context.xml b/config/alfresco/patch/patch-services-context.xml
index 984809b335..61edb3a6fe 100644
--- a/config/alfresco/patch/patch-services-context.xml
+++ b/config/alfresco/patch/patch-services-context.xml
@@ -2215,12 +2215,21 @@
+
patch.migrateAttrTenants
patch.migrateAttrTenants.description
0
- 4106
- 4107
+ 0
+ 1
false
@@ -2228,6 +2237,11 @@
+
+
+
+
+
@@ -2243,6 +2257,11 @@
+
+
+
+
+
@@ -2258,6 +2277,11 @@
+
+
+
+
+
@@ -2273,6 +2297,11 @@
+
+
+
+
+
diff --git a/source/java/org/alfresco/repo/tenant/MultiTenantBootstrap.java b/source/java/org/alfresco/repo/tenant/MultiTenantBootstrap.java
index c27b04ecc7..2b5af69978 100644
--- a/source/java/org/alfresco/repo/tenant/MultiTenantBootstrap.java
+++ b/source/java/org/alfresco/repo/tenant/MultiTenantBootstrap.java
@@ -18,20 +18,26 @@
*/
package org.alfresco.repo.tenant;
-import org.springframework.extensions.surf.util.AbstractLifecycleBean;
+import java.util.List;
+
+import org.alfresco.repo.admin.patch.AppliedPatch;
+import org.alfresco.repo.admin.patch.PatchService;
+import org.alfresco.repo.admin.patch.impl.MigrateAttrTenantsPatch;
import org.alfresco.util.PropertyCheck;
import org.springframework.context.ApplicationEvent;
+import org.springframework.extensions.surf.util.AbstractLifecycleBean;
/**
- * This component is responsible for ensuring that patches are applied
- * at the appropriate time.
+ * This component is responsible for starting the enabled tenants (if MT is enabled).
*
- * @author Derek Hulley
+ * @author Derek Hulley, janv
*/
public class MultiTenantBootstrap extends AbstractLifecycleBean
{
private TenantAdminService tenantAdminService;
-
+ private PatchService patchService;
+ private MigrateAttrTenantsPatch migrateAttrTenantsPatch;
+
/**
* @param tenantAdminService the service that will perform the bootstrap
*/
@@ -39,12 +45,47 @@ public class MultiTenantBootstrap extends AbstractLifecycleBean
{
this.tenantAdminService = tenantAdminService;
}
-
+
+ public void setPatchService(PatchService patchService)
+ {
+ this.patchService = patchService;
+ }
+
+ public void setMigrateAttrTenantsPatch(MigrateAttrTenantsPatch migrateAttrTenantsPatch)
+ {
+ this.migrateAttrTenantsPatch = migrateAttrTenantsPatch;
+ }
+
@Override
protected void onBootstrap(ApplicationEvent event)
{
PropertyCheck.mandatory(this, "tenantAdminService", tenantAdminService);
- tenantAdminService.startTenants();
+ PropertyCheck.mandatory(this, "patchService", patchService);
+
+ if (tenantAdminService.isEnabled())
+ {
+ // Upgrade to 3.4 (chicken & egg)
+ if (tenantAdminService.getAllTenants().size() == 0)
+ {
+ boolean applied = false;
+ List appliedPatches = patchService.getPatches(null, null);
+ for (AppliedPatch appliedPatch : appliedPatches)
+ {
+ if (appliedPatch.getId().equals("patch.migrateAttrTenants"))
+ {
+ applied = true;
+ break;
+ }
+ }
+
+ if (! applied)
+ {
+ migrateAttrTenantsPatch.apply();
+ }
+ }
+
+ tenantAdminService.startTenants();
+ }
}
@Override