With the following steps, you will be able to setup CSOL functionality for SAP Solution Manager 7.2, screenshots from a Solman 7.2 SP05 system.
In addition, I will try to give tips and tricks for the configuration of this functionality and also troubleshooting tips for the possible issues when using this functionality.
Software changes are done in one system and will be transported to the system landscape which is linked to this system by transport routes of the Transport Management System. But sometimes there are several developers that require making parallel changes to the same workbench or customizing objects within one landscape.
The cross-system object lock ensures that when an object is changed in a managed system, it is locked in the SAP Solution Manager system. Depending on the conflict scenario, this prevents multiple edits of the same object in different transport requests or projects at the same time. This applies to all managed systems and clients for which the cross-system lock is active.
A typical user case of CSOL is:
1. A developer modifies an object in the development system and saves into a transport request created/managed by ChaRM.
2. As soon as the object is saved into a transport request some lock entries are created in the central SAP Solution Manager system containing the objects information in that request for all production systems which it will be delivered to
3. Another developer tries to edit the same object in the same development system, or in another development system which will be delivered to at least one production system of the first transport request, and then tries to save the change into another transport request of another change document
4. A lock conflict will raise and one popup screen with error (termination) or warning message for the second developer will be shown to inform him that the same object is currently locked by another transport request and it is not yet imported to the production system
5. When the first transport request is successfully imported to all production systems and the first transport request no longer exists in the import queue of the production systems, then those lock entries will be removed in the SAP Solution Manager system, and then another developer can edit those objects without any restriction. If the import is failed and you have corrected it manually, in CSOL we will treat it the same as successfully imported request.
Before using CSOL functionality, it must be activated. The activation contains two parts: one is globally on the central SAP Solution Manager system; the other is locally for each different managed development system.
1.1. Globally activate the cross-system object lock
In Solman 7.2, until SP07, call /n/TMWFLOW/CONFIG_LOCK:
Since SP07 open the Administration cockpit→ Cross-System Object Lock and Downgrade Protection tab and mark Activate Cross-System Object Lock:
By executing report se38: /TMWFLOW/CONFIG_SERVICES you can decide if you want to get the ChaRM reporting at object level or not.
1.2. Locally activate CSOL for the managed development system
In transaction /sm_workcenter - SAP Solution Manager Fiori Launchpad open the Administration Cockpit tile.
Go to Landscape Overview tab, select your development system and client and under Upon-Saving Checks you will see these two modes: On (Legacy CSOL) and On
Since SAP Solution 7.2 SP05 ChaRM delivered a new Back RFC Check Support functionality, see the details in 2402504 - ChaRM: Back RFC Check Support.
Please notice that the recommendation is to use always the On mode.
Technically this On mode would require that:
- In the managed development system, SAP Note 2402504 - ChaRM: Back RFC Check Support is implemented.
- In the managed development system the most recent Solution Tools Plug-In (ST-PI) is installed. The required minimum version is ST-PI 2008_1_7xx SP 16 or ST-PI 740 SP 6, respectively.
Note: The recommendation is to use always the On mode.
A system with the clients will appear in the Landscape Overview tab if the system is used in a ChaRM cycle.
Note: If you get error “No RFC authorization for function module /SDF/TMW_CHECK_READ_CFG” when setting the Upon-Saving Checks to On or On (Legacy CSOL) then check if you have a dump in st22 like RFC_NO_AUTHORITY "No RFC authorization for function module "/SDF/TMW_CHECK_READ_CFG".
User "SMTMSID" in client XXX attempted to execute function module "/SDF/TMW_CHECK_READ_CFG" from function group "/SDF/TMW_TRANS_CHECKS", but does not have the relevant RFC authorization.
SMTMSID is the user for the TMW RFC destination from the Solman to the managed system:client, check the profile SAP_SOLMAN_READ_702 according to SAP Note 2257213 -Authorizations for RFC users as of SAP Solution Manager 7.2 SP02
Note: If you get error "Fail to switch the Upon-Saving Checks for the system SID.." "No administration authorization in Change and Transport System" TK620
Please see KBA 2424269 - Fail to switch the Cross-System Object Lock check for the system
2.1. Settings in the managed system
2.1.1. When selecting the On mode in the Administration cockpit in the Landscape Overview tab, for your development system and client, under Upon Saving Checks mode, you will get the correct BACK RFC destination in table /SDF/TMW_ADM in the managed system.
This BACK RFC destination (SM_<SOLMAN_SID>CLNT<CLIENT>_BACK) is automatically generated from Managed system setup and the RFC user SMB_<Managed development SID> is also automatically generated with User Type System. This SMB_<Managed development SID> user needs to have authorizations from role SAP_SOLMAN_BACK according to Note 2257213 - Authorizations for RFC users for SAP Solution Manager 7.2 SP02 and higher.
Note: For security reasons, it is not recommended to use TRUSTED destinations.
2.1.2. When selecting the On (Legacy CSOL) in the Administration cockpit in the Landscape Overview tab, for your development system and client, under Upon Saving Checks mode, you have to perform these actions in the managed system:
- Create an RFC connection like SM_XXXCLNTYYY_CSOL, where XXX is the SID of the SolMan system, YYY the client where ChaRM is setup. You will require to create an RFC connection with a special user of the type 'S' (Service). Assign to the service user at least the SAP_SOLMANTMWCOL role.
- Create a SOL_CONNECT entry in /nSM30 > BCOS_CUST like
SOL_CONNECT W SM_XXXCLNT001_CSOL CUST620 1.0
Please only select this mode On ( Legacy CSOL) if you managed system cannot fulfil the required technical needs explained above.
2.2. Settings in the SAP Solution Manager system: Lock conflict analysis scenarios
When you are activating CSOL globally, you can see these options:
The following aspects will be considered when determining the message type for CSOL conflict popup:
- Cycle Relation (Same cycle/Different cycle): Cycles to which transport requests are assigned
- Cross: Transport requests belong to the same cycle or to different cycles (Cycle(s) are ignored)
- Specific: Transport requests belong to the same cycle
- Different: Transport requests belong to different cycles
- Change Type Relation (Change Transaction Type, also for QGM changes)
- Urgent Only: Both transport requests belong to different urgent changes
- Partial Overlapping: At least one of the two transport requests belongs to an urgent change
- Overlapping: Always (System ignores the type of change to which the transport requests belong)
The selected lock conflict analysis scenario will determine the message type when the object lock has been found.
If you select Warning Only the previous settings are ignored and always a warning message is displayed for all conflicts.
Track-Specific CSOL Configuration
You can use the track-specific configuration to specify cross-system object lock (CSOL) configuration for each managed development system. These settings will override the general settings made when you activate CSOL globally.
You can specify the scope of each configuration row by the following categories:
•Managed development system name
•Managed development system type
•Managed development system client
You can use an asterisk (“*”) in these categories to let the configuration row match all possible values of the category.
For example, if you specify landscape “*”, branch “*”, cycle type “*”, managed development system name “DV1”, type “ABAP”, client “100”, the configuration row applies to all CSOL checks for transport requests created from the specified development system.
If you specify landscape “LANDSCAPE1”, branch “MAINTENANCE”, cycle type “*”, managed development system name/type/client “*”, the configuration row applies to all CSOL checks for transport requests that belong to cycles using the specified change control landscape and branch.
See more information in Track-Specific CSOL Configuration application help document.
By clicking in the Information button, you will get a detailed description of the lock conflict scenarios.
Since SAP Solution Manager 7.2 SP08 you can configure that specific Customizing objects or Workbench objects are excepted when you selected the Stop at Error mode, you can configure these settings in the Object-Specific Warning Mode Configuration section in the Administration Cockpit on the Cross-System Object Lock and Downgrade Protection tab.
Since SAP Solution Manager 7.2 SP10 you can configure the cross-system object lock and downgrade protection check to skip the check for PFCG role objects or for all customizing objects, more information here.
There is an enhancement of integration between CSOL and transport organizer introduced in SAP Notes 1895691 and 1900560. Previously CSOL is only able to prevent the change if it is done in official transport request saving popup. After both SAP Notes are implemented, system will be able to issue a warning/error before the change is started when the object is switched to edit mode, and even if the change is carried out manually in transport organizer transactions such as SE01 or SE09.
Note: QGM changes are treated as urgent changes.
As soon as a developer modifies an object in the development system and saves it into a transport request created/managed by ChaRM, some lock entries will be created on the central SAP Solution Manager system, by using the configured RFC in table /SDF/TMW_ADM if you selected Upon Saving Checks On mode, or in table TMW_ADM if you selected Upon Saving Checks On (Legacy CSOL) mode. These lock entries will contain the objects information in that request for all production systems which it will be delivered to.
The Change Manager can monitor all CSOL lock entries in Administration Cockpit in tab Cross-System Object Locks by choosing the appropriate search criteria:
Here the key fields are the production system/client, which means CSOL can only be used when the cycle contains at least one production system (even if it is a virtual system). If your cycle does not have a production system you cannot used CSOL.
If the changed object is a workbench object, then only if the transport request is released another user can try to modify the same object for another time and save into a different transport request.
However, if the changed object is a customizing object then another user can try to modify the same object for another time and save into a different transport request even when the first transport request is not released. But notice that when the first transport request is released what it is released if the active version of the customizing object at the release time.
When somebody tries to modify the same object for another time, the system will issue a popup to remind the user that this object is already locked in another transport request. If the popup is a warning message, then the second change can still be saved and some new lock entries will be created; if the popup is an error message, then the second change cannot be performed.
In Transport-Generic popup you can find the developer’s user account who was locking that object, together with the transport requests number which were used, and the ChaRM cycle ID where those transport requests were created.
3.1. Deletion of CSOL Lock entries
When the first transport request is successfully imported to all production systems and the first transport request no longer exists in the import buffer of the production systems, the change is
finalized and the object lock will be deleted automatically in CSOL. Then another developer can edit those objects without any restriction.
If the import is failed and you have corrected it manually, in CSOL we will treat it the same as successfully imported request.
Note: in the case that the lock entries have not been deleted from the /TMWFLOW/LOCK* tables then in the Administration Cockpit→ CSOL tab make a search of the involved transport request, this will recheck if the transport request is successfully imported to all production systems and that the transport request no longer exists in the import buffer of the production systems and delete the tables entries accordingly.
Besides that, user also can delete the locks manually but using the Remove icon, Several entries can be selected and remove at the same time:
This normally is needed when there are emergent changes which are blocked by existing CSOL locks. Authorization object SM_CM_DGPN will be checked for this deletion action.
3.2. Register of CSOL Lock entries
Also you can Register lock entries manually using the Register icon if for example CSOL was switch off at the time the same of the object was done:
It’s possible to select Development system via dropdown list.
Optionally, you may enter a TR with wildcard to reduce the searching scope.
You may enable the E-Mail notification functionality, so once the newly registered lock entries got CSOL conflicts, an E-Mail will be sent containing CSOL conflict list.
Hint: by default, if the TR was contained by a QGM Change/Urgent Change, the corresponding Change Manager will be automatically notified by E-mail. (Prerequisites are the email account has been maintained in the BP of the Change Manager.) An external receiver can be named with Additional E-Mail field. (Currently only email accounts within SAP domain can be supported.)
Execution Time can be specified.
3.3. Application Log
Display Application Log button will show you the last CSOL operations performed:
In SAP Solution Manager 7.2 the CSOL functionality does not support non-ABAP changes.
CSOL scenario is working when you are using two SolMan systems to manage the same system:client? the answer is no, I mean if in the managed system you can only have a BACK RFC destination maintained in sm30 BCOS_CUST for SOL_CONNECT, then only a SolMan can be used for all the scenarios using CSOL as starting point, like CSOL itself, DGP checks based on CSOL, retrofit.
CSOL scenario doesn't work in non-SAP GUI application scenario, such as: CRM Web UI, BRF+, Webdynpros, Fiori tiles.
The problem is that in non-SAP GUI application scenario, CSOL always ignores overall conflict type "warning", which is not always desired, and on "warning", the lock entries are not added to the lock tables, which is incorrect.
Please ensure that SAP Note 1591120 and 1640546 are implemented in the managed system. Then check the setting that you require for parameter CSOL_WAR_DIA_FREE_STRATEGY in dno_cust04, see the SAP Note 1591120 for details.
- Trying to save an object in non-sapgui scenario you get Error (500, Internal Server Error) and RAISE_EXCEPTION in class /SDF/SAPLTMW_CFW_POPUP in ST22, implement SAP Note 2904531.
5.1 CSOL popup is not shown in the managed development system
If Upon-Saving Checks are set to ON (Legacy CSOL) execute report TMW_CONTROL_PROJECT_LOCK in transaction SE38 on your development system and select option Read Client Data "X":
You will see if the CSOL is activated or not for the system:client where you are running the report, if it is activated you will see entry CSL X, and also the used RFC connection to the SAP Solution Manager where the lock entry is stored.
In the case that the CSOL is not activated you can run the same report with option Activate Project Lock.
If the CSOL popup still is not coming when editing/saving an object that already has a lock entry check that CSOL is globally activated.
If Upon-Saving Checks are set to ON mode then you need to run report above and also the same for report /SDF/TMW_CONTROL_BACK_RFC_CHK.
No CSOL popup will appear between two transport requests that belong to the same import group, see KBA 1995630 - No CSOL popup when working with one change document
Ensure that you created the transport requests from a change document for cycles having logical component with a production system:client filled, enter a virtual system:client if still you don´t have the production system. If there is not a system:client indicated CSOL will not work.
Check that SAP Note 2468171 - ChaRM: Dump DBIF_RSQL_TABLE_UNKNOWN for table /SDF/TMW_ADM on shadow systems is implemented.
5.2 SAP Solution Manager is down
If SAP Solution Manager is temporarily unavailable, see SAP Note 1528657 - Workaround when SolMan system is temporarily unavailable
If you have activated Cross System Object Lock functionality on your development system, then when your SAP Solution Manager system is down you will not be able to save your change to any transport request. Under such circumstances please manually run report TMW_CONTROL_PROJECT_LOCK in transaction SE38 on your development system, and choose Deactivate Project Lock before executing it.
If the ST-PI version of your development system is in alignment with SAP Solution Manager 7.2 SPS 5 and the Upon-Saving Checks are set to ON for this development system:client please also manually run report /SDF/TMW_CONTROL_BACK_RFC_CHK in transaction SE38 on your development system, and choose Deactivate Back RFC Check before executing it. After that the CSOL functionality will be deactivated locally for this development system only, please do not forget to activate it again when your SAP Solution Manager system is back.
When SAP Solution Manager is available again, you can activate the cross-system object lock by executing report TMW_CONTROL_PROJECT_LOCK selecting "Activate Project Lock" and report /SDF/TMW_CONTROL_BACK_RFC_CHK selecting “Activate Back RFC Check”.
Run TMW_TRKORR_LOCK_UPDATE report for the transport request in which you saved objects during the inactive period or use the Register option in the Administration Cockpit.
5.3. Update lock entries manually
Report TMW_TRKORR_LOCK_UPDATE can be executed on the development system to synchronize the object information from that system to CSOL lock tables in SAP Solution Manager.
This report must be executed by the transport request owner with the transport request number.
This report will be required for example if the SAP Solution Manager system was down and you deactivate the CSOL temporarily. Therefore, this report can also be used to upload that lock information when CSOL has been reactivated.
If you select the "Dialog mode" then you will see the same CSOL popup as when a user is doing the saving of the object to the transport request.
Register option is also possible as you can see in point 3.2. Register of CSOL Lock entries.
5.4. Bypass error messages for emergent changes
It might happen that your lock conflict will give the developer an error message when performing some emergent changes. In such cases, if you cannot move those previous transport requests which contain the locks to the production systems immediately, you may want to find a way to "ignore" those errors and "forcibly" save the change. In general, there are five ways which can be used for this purpose and you can choose any one of them to suit your own needs:
- Temporarily deactivate CSOL globally
- Temporarily deactivate CSOL locally
- Temporarily change the CSOL conflict scenario to a setting which will only show warning message in your lock case
- Set the Track-specific CSOL configuration for the specific case
- Manually delete those lock entries from previous requests in the Admin Cockpit CSOL tab
5.5. CSOL performance
If you detect performance issues during the creation of the CSOL entries in the SAP Solution Manager system please read SAP Note 1925605 - CSOL: low performance upon check or change document loading.
This SAP Note can only be implemented until SAPKITL710, however the note is given some performance hints like:
"2. You should consider cleaning up CSOL lock entries through the following steps: 1. Perform project-level import of transport requests into managed systems in their order on the transport track, finally into the production systems; 2. Query all lock entries via the CSOL Lock Monitor, which will clean up lock entries for imported TRs.
3. Monitor the database performance (using transaction ST05) when performing a CSOL check. You can do it through one of below ways:
a) if you saw a change document opening up very slowly, re-open the change document and monitor the database performance
b) if you don't have a change document with the performance issue, but you have an existing transport request that has a low performance, make sure you have SAP Note 1643642 implemented, run report TMW_TRKORR_LOCK_UPDATE on the managed development system, enter the request number, select "Dialogue Mode", and trace the database performance on the Solution Manager system while executing the report
4. If the performance issue isn't related to either /TMWFLOW/TLOCKP or /TMWFLOW/TLOCKPC, then this SAP Note doesn't apply to your issue. Otherwise, update the database index for the table (or tables) with which you have the issue.
a) For /TMWFLOW/TLOCKP, update index QRY if exists. Otherwise, consider creating a new index in this name, and remove all old indexes that are not in use. The index should have below fields in the listed order: hiobject, prod_sys, prod_client, sys, client, lasttrkorr, hikey, lokey.
b) For /TMWFLOW/TLOCKPC, update index R01 if exists. Otherwise, consider creating a new index in this name, and remove all old indexes that are not in use. The index should have below fields in the listed order: tabname, prod_sys, prod_client, sys, client, lasttrkorr, hikey, lokey.
5. If you're using an Oracle database management system, set the following Oracle parameter in the system:alter system set "_OPTIMIZER_SKIP_SCAN_ENABLED" = FALSE scope = both; For this parameter, refer to SAP Note 1577484."
Read also SAP Note 2073071 - DGP: performance issues and resolution carefully. This SAP Note if for DGP, but DGP is based on the CSOL entries for some checks like transport request release so it is relevant here.
Try to keep the number of entries in tables /TMWFLOW/LOCKPRN and /TMWFLOW/LOCKPCN as small than possible.
Check the number of objects of your transport request as try to keep it as small as possible.
One example, don´t use one single transport request for saving several roles, a mean one role can have for example 30 different objects.
Per each object in a transport request CSOL logic will check the already existing lock entries in table /TMWFLOW/LOCKPCN for the same object.
So if you save a role in a transport request already containing let say 1000 other objects then the CSOL logic will look into table /TMWFLOW/LOCKPCN for 1030 objects.
From the SAP Note you can read:
" Total Number of Lock Entries
Issue: You get message "Error when getting CTS lock entries for transport requests via RFC" when try to assign a large transport in to ChaRM/QGM; typically, the number of lock entries is in this request is above 100,000
Solution: Proceed as follows
- Check whether you can split the transport request into smaller pieces and then try to assign them to ChaRM/QGM
- If that is not possible, try to deactivate DGP/CSOL and then assign them to ChaRM/QGM. You may also transport this single request manually out of ChaRM/QGM"
So, check the number of lock entries for your transport request, if there are too many objects in one request, there could be performance issues.
5.6. Error NO TMS system SID (DOMAIN_SID) when saving an object in a transport request in the development managed system
It might happen that you get this error “No TMS system SID (DOMAIN_SID)” LMDB_APPLICATION 038, and then error “External error: Object not locked” STMWFLOW 026 when trying to save an object in a transport request.
Check that the development system is listed in the Solution Manager LMDB under Transport Domains tab as the error is given by the LMDB.
5.7. Lock entries no deleted
In the case that the lock entries for the transport request have not been deleted from the /TMWFLOW/LOCK* tables, when the transport request is successfully imported to all production systems and the first transport request no longer exists in the import buffer of the production systems.
Then in the Administration Cockpit→ CSOL tab make a search of the involved transport request, this will recheck if the transport request is successfully imported to all production systems and that the transport request no longer exists in the import buffer of the production systems and delete the tables entries accordingly.
See KBA 2665995 - CSOL entries not deleted automatically after import into production.
6. Authorization object
SM_CM_DGPN is the authorization object to control access Cross-System Object Lock functions in Change Management.
7. CSOL tables
/TMWFLOW/LOCKPCN: Project Lock Table for Customizing Objects
/TMWFLOW/LOCKPRN: Project Lock Table for Repository Objects
/TMWFLOW/SERVICE: Globally activation info for SOLMAN system
TMW_ADM: Table on managed system showing if system:client is having ON (Legacy CSOL) mode activated CID= CSL and CID_ACTIVE=X and the RFC destination to the SAP Solution Manager where the lock entry will be saved.
/SDF/TMW_ADM: Table on managed system showing if system:client is having ON mode activated CID= BRC Back RFC Check
SAP Help: Cross-System Object Lock
1703391 - General note for managed systems in Change Management
908496 - Cross-system object locking: Editor control
1895691 - CSOL: Locks are not written by Workbench Organizer
1591120 - CSOL: Inconsistency in non-SAP GUI application scenario
2004134 - CSOL - RFC from managed system to Solution Manager system.
2432694 - How to ensure that CSOL is deactivated in a managed system
2468171 - ChaRM: Dump DBIF_RSQL_TABLE_UNKNOWN for table /SDF/TMW_ADM on shadow systems
Solution Manager system
1528657 - Workaround when SolMan system is temporarily unavailable
2402504 - ChaRM: Back RFC Check Support
2448157 - ChaRM: Redundant CSOL calculation when opening change document
2257213 -Authorizations for RFC users as of SAP Solution Manager 7.2 SP02
2015471 - CSOL: conflict detected for transports in the same normal change/defect correction after a new cycle is generated
1900560 - CSOL: Enhanced Transport Organizer Integration
2161500 - Update of CSOL role SAP_SOLMANTMWCOL since ST 7.1 SP10 to SP13
2004134 - CSOL - RFC from managed system to Solution Manager system
1826789 - Preliminary import actions are not deleting CSOL lock entries
1995804 -CSOL lock entries not deleted when working with Urgent change documents
1995630 - No CSOL popup when working with one change document
1591120 - CSOL: Inconsistency in non-SAP GUI application scenario
1925605 - CSOL: low performance upon check or change document loading
2073071 - DGP: performance issues and resolution
Hi Dolores, Thanks for this article! Good, structured and very well summarised!