Set up a server farm

3. Create a shared space

By default each instance of Digital Assistant has an individual space to store components called a 'Space'. When running multiple instances of Digital Assistant in order to keep data consistency it might be useful to use a shared Space as a single source of information. In this article we'll cover the process of creating a shared Space as well as provide some insights on how to set up the Sharing Settings to avoid common pitfalls.

This guide also directly follows a previous article on making multiple Digital Assistant instances share a single database, therefore for this guide we'll be using two virtual machines to simulate a server cluster. We'll refer to the first virtual machine as 'parent' and the second one as 'child' for simplicity.

Let's begin!

Creating the shared folder

First of all, since both the parent and the child can be used to host a shared space we need to decide which one to use. For this guide we'll be using the child to store the shared space, therefore let's create a folder anywhere on the child's system and give it an indicative name. We named our folder 'Spaces':

Creating a shared folder on the child

Now, let's add some content to our shared folder. We'll copy the existing Digital Assistant Space in the child and paste it to our shared folder. To do this, go to your Digital Assistant installation folder and navigate to Web → SpacesLocal, then copy all the existing content and paste it inside the shared folder:

Copy the existing space into the shared folder

Assuming that our servers are connected, the next step will be to share the folder across our network. Right click on the folder and select 'Properties', then navigate to the 'Sharing' tab:

The folder sharing settings

Click 'Share...', then add 'Everyone' account from the drop down list to have Read/Write access to our shared folder and share it:

Share the folder to Everyone

You should get a confirmation window that your folder is shared:

Confirmation that the folder is shared

To test that the folder is accessible, we can try to access the shared directory in the folder explorer of our parent server. We should be able to open the shared folder by using the child server's IP address (in our case and the shared folder name \\\Spaces:

Test shared folder access

Setting the permissions

If you're setting a test instance with no Active Directory, applications running within it might not have access to the shared folder due to the default settings of Windows Local Group Policy for shared folders.

Therefore, it might be necessary to add some changes:

  1. Open Local Group Policy Editor (click Ctrl + R and open 'gpedit.msc').
  2. Navigate to Computer Configuration → Windows Settings → Security Settings → Local Policies → Security Options. Here we'll change 3 things:
    • Network access: Let Everyone permissions apply to anonymous users – change to Enabled
    • Network access: Restrict anonymous access to Named Pipes and Shares – change to Disabled
    • Network access: Shares that can be accessed anonymously – here you should enter the name of the shared folder (in our example that would be 'Spaces')

This should make the folder visible to other servers in the network.

Setting Digital Assistant to use a shared folder

The process to enable the use of a shared folder is the same for both the parent and the child. We'll need to specify a new 'Spaces Folder' within the Workplace Manager for both Digital Assistant instances.

We'll navigate to the Settings → Global using our top left navigation and select the 'Farm Topology' setting from the drop down. In this case, all we need to do is to set the 'Spaces Folder' to our shared folder path (we'll use the same string we used to test the connection):

Global Farm Topology settings

Save the changes and now for our changes to activate, we'll restart Internet Information Services by running the 'iisreset.exe' command on both instances (you can click Ctrl + R, paste iisreset.exe and click run).

Now both the parent and the child Digital Assistant instances should be using the same Space to store content. To test it you can create a component in one of them and check if it's visible in the other instance.