Select Page

Alfresco Digital Workspace (ADW) is Alfresco’s next-generation user interface that will eventually replace Alfresco Share. It is an enhanced version of the Alfresco Content App (ACA) with some extensions and branding for enterprise customers. ACA and ADW are coded with Angular and Alfresco’s Application Development Framework.

ADW uses the standard ACA extension mechanism. This mechanism uses Angular libraries and an action/event system provided by NGRX. ADW can be extended using the same extension system. 

For this article we expect Alfresco Content Services (ACS) 7.2  to be listening on port 8080 on your local computer. If you don’t have a local install of ACS, you could use the docker-compose file from the acs-deployment project. Or if you have an ACS instance on another machine you could update the example configuration accordingly. We also assume you don’t have an Alfresco Process Services (APS) instance.

Download the ADW source code from Alfresco’s Nexus repository. First, login to artifacts.alfresco.com and then search for “alfresco digital workspace”. Then, select the version of the zip file you need and download it from the Artifacts tab. At the time of writing, the latest version of ADW is 2.8. Remember that you need to login before this link will work.

Unzip the source code into an empty directory and have a look at the project structure. This structure is a Narwhal monorepo that includes a apps/content-ee application and several extensions under libs/content-ee. At this point, you will not see ACA under apps/content-ce. In order to bring in ACA and all other project dependencies, add a .env file in the directory that you unzipped the source into. 

Following is a sample file (copied from apps/content-ee/README.md and then slightly modified):

BASE_URL=""

# App config settings
APP_CONFIG_BPM_HOST=""
APP_CONFIG_ECM_HOST="https://localhost:8080"
APP_CONFIG_OAUTH2_HOST=""
APP_CONFIG_IDENTITY_HOST=""
APP_CONFIG_PROVIDER="ECM"
APP_CONFIG_AUTH_TYPE="BASIC"
APP_CONFIG_OAUTH2_CLIENTID="alfresco"
APP_CONFIG_OAUTH2_IMPLICIT_FLOW=true
APP_CONFIG_OAUTH2_SILENT_LOGIN=true
APP_CONFIG_OAUTH2_REDIRECT_SILENT_IFRAME_URI="{protocol}//{hostname}{:port}/assets/silent-refresh.html"
APP_CONFIG_OAUTH2_REDIRECT_LOGIN=/
APP_CONFIG_OAUTH2_REDIRECT_LOGOUT=/
APP_CONFIG_APPS_DEPLOYED="[{"name": "simpleapp"}]"
APP_CONFIG_LANDING_PAGE="/personal-files"

# CONTENT RELATED
ACA_BRANCH="master"
APP_CONFIG_PLUGIN_PROCESS_SERVICE=false
APP_CONFIG_PLUGIN_AI_SERVICE=true
APP_CONFIG_PLUGIN_AOS=true
APP_CONFIG_PLUGIN_CONTENT_SERVICE=true
APP_CONFIG_CUSTOM_MODELED_EXTENSION="{}"

# CONTENT - MICROSOT PLUGIN RELATED
APP_CONFIG_PLUGIN_MICROSOFT_ONLINE=false
APP_CONFIG_MICROSOFT_ONLINE_OOI_URL=""
APP_CONFIG_MICROSOFT_ONLINE_CLIENTID=""
APP_CONFIG_MICROSOFT_ONLINE_AUTHORITY=""
APP_CONFIG_MICROSOFT_ONLINE_REDIRECT=""

# CONTENT - MICROSOT INTEGRATION TEST RELATED
MICROSOFT_USER_INITIALS=""
MICROSOFT_EMAIL=""
MICROSOFT_USER2_INITIALS=""
MICROSOFT_EMAIL2=""
MICROSOFT_PASSWORD=""
MOO_LOGIN_URL=""
# E2E settings
E2E_USE_MOCK_BACKEND=true
E2E_HOST="https://localhost"
E2E_PORT="4200"
BROWSER_RUN="true"
E2E_PREFIX="e2e"
SMART_RUNNER_DIRECTORY=".protractor-smartrunner"
SAVE_SCREENSHOT="true"
SCREENSHOT_URL="<url>"
SCREENSHOT_PASSWORD="<password>"
LOG_LEVEL="TRACE"
LOG=true

# Test user credentials
E2E_USERNAME="<username>"
E2E_PASSWORD="<password>"
E2E_UNAUTHORIZED_USER="<username>"
E2E_UNAUTHORIZED_USER_PASSWORD="<password>"
IDENTITY_USER_EMAIL="<username>"
IDENTITY_USER_PASSWORD="<password>"
SUPERADMIN_EMAIL="<username>"
SUPERADMIN_PASSWORD="<password>"
DEVOPS_EMAIL="<username>"
DEVOPS_PASSWORD="<password>"
MODELER_EMAIL="<username>"
MODELER_PASSWORD="<password>"
PROCESS_ADMIN_EMAIL="<username>"
PROCESS_ADMIN_PASSWORD="<password>"
HR_USER="<username>"
HR_USER_PASSWORD="<password>"
ADMIN_EMAIL="<email>"
ADMIN_PASSWORD="<password>"

In the .env file, we set APP_CONFIG_PROVIDER to ECM so that ADW will authenticate against ACS but not APS.

BASE_URL normally points to your APS installation. Since we won’t be using APS for now, we assign this to an empty string. This property is not documented and if not provided you will not be able to start ADW.

We set ACA_BRANCH to master because there are currently changes in the develop branch that break ADW 2.8. If you skip this step, you will see a message like “Cannot GET /” after you start ADW and navigate to https://localhost:4200.

You can’t use the latest version of Node with ADW 2.8 due to some issues with the release of Angular used in this version of ADW. Use Node version 14 for ADW 2.8. Unfortunately, this is another item that does not appear to be documented yet.

Run the following commands in the folder where you unzipped the source code:

# Perform clean/install tasks on the project, this will also pull
# in the ACA source code
npm ci
# Compile ADW, serve ADW on localhost:4200 and proxy /alfresco # requests to localhost:8080 npm start content-ee

After some time, your browser should open and navigate to https://localhost:4200. Within a few seconds the ADW login page should be displayed. Once you provide a valid username and password, you should be able to use ADW for interacting with your ACS deployment.

We have been in communication with the ACA/ADW dev team and just before we published this article, we received the following comment from the lead developer. Based on this, we expect this process to be significantly simpler in the near future:

For the upcoming release I’m adding some improvements for the ADW source code publishing, it will generate the .env file with the corresponding ACA branch that is compatible with ADW, so that many issues are solved. Also, there will be a compatibility matrix as part of the package. The README file also contains the “See also” section that actually redirects to a bunch of other docs in the “developer-docs” folder, might be something of your interest there.

Denys Vuika

There are several un(der)-documented items you need to know in order to obtain the ADW source code, and get it compiled and running. In this article we’ve shared some simple steps you can use to get ready to develop Digital Workspace extensions. From here, you can read through some of the linked material in this article. Of course, feel free to reach out to the Zia sales team if you need any help.

Bindu Wavell – Chief Architect
ABOUT THE AUTHOR

Bindu Wavell, Partner and Cheif Architect
Bindu has 25+ years of consulting experience with enterprise system integration. As the content lead, he provides technical and architectural reviews and guidance. Bindu supports project teams and runs the Alfresco support practice, overseeing issues across multiple customers. Additionally, he’s active in the Alfresco community, including being a member of the Order of the Bees, where he is a contributor to support tools projects. He’s the creator of the Alfresco Yeoman generator. Bindu is a tea connoisseur, and interested in hobby robotics and automation.

Pin It on Pinterest

Sharing is caring

Share this post with your friends!