Configuring the MS-DTC for a Fabasoft Folio environment
Last update: 4 August 2017
Summary
This article describes the steps to configure Microsoft Distributed Transaction Coordinator (MSDTC) in a Fabasoft Folio environment.
MSDTC is used in Microsoft Windows environments with Microsoft SQL Server. Enviroments using Oracle or PostgreSQL instead use Fabasoft's own implementation, Distributed Transaction Manager (DTM).
Please note: A hotfix for Fabasoft Folio (and subordinated Fabasoft eGov-Suite and eCRM-Suite) is available to improve MS-DTC usage of Fabasoft Folio. Fabasoft recommends to install this hotfix. See details about the hotfix .
Information
Distributed transactions ensure the consistency of transactions across the borders of a database/tablespace. Fabasoft Folio uses 2-phase-commit with distributed transactions to ensure consistency. If the distributed transaction coordinator fails, Fabasoft Folio will result in errors indicating a DTC problem.
Possible errors and messages indicating a problem with MSDTC
The following error messages indicate a problem with MSDTC. The messages may appear in the Webbrowser client, Windows Eventlog of backend- and other Folio servers, and/or Fabasoft Tracer output.
- No DTC found
- Cannot commit distributed transaction
- Bootstrap error: Unable to contact the Microsoft DTC
- Could not prepare distributed transaction
- The transaction manager has disabled its support for remote/network transactions
- The transaction has already been implicitly or explicitly committed or aborted
- New transaction cannot enlist in the specified transaction coordinator
Solution
Note: In the following, Microsoft Distributed Transaction Coordinator is abbreveated as MSDTC for easier readability.
Fabasoft Folio Configuration
- In the Current Domain object, check if the property " Use 2-phase-commit" is activated. This needs to be enabled (default) to use distributed transactions.
Microsoft Windows Configuration
- Make sure MSDTC is configured as cluster resource in a cluster enviroment (usually backendservers and database servers).
- Make sure MSDTC is started on other servers using Fabasoft Folio Kernel (web servers, conversion servers, Mindbreeze servers etcetera)
- On non-clustered servers using Fabasoft Folio, in Windows Services, we recommend to change the startup type from Automatic (Delayed Start) to Automatic . Otherwise the Fabasoft Folio Kernel may fail to connect to MSDTC after a server restart.
- Enable MSDTC Network DTC Access on every Fabasoft Folio Server (backend, web server, conversion servers, etcetera) according to Microsofts recommendations:
- Windows 2008: http://technet.microsoft.com/en-us/library/cc753510(v=ws.10).aspx
- Windows 2003: http://support.microsoft.com/kb/817064/en-us
- On clustered servers, make sure to set these settings in the Clustered DTC, not the Local DTC.
- If Windows Firewall is enabled on the servers, create a Windows Firewall exception for MSDTC: http://technet.microsoft.com/en-us/library/cc725913(v=ws.10).aspx
- For other Firewall software, enable MSDTC network communication according to the possibilities of your Firewall software.
After the changes were performed, test distributed transactions as explained in this Fabasoft KB article .
How to disable MSDTC distributed transactions
Warning: It is strongly recommended to leave distributed transactions enabled. Disabling distributed transactions means that multiple database transactions inside a Fabasoft Folio transaction are not monitored anymore. If a single database transaction inside a Folio transaction fails, Folio is not able to rollback the other database transactions. This may lead to inconsistency in the database.
In the case of problems configuring MSDTC you can disable the MSDTC usage.
This can be done in two ways:
- Disabling MSDTC usage per Kernel/Server instance
- Disabling MSDTC for the whole Fabasoft Folio Domain.
Disabling MSDTC usage per Kernel/Server instance
- Logon as the webservice (or other service's Windows user)
- Open regedit.exe and navigate to HKEY_CURRENT_USER\Software\Fabasoft\Environment
- Create a string value named ENABLEDTC with the value False
- Restart the webservice or Kernel instance
Disabling MSDTC usage for the whole Fabasoft Folio Domain
- Open the Fabasoft Webbrowser Client
- Navigate to the Domain Administration, Domain objects
- Open the Current Domain object
- Uncheck the property Enable 2-Phase Commit and apply the change.
- Restart all Kernel instances to apply the change.
If you cannot open the Fabasoft Webbrowser Client because of a MSDTC error, first disable MSDTC by the environment variable.
Please re-enable MSDTC usage after you have fixed MSDTC in your environment.
Applies to
- Fabasoft Folio on Microsoft Windows and Microsoft SQL-Server (all versions)
- Fabasoft eGov-Suite on Microsoft Windows and Microsoft SQL-Server (all versions)
- Fabasoft eCRM-Suite on Microsoft Windows and Microsoft SQL-Server (all versions)