Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Next »

Splitfilesystem V2

The files are stored within a filesystem in Base32 coded structures. The whole path is base 32 coded and divided into blocks.

C:\Doc_Base\FI\FZVW\O4Y\OJQX\O\GIYD\EMZQ\G4YT\GXZW\GEYW\GZJQ\G44C\2MRZ\GE2S\2NBS\GNSC\2OBR\HEYC\2YZX\GJSD\IMBT\GM3W\MZRZ\L5XG

The metadata and properties of the archived document are stored in a .info-File as JSON.

{
  "properties": {
    "contentDigestAlgorithm": "MD5",
    "creationUser": "LOCAL SERVICE",
    "creationTime": "2023-07-13T07:03:50.867280400Z[UTC]",
    "propertyLayoutVersion": "V02.00",
    "modificationTime": "2023-07-13T08:03:37.406140Z[UTC]",
    "modificationUser": "LOCAL SERVICE",
    "objectName": "20230713_611ce078-2915-423d-8190-c72d40337ff9_node",
    "contentLength": "1127",
    "repository": "FI",
    "contentDigest": "68FAB75EC1AC8D2820068CC95FAA5EDE",
    "contentStreamLength": "1127",
    "archiveLinkVersion": "0046"
  }
}

Configurationparameters within the repository.cfg file

In order to store documents on a filesystem parameters have to be defined within the repository.cfg file. In general the file is stored in the folder:

<Tomcat folder>\webapps\<name of the webapp>\WEB-INF\classes\config

A small sample of a repository.cfg file:

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
# 
#      http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# the repository list for the default repositoryfactory.class
repositoryfactory.repositorylist = FI,MM

#----------------------  FI configuration (splitfilesystemv2) ----------------------------------

#===== FI repository configuration 
FI.contentservice.type     = splitfilesystemv2
FI.description             = Finance Repository
FI.saphttp.security        = 1
FI.accessmode              = rucd
FI.authentication.required = false
FI.authentication.user     = 
FI.authentication.pwdalias = 

#===== FI content service configuration (filesystem|splitfilesystemv2|splitfilesystemv3|azureblobstore|s3blobstore|kgsstore)
FI.contentservice.splitfilesystemv3.root = C:/Doc_Base
FI.contentservice.splitfilesystemv3.contrepinpath = true


#===== FI keystore service configuration (none|pkcs12)
FI.keystoreservice.type        = pkcs12
FI.keystoreservice.pkcs12.name = common-ks.pkcs12
FI.contentservice.netappv3.maxfolderblocks=8
FI.contentservice.netappv3.maxFileNameLength=200
FI.contentservice.netappv3.rootSelectionIntervalH=9

#===== FI meta service configuration (none|elastic|database|kafka)
FI.metaservice.type = none

#===== FI meta service configuration (none|elastic|database|kafka)
FI.protocolservice.type = none


In the repostory.cfg all repositories used within the archiving system are listet via the global parameter repositoryfactory.repositorylist. The repositories are separated by a comma. e.g. FI,MM,CO

All further parameters are defined individually for each content repository.

In order to store the documents on the filesystem the content repository type has to be set to splitfilesystemv2 or splitfilesystemv3.

<repoName>.contentservice.type = splitfilesystemv3

In order to store the documents in a specified place the path has to be entered; ex. C:/Doc_Base/or /opt/Doc_Base . Please be aware that the separator for the folder always is a / !

When storing the documents on a filesystem we suggest to set the parameter ContrepInPath = true

#<repoName>.contentservice.splitfilesystemv2.root = C:/Doc_Base
#<repoName>.contentservice.splitfilesystemv2.ContrepInPath = true 

The saphttp.security can be set to 0, 1 or 2.

0 means that no security is necessary and no certifiate is needed in order to store documents in the content repository

1 means that in order to store documents in the content repository a certificate has to be send from the SAP system to the content server. The certifiacte will be accepted automatically by the content server.

2 means that in order to store documents in the content repository a certificate has to be send from the SAP system to the content server. The certifiacte has to be accepted manually by the content server. This can be done via the transaction CSADMIN within the SAP system.

#<repoName>.saphttp.security        = 1 

The parameters for the accessmode in general always should be rucd (read, update, create, delete) and the authentication should be set to false with no user a/o password.

FI.accessmode              = rucd
FI.authentication.required = false
FI.authentication.user     = 
FI.authentication.pwdalias = 

Differences SFSv2 SFSv3

  • Version 3 brings these changes compared to v2

    • the folder block size is not fixed 4 anymore. It can be chosen: 4, 8, 16. With this change the storage folder depth can be reduced.

    • the file name length can be limited. In v2 there was no limit.

    • multiple roots are supported. They are used until the free space limit is arrived. Then it choses the next in order.

      • if limit is -1 it is blocked for writing new documents (exception last one)

root folder selection behavior

  • the algorithm tries in numbers order to pick the root

    • it checks the available space and compares it with the given limit. Default limit is -1.

    • If the algorithm finds out, that a root hasn’t enough space it tries the next.

    • with limit -1 a drive can be blocked. The space detection is skipped. It is then used in read only state (and / or only for adding components and infos)

      • if the last root has -1 it will be written until IOEXCEPTION

  • the algorithm is triggered by:

    • if rootSelectionIntervalH is exceeded

    • if IOException had happen while IO operation

  • No labels