diff --git a/repository/src/main/java/org/alfresco/repo/invitation/InvitationServiceImpl.java b/repository/src/main/java/org/alfresco/repo/invitation/InvitationServiceImpl.java
index 41562d8ba2..a0e75695e5 100644
--- a/repository/src/main/java/org/alfresco/repo/invitation/InvitationServiceImpl.java
+++ b/repository/src/main/java/org/alfresco/repo/invitation/InvitationServiceImpl.java
@@ -261,7 +261,8 @@ public class InvitationServiceImpl implements InvitationService, NodeServicePoli
PropertyCheck.mandatory(this, "PasswordGenerator", passwordGenerator);
PropertyCheck.mandatory(this, "PolicyComponent", policyComponent);
PropertyCheck.mandatory(this, "templateService", templateService);
-
+ PropertyCheck.mandatory(this, "clientAppConfig", clientAppConfig);
+
this.inviteNominatedSender = new InviteNominatedSender(serviceRegistry, repositoryHelper, messageService);
this.inviteModeratedSender = new InviteModeratedSender(serviceRegistry, repositoryHelper, messageService);
diff --git a/repository/src/main/java/org/alfresco/repo/invitation/ModeratedInvitationImpl.java b/repository/src/main/java/org/alfresco/repo/invitation/ModeratedInvitationImpl.java
index 22820764fb..73157a6ef5 100644
--- a/repository/src/main/java/org/alfresco/repo/invitation/ModeratedInvitationImpl.java
+++ b/repository/src/main/java/org/alfresco/repo/invitation/ModeratedInvitationImpl.java
@@ -77,8 +77,10 @@ import org.alfresco.service.namespace.QName;
parentProps.put(RESOURCE_NAME_KEY,(String)props.get(WF_PROP_RESOURCE_NAME));
parentProps.put(RESOURCE_TYPE_KEY,(String)props.get(WF_PROP_RESOURCE_TYPE));
parentProps.put(CREATED_AT,(Date)props.get(ContentModel.PROP_CREATED));
- parentProps.put(MODIFIED_AT,(Date)props.get(WF_PROP_MODIFIED_AT));
- parentProps.put(CLIENT_NAME,(Date)props.get(WF_PROP_CLIENT_NAME));
+ Object modifiedAt = props.get(WF_PROP_MODIFIED_AT);
+ parentProps.put(MODIFIED_AT, modifiedAt != null ? (Date) modifiedAt : null);
+ Object clientName = props.get(WF_PROP_CLIENT_NAME);
+ parentProps.put(CLIENT_NAME, clientName != null ? (String) clientName : null);
return parentProps;
}
diff --git a/repository/src/main/resources/alfresco/application-context-highlevel.xml b/repository/src/main/resources/alfresco/application-context-highlevel.xml
index 4451a1523a..6cc0c07552 100644
--- a/repository/src/main/resources/alfresco/application-context-highlevel.xml
+++ b/repository/src/main/resources/alfresco/application-context-highlevel.xml
@@ -39,10 +39,10 @@
-
+
diff --git a/repository/src/main/resources/alfresco/client/config/repo-clients-apps.properties b/repository/src/main/resources/alfresco/client/config/repo-clients-apps.properties
index d1d0ff8779..98c5ae6581 100644
--- a/repository/src/main/resources/alfresco/client/config/repo-clients-apps.properties
+++ b/repository/src/main/resources/alfresco/client/config/repo-clients-apps.properties
@@ -17,4 +17,10 @@ repo.client-app.share.requestResetPasswordTemplatePath=
# reset password UI page url
repo.client-app.share.resetPasswordPageUrl=${shareUrl}/page/reset-password
# reset password confirmation email template path
-repo.client-app.share.confirmResetPasswordTemplatePath=
\ No newline at end of file
+repo.client-app.share.confirmResetPasswordTemplatePath=
+
+### Digital workspace template configurations
+repo.client-app.workspace.inviteModeratedTemplatePath=
+repo.client-app.workspace.sharedLinkBaseUrl=
+repo.client-app.workspace.workspaceUrl=workspace
+repo.client-app.workspace.templateAssetsUrl=${alfrescoUrl}/images
diff --git a/repository/src/main/resources/alfresco/invitation-service-context.xml b/repository/src/main/resources/alfresco/invitation-service-context.xml
index 3f889afe67..13c7714826 100644
--- a/repository/src/main/resources/alfresco/invitation-service-context.xml
+++ b/repository/src/main/resources/alfresco/invitation-service-context.xml
@@ -33,6 +33,7 @@
+