These are some of the frequently asked questions on the installation, upgrade, and site admin related activities in TeamForge.

TeamForge upgrade fails when migrating Baseline database to the latest schema. This happens when upgrading from TeamForge 18.3 to 19.0. What should I do?


Run the following SQL command on the Baseline server and then provision TeamForge.

CREATE TABLE snpsht_baseline_field_value
baseline_id character varying(32) COLLATE pg_catalog."default" NOT NULL,
id character varying(32) COLLATE pg_catalog."default" NOT NULL,
field_id character varying(32) COLLATE pg_catalog."default" NOT NULL,
is_default_value boolean NOT NULL,
value character varying(255) COLLATE pg_catalog."default",
metastatus_id integer,
display_order integer NOT NULL,
is_deleted boolean NOT NULL,
CONSTRAINT pk_snpsht_baseline_field_value PRIMARY KEY (baseline_id, id)

The teamforge apply-permissions command, when run, removes the setcap IDs. What should I do?

The teamforge apply-permissions command, when run, removes the setcap IDs for /var/www-local/fcgi-bin/cliserver.fcgi. As a workaround, run the following command immediately after running the teamforge apply-permissions command:

setcap cap_setuid,cap_setgid,cap_sys_chroot+iep /var/www-local/fcgi-bin/cliserver.fcgi

I have Git and Subversion on separate servers. I am getting a TeamForge system error when I try to access an existing repo. What should I do.

Make sure that TeamForge, Git and Subversion servers have their time and date synchronized.

If you have Git integration on a separate server, both TeamForge and Git servers must have their time and date synchronized. Similarly, If Subversion is on a separate server, both TeamForge and Subversion servers must have their time and date synchronized.

What should I do if the Reports Database migration fails while upgrading to TeamForge with the following error.

Error Message

"Caused by: org.postgresql.util.PSQLException: ERROR: could not create unique index "schema_version_pk"
Detail: Key (surrogate_id)=(1) is duplicated"
  1. Verify the schema_version table for multiple entries.
    1. Connect to the Reports Database.
    2. Run select * from schema_version; and verify if the schema_version table has two entries such as the following.

      major minor sp hotfix
      17 11 0 0
      17 11 0 0
    3. If yes, proceed with the following workaround steps.
    4. Run the following commands and confirm the schema_version table entries in the file /tmp/datamart_schemaversion.txt
      \o /tmp/datamart_schemaversion.txt
    5. Delete one of the entries.
      delete from schema_version where ctid not in (select max(ctid) from schema_version group by major,minor,sp,hotfix);
    6. Verify that only one entry exists and provision TeamForge.
      select * from schema_version; 
  2. Provision services.
    teamforge provision

Why am I getting “Could not connect” status for my email and search server?

On the System Tools page, when you see “Could not connect status for search and email servers,” you must stop and start your process.

You may also need to set the JAVA_HOME environment variable to the location of your JDK.

The stop/start Phoenix commands:

sh /opt/collabnet/teamforge/runtime/scripts/ stop
sh /opt/collabnet/teamforge/runtime/scripts/ start

Why are the dynamic images that TeamForge creates broken?

If you have a fresh install of TeamForge and you’re noticing that the dynamic images are not correct, you may be missing a library that is needed to create the images.

The easiest way to find this is to check and see if you have the xorg-x11-depreciated-libs rpm installed:

rpm -qva | grep xorg-x11-depreciated

Watch for the results. If you see that you have the xorg-x11-depreciated-libs rpm installed, and after a server restart you’re still not seeing the images, please open a support request. If you do not have the xorg-x11-depreciated-libs rpm installed, it can usually be installed by performing a simple up2date xorg-x11-deprecated-libs and restarting TeamForge.

Due to firewall restrictions I cannot send email from James. How can I resolve this?

If James is unable to send email directly due to firewall restrictions, or mail being rejected from the application servers IP address, you may have to configure it to use a gateway mail server to send outgoing messages through.

To do this, you will need to add the following to the <mailet match="All" class="?RemoteDelivery"> directive in the james config file at /opt/collabnet/teamforge/james/james-<version>/apps/james/SAR-INF/config.xml:


You should find these commented out on line 362 of the config file. If your gateway mail server requires authentication to send email, you may also add the following directives:


Why am I not getting any error messages when executing the Subversion upgrade script?

Error messages may come when Subversion is installed with a dependent package from an unknown source.

The Subversion working copy script assumes that Subversion is installed with the dependent packages from a proper source repository(RHEL/CollabNet). If you install any dependent packages from any unknown source that is not authorized by RHEL/CollabNet, it will result in inconsistency and this cannot be handled by the Subversion working copy script.

Why do I get a JBoss error “failed to start in 240 seconds, giving up now” while installing TeamForge?

You get this error when the system’s RAM is less than the minimum recommended value of 4GB. However, it’s most likely that JBoss will start within a few minutes.

To make sure that JBoss starts up, check the service.log file using this command:

tail -f /opt/collabnet/teamforge/log/apps/service.log

If you see messages like the following, the TeamForge application will start in a few minutes.

 Check Port Available PASSED: Port 4444 on localhost is available
 Check Port Available PASSED: Port 4445 on localhost is available
 Waiting for application server to start up.. this can take a few minutes.

JBoss crashed with out of memory error, how do I prevent this?

This can indicate that the JVM heap size is set too small.

You can adjust this by changing the -Xms and -Xmx settings of the JBOSS_JAVA_OPTS token in site-options.conf and rebuilding runtime.

This will appear if the JBoss application server has crashed and you find this error in the server.log:

INFO [STDOUT] java.lang.OutOfMemoryError: Java heap space

The default maximum heap size of 640MB can cause issues on a heavily used site. If the CTF application is the only thing running on the server, you can increase this to half of the total physical ram on the machine. This should still allow enough memory for the OS and other necessary processes. If you are also running the app, database and scm on the same machine a maximum heap size of 1/4 or the total ram maybe a better setting. Determining the right JVM settings for your install will require testing with your particular usage patterns and database.

You can view the current memory usage under the JVM Environment section of the JBoss webconsole at http://:8080/web-console/. You will need to log in using the CTF admin password.

JBoss status is in ‘starting’ for a long time. How to have JBoss started successfully?

If JBoss is not started successfully (status remains ‘starting’ for a long time), you may have to wait until it starts up successfully or you can kill JBoss process (using its PID) and restart it again.

The following error messages show up when you try to start or stop JBoss respectively while its status is still ‘starting’:

Cannot execute action as another process is holding the lock.

Cannot stop service 'jboss' while in status 'starting'

To kill the JBoss process:

kill 9 <JBoss PID>

Why am I not able to see the status of the Postgres in the collabnet startup script?

You may not be able to see the status of the Postgres if the host name of the HOST_ token is set to localhost in a SaaS multibox setup.

The Teamforge installer fails to add the IP address of the database box to the listen address in the postgresql.conf file if the host name of the HOST_ token is set to localhost in a SaaS multibox setup.

Why does the SOAP service show “could not connect” on the Server Status page when everything else appears to work?

This can be caused by an incorrect host name in /etc/ Rebuilding runtime will correct this, assuming the hostname is set correctly in the site-options.conf file.

This issue can occur when using the script to restore data from a TeamForge instance with a different hostname.

Why does startup fail or produce errors?

If TeamForge fails to start up, or is starting but is throwing errors on every page, then typically something went wrong during the JBoss bootstrap process.

Fortunately, JBoss logs this process to: /opt/collabnet/teamforge/jboss/jboss-<version>/server/default/log/boot.log.

TeamForge writes its startup and shutdown info, as well as any system errors to /usr/local/ soureforge/log/server.log. If you encounter a system error while using TeamForge, it is logged here. Additionally, if you see an ‘exid’ string in the application, the Java stack trace for that exid will be logged in this file.

Why do I get a URL “not found” or “moved permanently” error after applying a patch/upgrade?

If you are experiencing a URL “NOT FOUND” or “MOVED PERMANENTLY” error after applying a patch or upgrade, then set Apache ProxyPreserveHost token to ON in the httpd.conf file.

If you have applied a patch or upgrade and are now receiving the following error:

<The document has moved <a href="https://www.<site>/sf/global/jsp/buildtime.html" 
    format="html" scope="external">here</a>.</p>
<hr> <address>Apache/2.2.3 (Red Hat) Server at www.<site>.com Port 80</address> </body></html>
Not Found 
The requested URL /sf/sfmain/do/userPicker/projects.pftool//sfmain/do/listMonitoringUsers/projects.pftool/discussion.
announcements was not found on this server

Or if you are trying to add users to a monitoring list, and are receiving the following error:

Not Found
The requested URL 
    was not found on this server.    

Set the ProxyPreserveHost token to ON in the httpd.conf file.

How do I require approval for new user accounts?

You can configure the system so that new users can create their own accounts, but the accounts are not activated until a site admin approves them.

To enable this mode of operation, add the following line to /opt/collabnet/teamforge/sourceforge_home/etc/


Once this line has been added to the file, restart TeamForge for it to take effect.

Please note that site admins can still create accounts for new users and they will not be held for approval. Also note that the user will receive an email from TeamForge telling them to confirm their password by clicking on the given link, and the link will not work. The password is properly set on account approval.

How does TeamForge use Velocity templates?

Velocity is the templating language that CollabNet TeamForge uses to render areas of the site with dynamic information.

You can override the instructions contained in any of these Velocity templates by placing a file of the same name in the equivalent path in the branding repository in the look project on your site.

Velocity templates are located in the templates directory in the branding repository.

Velocity File Description
menu_bar.vm Controls the rendering of the top bar across all pages in the system. Displays a small login form, the site logo and current user information as well as the search and projects drop down menus.
blank_menu_bar.vm Contains only the top logo, without the menu that appears below it.
body_header.vm Rendered immediately after the opening body tag. If a site requires everything to be contained in some other container, this template can be used.
body_footer.vm Rendered immediately before the closing body tag. If a site requires everything to be contained in some other container, this template can be used.
button_bar.vm Controls the rendering of the bar beneath the menu bar, which contains the 'Quick Jump" link as well as the buttons that appear on any project page (the one containing the applications). Site admin pages, user settings pages (e.g. my workspace, dashboard) and project pages use different sets of buttons that are passed into this template for rendering.
content_header.vm Rendered after the button bar; wraps the actual contents of the page being viewed.
content_footer.vm Rendered before the body footer; wraps the actual contents of the page being viewed. Contains the Copyright notice.
sfmain/home.vm Velocity template that generates the site home page.
sfmain/project_home.vm Velocity template that generates the default project home page.

What happens when log files get too big?

Log files can grow very large over time. To maintain reasonable log file sizes, log files are rotated automatically on a schedule.

During this automatic log rotation, live logs are archived every day at 00:00.

Archived logs are stored in compressed form in a directory alongside the live log. For example, if live logs are stored at <LOG_DIR>/{apps, apache,...}, then compressed log archives are stored at <LOG_ARCHIVE_DIR>/{apps, apache,...}.

The directory structure of the log directory is preserved in the log archive directory.

How do I make the monitoring messages be sent from Forge Administrator?

You can change the default behavior for site options by changing the value from “false” to “true” in this statement:


If this site option token is set to true, then “From:” field is the Forge Administrator, else it is from the user who made the change that initialized the monitoring email.

How do I enable post-commit logging?

You do this by editing the file.

Edit the /opt/collabnet/teamforge/runtime/sourceforge_home/integration/ file.

Search for log.setLogging(False) and modify the value from False to True.

What is the suggested log configuration for a production system?

To troubleshoot installation issues, the default log4j configuration is set to DEBUG. This can cause the log files to become quite large. Once your system is successfully installed and in use, you should drop the log levels down to INFO.

See Change the Logging Level on Your Site for how to do this.

If you still have a problem with very large log files, you may want to set up log rotation. Log rotation means to move the log files to a compressed archive to keep them under control.

The site administrator can remove these links by checking out and editing the branding repository from the look project.

To remove the build and test links from your TeamForge navigation panel, check out the branding repository from look project and reconfigure the links as shown in the following code sample:

[branding_stage]$ cd branding
[branding]$ mkdir -p i18n/com/vasoftware/sf/i18n/apps/sfmain
[branding]$ echo "configure_build_and_test.systemUrl.default=" > i18n/com/vasoftware/sf/i18n/apps/sfmain/
[branding]$ svn add i18n
A i18n
A i18n/com 
A i18n/com/vasoftware
A i18n/com/vasoftware/sf
A i18n/com/vasoftware/sf/i18n
A i18n/com/vasoftware/sf/i18n/apps
A i18n/com/vasoftware/sf/i18n/apps/sfmain
A i18n/com/vasoftware/sf/i18n/apps/sfmain/
[branding]$ svn commit
" Old: "enter paragraph information and use html tags for bullet points.

How do I resolve timeouts when calling web services?

This is due to the requested operation taking longer then your client SOAP stack is configured to wait before throwing a timeout. You will need to reference your client documentation to see how to update the timeout properties of the connection.

For AXIS in java, you can do this via the property.

System.setProperty("", "600000"); //10 minute timeout, in ms