/ Installation  

Install Documentum with this ultimate guide

Hi there AppWorks fans,

Welcome to a new installment of AppWorks tips.

In this installment we’ll make a Content Management System available as storage location for our data. The CMS is called ‘Documentum’ and is globally used at enterprise companies. Documentum saves data in a structured way in 1 location called a ‘repository’. All data in a repository is saved as an ‘object’ where the metadata is saved in a relational database and the content stored on a file storage.

AppWorks has connectors available to connect several CMS systems and Documentum is one of them. AppWorks is an Enterprise Service Bus that makes working with processes really easy but saving data in a structured way is something else. So, both systems working together is the best solution of all.


Let get right into it…

Start your AppWorks VM and make connection with the MobaXTerm client with the in the samples created user ‘otadmin’ and related password ‘admin’.

Go to the ‘Download’ section on the OpentText support site and start looking for ‘Documentum Content Server’. We go for the latest 16.4 release (on CentOS 64-bits with PostgreSQL)

‘Documentum Server for LINUX64 Postgres Version 16.4’

Accept the license and start downloading the file ‘content_server_16.4_linux64_postgres.tar’

Upload the downloaded file to the image in the home directory of in our case ‘/home/otadmin’

Now we need to extract the file to some nice folder structure. Create a new folder with mkdir content_server_16.4_linux64_postgres and go into the folder with the cd command. Now extract the file tar xvf ../content_server_16.4_linux64_postgres.tar

This post will help you install Documentum, but make sure you also have the documentation available somewhere. This can again be found on the OpenText support site under the documentation section. Make sure you search for ‘Documentum Content Server’. The main PDF you need for now is the installation guide ‘Documentum Platform and Platform Extensions 16.4 Installation Guide’ and the release notes ‘Documentum Server 16.4 Release Notes’.

The release notes refer to the ‘Product Compatibility Matrices‘ where you can find an excel sheet ‘OpenText Product Compatibility Matrix (Current Maintenance).xlsx’ that covers all the compatibilities with the several software package. Nicely to have a look, but not required for now.

In this ‘’Product Compatibility Matrices’ page there is also an important like to ‘Documentum Compatibility Matrices’ -> ‘Documentum’ -> ‘Documentum Platform - Compatibility’. Here you can find the PDF ‘Documentum Server_16.4.pdf’ that give you more inside on the compatibility specific for Documentum related software. Not required, but nice to know that it is available!


Pre-check list

Make sure you are administrator.

You have this privilege when you use the ‘otadmin’ user that we introduced in the posts on this site.

Install ‘TCL’ and ‘Expect’

The EPEL repository is required for this, but already installed in other posts…These commands should run fine.

Just install and don’t ask…I know…Sometimes it’s just what it is with Linux.

sudo yum install tcl -y

sudo yum install expect -y

XWindows on CentOS

Documentum uses an installation UI. Like we also saw for the AppWorks installation. You are covered when you use the MobaXTerm client! Make sure you EXPORT DISPLAY points to the correct value.

64-bits architecture

Make sure your VM has the 64-bits architecture with uname -m where the result should be x86_64

Environment variables

Make the $DOCUMENTUM and $DM_HOME variables available and extend the $LD_LIBRARY_PATH with the Documentum bin directory. You can use these steps:

  • Create a directory: sudo mkdir /opt/documentum
  • Own it to the otadmin user sudo chown otadmin /opt/documentum/
  • Edit the ~/.bash_profile of the ‘otadmin’ user: sudo vi ~/.bash_profile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

CLASSPATH=$CLASSPATH:/opt/tomee/apache-tomee-plus-8.0.0-M2/lib/postgresql-42.2.5.jar:/opt/opentext/AppWorksPlatform/defaultInst/cordyscp.jar
export CLASSPATH

JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export JAVA_HOME

PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH

LIB_PATH=/usr/lib/jvm/java-11-openjdk/lib/server/

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIB_PATH:/opt/opentext/AppWorksPlatform/defaultInst/lib:/opt/documentum/product/16.4/bin
export LD_LIBRARY_PATH

CATALINA_HOME=/opt/tomee/apache-tomee-plus-8.0.0-M2
export CATALINA_HOME

TOMCAT_HOME=/opt/tomcat/apache-tomcat-8.5.43
export TOMCAT_HOME

DOCUMENTUM=/opt/documentum
export DOCUMENTUM

DM_HOME=$DOCUMENTUM/product/16.4
export DM_HOME

POSTGRESQL_HOME=/usr/pgsql-11/bin/
export POSTGRESQL_HOME
  • When done reload your profile via the command: source ~/.bash_profile
  • Check if it’s all OK via: env | grep DM_HOME
Database

Meat the PostgreSQL version from the compatibility matrix. For us the for AppWorks used ‘PostgreSQL 11.1.0 64-bits’ should be fine although 9.4 or 9.6 is recommended.

ODBC connector

Make the PostgreSQL ODBC 64-bits connector available with these steps:

  • sudo yum install postgresql-odbc.x86_64 -y
  • Check if the availability is OK: ls /usr/lib64/psqlodbcw* -l
  • Check the odbc.ini location odbcinst -j
  • Create a new odbc.ini sudo vi /etc/odbc.ini with this content:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[MyPostgres]
Description = PostgreSQL connection to MyPostgres
Driver = PostgreSQL
Database = postgres
Servername = localhost
UserName = postgres
Password = admin
Port = 5432
Protocol = 7.4
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
UpdateableCursors = Yes
DEBUG = Yes
Fix command

Do a fix command sudo ln -s /usr/lib64/libsasl2.so.3 /usr/lib64/libsasl2.so.2

Directory availability

Create a mandatory directory for the repository and own it to the ‘postgres’ user

  • sudo mkdir /var/lib/pgsql/11/data/db_aw_repo_dat.dat

  • sudo chown -R postgres:postgres /var/lib/pgsql/11/data/db_aw_repo_dat.dat

    ‘aw_repo’ will be the name of our Documentum repository!

Setup services

Edit the services table sudo vi /etc/services and add these 2 lines at the end of the file

1
2
dm_repo1        47625/tcp               # 16.4 Repository native connection
dm_repo1_s 47626/tcp # 16.4 Repository secure connection
Application Server (Optional)

Tomcat version….Maybe for DA, but not required!

We will run an extra tomcat instance local our computer outside the VM as it makes the image rather heavy and is not needed for our AppWorks instance

Documentum has several clients available, but the Documentum Adminstrator is for managing the environment, but we’ll see there are other tools also.

Port availability

Make sure you have 20 follow up ports available for the JMS installation (standard port 9080)

  • With sudo netstat -ltnp | grep 90 you can check if ports are available

    AppWorks uses a java instance on port 9090, so our JMS should run on 9060!


Documentum installation

Now the major step of this blog post.

Go to your extracted installation files: cd ~/content_server_16.4_linux64_postgres

Give the bin file execution permission chmod +x serverSetup.bin

And execute the magic command: ./serverSetup.bin

Don’t run with the sudo command as otadmin should be the owner of it all!

Graphical installers are not supported by the VM. The console mode will be used instead…You need to make sure your DISPLAY variable is correct! export DISPLAY=IP:0.0

Now just follow the steps of the wizard and make sure to update the port number from 9080 to 9060!

dctm_001

Accept the terms and hit Next

dctm_002

Use password ‘admin’ and update the port to 9060!…Then hit ‘Next’

dctm_003

Now hit that bright and shining ‘Install’ button

dctm_004

dctm_005

dctm_006

Leave the ‘No’ option and click ‘Next’

dctm_007

Choose the ‘Configure later’ and click ‘Done’

As you can see in the last screenshot run this command: sudo /opt/documentum/dba/dm_root_task_cs16.4

Now the software installation part is done. Next is setting up a connection broker and a brand-new repository.


Connection broker

This is the component that runs as a broker between the repositories (if you have multiple) and the end-users. It makes it possible to only show those repositories related for the correct users. You always need one. Also, if you only run one repository like we do for our VM.

So, it’s time the run the server configuration program at: /opt/documentum/product/16.4/install/dm_launch_server_config_program.sh

dctm_008

dctm_009

Select the ‘Connection broker’ and click ‘Next’

dctm_010

‘Add a connection broker’ and click ‘Next’

dctm_011

Choose the ‘Native’ option for now and click ‘Next’

Native is fine for our development image, but it’s also fine to use the ‘Native and Secure’ option

dctm_012

Give the broker a name and leave to port as is. Click ‘Next’

dctm_0013

And click ‘Next’

dctm_014

And ‘Next’ again with the ‘Finish configuration’ option

dctm_015

You might find some startup issues for the appserver instance. This has to do with IPV6!

Look in the logging of the appserver instance tail -f /opt/documentum/wildfly9.0.1/server/DctmServer_MethodServer/log/server.log

Edit vi /opt/documentum/wildfly9.0.1/server/startMethodServer.sh and add -Djava.net.preferIPv4Stack=true to the JAVA_OPTS

1
JAVA_OPTS="$USER_MEM_ARGS -Djboss.server.base.dir=$JBOSS_BASE_DIR -Djava.net.preferIPv4Stack=true"

Now start this appserver again to see if things run better /usr/bin/nohup /opt/documentum/wildfly9.0.1/server/startMethodServer.sh &

Might be the case you also need to start the connection broker again with /opt/documentum/dba/dm_launch_ConnectionBroker

Logging for the connection broker can be found here: tail -f /opt/documentum/dba/log/docbroker.win-5skkmburvo7.mydomain.com.1489.log


Service for the ‘Connection broker’

Let’s create a new file sudo vi /usr/lib/systemd/system/dm_connectionbroker.service and add this content:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Documentum 16.4 Connection Broker
After=network.target

[Service]
Type=forking

User=otadmin
Group=otadmin

ExecStart=/opt/documentum/dba/dm_launch_ConnectionBroker
ExecStop=/opt/documentum/dba/dm_stop_ConnectionBroker

[Install]
WantedBy=multi-user.target

Reload the services daemon: systemctl daemon-reload

And enable the service: systemctl enable dm_connectionbroker.service

Also Start/Stop/Status are available now: systemctl start|stop|status dm_connectionbroker.service


Repository

This is the component that will store all our information. Everything you save in a repository is called on object. An object contains 2 parts! This first part is the metadata which is stored in the database. The second part in the optional content which is saved on the file storage.

It’s time the run the server configuration program for the second time: /opt/documentum/product/16.4/install/dm_launch_server_config_program.sh

dctm_016

Select the ‘Repository’ option and click ‘Next’

dctm_017

‘Add a new repository’ and click ‘Next’

dctm_018

Leave the AEK passphrase ‘empty’ and disable the ‘Lockbox’ option. Hit ‘Next’

dctm_019

This screen is fine. Hit ‘Next’

dctm_020

Also, this is fine. Hit ‘Next’

dctm_021

Fine…’Next’

dctm_022

Fill in the form like this, but might be anything you like except for the service name which should be the same as added to the /etc/services

  • Repository name: aw_repo
  • Repository ID: 1234321
  • Description: AppWorks Repository
  • Service name: dm_repo1

Hit ‘Next’

dctm_023

Make sure the ‘Connection Broker’ is running and hit ‘Next’

dctm_024

Select the ‘Native’ connection mode (as configured in the Connection Broker setup) and click ‘Next’

dctm_025

Let the setup create the database information. Hit ‘Next’

dctm_026

Provide the passwords. In my case ‘admin’ and hit ‘Next’

dctm_027

Leave as is. Hit ‘Next’

dctm_028

Provide the ‘dm_bof_registry’ user account with a password. We use the same password as the username. Hit ‘Next’.

The dm_bof_registry user is part of the Business Object Framework. BOF make it easy to extend Documentum functionality!

dctm_029

dctm_030

dctm_031

dctm_032

dctm_033

dctm_034

dctm_035

dctm_036

Hit the almost final ‘Next’

dctm_037

Hit the final ‘Next’ for ending the repository creation part.


Create a service for the ‘Repository’

Give this command sudo vi /usr/lib/systemd/system/dm_repository.service and add this content to the file:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Documentum 16.4 Repository
After=dm_connectionbroker.service

[Service]
Type=forking

User=otadmin
Group=otadmin

ExecStart=/opt/documentum/dba/dm_start_aw_repo
ExecStop=/opt/documentum/dba/dm_shutdown_aw_repo

[Install]
WantedBy=multi-user.target

Reload the services daemon: systemctl daemon-reload

Enable the service: systemctl enable dm_repository.service

Start/Stop/Status: systemctl start|stop|status dm_repository.service

Logging can be found here tail -f /opt/documentum/dba/log/aw_repo.log


Create a service for the ‘Java Method Server (JMS)’

Yes…It’s the appserver instance created during the ‘Connection Broker’ setup!

Give the command sudo vi /usr/lib/systemd/system/dm_jms.service with this content:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Documentum 16.4 JMS
After=dm_repository.service

[Service]
Type=simple

User=otadmin
Group=otadmin

ExecStart=/usr/bin/nohup /opt/documentum/wildfly9.0.1/server/startMethodServer.sh &
ExecStop=/opt/documentum/wildfly9.0.1/server/stopMethodServer.sh

[Install]
WantedBy=multi-user.target

Reload the services daemon: systemctl daemon-reload

Enable the service: systemctl enable dm_jms.service

Start/Stop/Status: systemctl start|stop|status dm_jms.service

The Wildfly appserver console can be reached on the URL: http://192.168.56.107:9060


Deploy a Documentum client

Now it’s time to create a client on our local machine (not the VM). We will not cover this part in this post as it is not needed for the AppWorks platform!

For Documentum we can use the Documentum Administrator client to login on our repository. This client can be downloaded also from the support side. It’s a .war file which can be deployed on a tomcat instance. Make sure you run the correct java version with the correct tomcat version. After the .war deployment you need to make sure the ‘dfc.properties’ of the clients point to the correct repository. Here is an example for my installation.

1
2
3
4
5
6
7
8
dfc.docbroker.host[0]=192.168.56.107
dfc.docbroker.port[0]=1489
dfc.globalregistry.repository=aw_repo
dfc.globalregistry.password=dm_bof_registry
dfc.globalregistry.username=dm_bof_registry
dfc.session.secure_connect_default=native
dfc.date_format=dd/mm/yyyy hh:mi:ss
dfc.tracing.enable=false

Expose ports (Optional)

It could be that both the repository and connection broker service are not reachable from outside the VM. Run these commands:

sudo netstat -ltnp | grep 1489

sudo netstat -ltnp | grep 47625

1
2
tcp        0      0 127.0.0.1:1489          0.0.0.0:*               LISTEN      5231/./dmdocbroker
tcp 0 0 127.0.0.1:47625 0.0.0.0:* LISTEN 5394/./documentum

Then 127.0.0.1 is your problem here. It should be 0.0.0.0 or the correct IP.

For the connection broker you can start it like this to solve the problem

sh /opt/documentum/dba/dm_launch_default -host 192.168.56.107

For the repository you need to edit the server.ini

vi /opt/documentum/dba/config/aw_repo/server.ini and add

  1. host = 192.168.56.107 in the [SERVER_STARTUP]
  2. host = 192.168.56.107 in the [DOCBROKER_PROJECTION_TARGET]

After restart of both the services they should be reachable from outside the VM.


IDQL and IAPI

It is not required to have an end-user client because Documentum provides some basic tooling to view things in the repository. These tools are the IDQL and IAPI tools.

Documentum Query Language

DQL is a subset of SQL with specific Documentum functionality. So, we can do all kind of query statement like a SELECT or on UPDATE. A DQL reference guide can be found in PDF format on the support side.

Application Programming Interface

API is the low-end communication from client to server. With this tool you can call specific function on 1 object. Like a SET or a CHECKOUT. Also, for API there is a reference guide available.

Both tools run under the JVM delivered with Documentum (version 8), but for AppWorks we installed JVM version 11 and pointed also to this version from the $LD_LIBRARY_PATH variable with $LIB_PATH. For this to work you need to modify the $LD_LIBRARY_PATH variable so it only finds the Java 8 libraries:

export LD_LIBRARY_PATH=/opt/documentum/product/16.4/bin:/opt/documentum/java64/1.8.0_152/jre/lib/amd64/server

After this change you should be able to run

/opt/documentum/product/16.4/bin/iapi aw_repo

Type ‘quit’ to exit

/opt/documentum/product/16.4/bin/idql aw_repo

Type ‘quit’ to exit

Use export LD_LIBRARY_PATH=$LIB_PATH:/opt/opentext/AppWorksPlatform/defaultInst/lib:/opt/documentum/product/16.4/bin to get back to the original settings!

Also make sure that your ‘dfc.properties’ vi /opt/documentum/config/dfc.properties is pointing to the correct IP address or hostname dfc.docbroker.host[0]=192.168.56.107.

Should all be fine from the initial installation now.


Performance tweaks

As a last step we will do some tweaking as I see the VM we’ve created gets a bit slow on the resources it was initially applied too. That was 9Gb of RAM with 2 CPU’s.

You can add extra memory to the machine, but we also tweak the services of in this case Documentum.

Let’s start with the JMS service

Edit vi /opt/documentum/wildfly9.0.1/server/startMethodServer.sh and update the memory settings:

1
USER_MEM_ARGS="-Xms512m -Xmx512m -Xss256k -XX:+DisableExplicitGC"

Restart the service systemctl stop|start dm_jms.service

Then we have the Repository service

Edit vi /opt/documentum/dba/config/aw_repo/server.ini and update these values

1
2
3
4
5
method_server_threads = 3
start_index_agents = F
use_estimate_search = F
#This one is not available yet, but as we disabled IPV6 on the VM on another post this is a logic setting to do.
ip_mode = V4ONLY

Restart the service systemctl stop|start dm_repository.service


Mail settings

Documentum can use an SMTP server for sending out mail. If it sends out a mail is configured in the server.ini with the option mail_notifcation = true. When not configured TRUE is the default value.

Only Documentum and specific the repository is not yet aware of an SMTP server. So, we’ll add one to the service with the IDQL tooling.

Start IDQL as explained before and run this DQL query:

SELECT r_object_id, object_name, r_host_name, mail_method, smtp_server FROM dm_server_config

Give a ‘go’ command after the <Enter> to run the query!

You’ll see the SMTP server is empty. Let’s update it:

UPDATE dm_server_config OBJECT SET smtp_server = 'localhost'

The ‘mail_method’ can be left empty as the default value will be ‘dm_event_sender’. This one is pointing to a script located here: less /opt/documentum/product/16.4/bin/dm_event_sender.ebs

Then the installation owner ‘otadmin’ needs to have a mail address to send information to

SELECT r_object_id, user_name, user_address FROM dm_user WHERE user_name = 'otadmin'

You’ll see the mail address of the user is not valid. Update can be done like this:

UPDATE dm_user OBJECT SET user_address = 'otadmin@mydomain.com' WHERE user_name = 'otadmin'

Restart the repository to apply the changes!

Now regularly check your mail for the ‘otadmin’ user with the already configured Thunderbird client from another post.


Not needed, but when %^^$&% hits the fan on database level sudo -u postgres psql

  • \l for listing the databases
  • \c dm_aw_repo_docbase to connect to the database
  • DROP DATABASE dm_aw_repo_docbase;
  • select * from pg_tablespace;
  • DROP TABLESPACE dm_aw_repo_docbase;
  • select * from pg_roles;
  • DROP ROLE aw_repo;

And that give us a ‘DONE’ we can be proud of. We have made Documentum available for our AppWorks platform where we can save our data in a structured way. Next step is to connect these 2 platforms to each other. Have a great day and I see you in the next post. Please let me know your thoughts in the comments and weather you would like to get more information about the end-user clients for Documentum.

Don’t forget to subscribe to get updates on the activities happening on this site.