Skip to Content

Collaboration room that uses file system as storage place

Changing Collaboration Rooms Documents Store


This blog explains how to create collaboration room template that store all documents in external file server and not in the portal database. The goal is to enable quick backup & restore procedures for system administrators, because now they are required to restore the whole database in order to restore a single document. I will show how to create such a room template, and i hope this feature will be useful for others. The km version I’m using is 6.0.17.

Introduction to Repository Managers

You should consider the different types of repositories. File System Repository manager support only basic read/write actions on files. Other functions like locking documents, creating links, using predefined properties and versions are not supported. CM Repository manager allows to utilize all Content Management functions and they can be set up in various Persistence modes as follows:

  • DB – all documents, folders and metadata are stored in the database. It is the default mode for collaboration rooms and recommended if there are many write requests.
  • DBFS – folders and metadata are stored in database, but documents are stored in file system. It’s recommended mode to handle large amounts of data, but requires to backup data in the file system as well as in the database.
  • FSDB – Metadata is stored in database, folders and documents are stored in file system. All changes in file system are automatically updated in the portal. Off course this synchronization affects performance, but except of that issue it answer all our demands.

Bear in mind that changes to the folder structure in the file system would lead to inconsistent or lost data. You should not allow access on the file system level. Only administrators should work directly in the file system for special mass operations only.

1. Rooms On a File Server share

Create a shared folder on your network directory with enough space with the following subfolders: cm_stores , Versions. Only user sapservice&ltSID> should have full control permissions on this folder, so that no one can delete files or loose metadata. This folder will store all rooms documents and metadata. The repository manager will add here additional folders, eventually every room gets a new folder with his room id. It can not be changed. When you delete a room its folder won’t be deleted.

Picture 1: this will be your documents storage place. image

2. CM Repository

Create two new CM repository managers for your rooms data. Select System Administration -> System Configuration ->Knowledge Management ->Content Management ->Repository Managers->CM Repository and duplicate room_extension and room_store_cm. Change parameters according to the screenshot in picture 2. you should cahnge name, prefix, persistence mode, repository id, root directory and root directory versions. In example , the last parameter should be your share address in the network directory //orgFileServer/Rooms/Versions. Leave all other entries unchanged. There is no need to restart. Check your new repository managers in the component monitor System Administration -> Monitoring -> KM .

Everything should be green. Check also that the two folder appeared in km content root.

Picture 2: It is always better to duplicate one of the several pre configured repositories. Change the persistence mode to fsdb. image

3. Configure Extension Store

You need to configure a persistency area for the rooms. Select Content Administration->Collaboration Content->Room Template Administration and choose Configure Extension Store->Collaboration Room Stores In related links area. Duplicate cmDocuments and set the path to the new repository /room_extensions_org/cm_stores/documents. Use a new name with same prefix and change the keys of description and labels so that the storage won’t get the same name. You will need to restart the portal afterwards.

Picture 3: These stores define pre configured folders in the CM repository, in which the extension creates the sub folders. image

4. Room Template Administration

Edit the template and open extensions tab. Edit the on_create_room extension point for Document entry. (you can add a new configuration entry of the CM room extension, if there is no such entry in your template). Set the Input parameter Store to CmDocumentsFS like in Picture 4. The workspace path should be checked with value private_documents_path. After you click OK button , open Mappings tab to configure parameters mapping. Choose Documents page and find RoomDocuments section. Change entries path and startUri to private_documents_path.

Picture 4: The output parameter workspace path will be used for the mapping of the iView parameters. image

5. Create a Room

Select Content Administration->Collaboration Content->Room Creation and create a room with your newly created template. Open the room, navigate to the Document page and upload a document. Check its path in Details->settings->Properties->Access Links it should be stored in your new cm repository. Go to your file server and see that a new folder has been created for your new room and the file is stored in it.

You must be Logged on to comment or reply to a post.
  • Hi,
    If you want to use versions in the stores, you have, as given, to fill in the “Root Directory for Versions”. But this should NOT be a sub dir of the root dir for the repository (as in such a case the versions dir will be part of the repository itself), but be a directory parallel to the root dir of the repository (for example: //Server/Org/RoomsVersions, not: //Server/Org/Rooms/Versions).
    Hope it helps
  • Thanks for this useful How To.

    Although a bit older, it is still very useful!

    Indeed I have one further question:

    What is the difference between the two repositories, if they link to the same Root directories?






    • Hi Sascha,

      There is ONE repository defined (“roomExtensionsOrg”, in screenshot 2). Within that repository definition, as it is set to FSDB type, you have to set the backend properties where the repository saves the content (and, if versioning is activated, where to save the versions). So, “//Server/Org/Rooms” and “//Server/Org/RoomsVersions” would be these locations on the server.

      Hope it helps


      • Thanks for your answer, Detlev!

        But there is given advice to

        Create two new CM repository managers for your rooms data. Select System Administration -> System Configuration ->Knowledge Management ->Content Management ->Repository Managers->CM Repository and duplicate room_extension and room_store_cm.

        which means one has to create TWO repositories, isn’t it?

        • Hi Sascha,

          Yeah, but you are mixing up some things… You referred to “two repositories” with “i.e.”: “//Server/Org/Rooms and //Server/Org/RoomsVersion”. These values are parameters for one repository, as already pointed out.

          On the other hand, the blog intends to duplicate “room_extension” (with the new name “room_extension_org”) as well as “room_store_cm”; the latter is not described in detail, and there is no new reference; one would need to create a new content store correspondingly — see Content Stores für Collaboration Rooms – Collaboration – SAP Library for details how content stores are set up (it’s old doc, I would have to double check if this is still the same; but it’s also an old blog, and all but complete or correct in details).

          Hope it helps