With the following steps, you will be able to create a test landscape to practice the Enhanced Retrofit functionality in SAP Solution Manager 7.1.
Also, I will try to give tips and tricks for the configuration of this scenario in SAP Solution Manager 7.1 and how to analyze possible issues 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 it is necessary to implement these changes in another system landscape but without using the import function of the transport requests.
Imagine this scenario with a Maintenance landscape and also an Implementation landscape. Here, PRD would be the system that is already go live.
Now you want to implement a new functionality for your system. You will use a second development system DV2 to work in this new implementation. By working in DV2, you will not disturb the maintenance of the PRD done in DV1 system.
Usually DV2 and QA2 are created initially as system copy from PRD system.
If a change is done in DV1, this change must also be done in DV2 to maintain the synchronization--this is the reason for retrofit, to bring the changes made in DV1 to DV2.
Changes of a Maintenance project also should be duplicated in an Implementation Project that provides the same Production system of the Maintenance landscape.
The main new features and advantages of the Enhanced Retrofit Functionality can be summarized:
1. Automatic Categorization of Objects (Auto Import, Semi-automatic, and Manual)
During the release of the transport request that contains the changes done in DV1, the enhanced retrofit functionality will check all objects contained in the transport request and categorize them one by one. According to this categorization, different retrofit data wil be generated for each object:
- Auto Import (Support of 100% of transportable objects!):
• Applies for all Objects of a Transport Request which have no conflict. They have not been changed in the retrofit system so there is no CSOL lock entry for them in the Solman system.
• Retrofit is performed through a transport of copies (TOC) which is automatically created and released, and contains only the objects without conflicts .The retrofit tool imports this TOC into the retrofit system and copies the objects into the indicated retrofit transport request). This TOC is created after the release of the transport requests in DV1 system.
- Semi-Automatic Retrofit with Correction Workbench (Note Assistant) or BC-Sets
• Applies for all Objects of a Transport Request which have a conflict and which are supported by one of the tools (Repository Objects with Correction Workbench, customizing via BC-Sets). This was available with the "old" version of the retrofit (supportability of 70-80% of objects).
• Both tools offer the possibility to do adjustments, which are necessary in case of a conflict to not simply overwrite a change in the Implementation Project (Release Development).
• Objects with conflicts which have no support tool.
2. Conflict Detection is performed via Cross System Object Lock CSOL at object level
- Possibility to perform retrofit on object level
3. Detection of technical sequence dependencies
- Detection of same objects to be retrofitted in which order
- Advanced Control of Retrofit Sequence
4. Additional Features
- Enhanced Logging of Messages
- Comparison of compatible objects before retrofitting
- Various Customizing Possibilities
- Implementation of Customer Specific Requirements via Standard SAP BADIs
The Retrofit functionality as it exists with Solution Manager 7.0 EHP 1 will still be available in Solution Manager 7.1. The new functionalities of Enhanced Retrofit can be activated separately per user, therefore they do not have to be used if it is not required.
The configurations given here are valid for Solution Manager 7.1.
1. Enhanced Retrofit customizing
1.1.Go to spro and run point "Activation of Retrofit" if you want to use the enhanced retrofit: Read the documentation of the point first.
This is activating EXTENDED retrofit. SM30: /TMWFLOW/EXTUSR
If you are moving from standard retrofit to enhanced retrofit, you can activate enhanced retrofit for some specific users. By adding * as the only entry the new retrofit is activated for all users.
1.2. Maintenance of Retrofit Parameters: SM30 ->/TMWFLOW/RCONFIG (read documentation of the point for detailed description of each parameter)
1.3. Status Customizing for retrofit objects: SM30 ->/TMWFLOW/EDT_CST (read the documentation of the point)
It is possible to allow or forbid certain manual changes to the objects inside the retrofit object list of a transport request.
1.4. Badis (read the documentation of the point)
BADI /TMWFLOW/RETRO_RELEASE: this badi can be used to influence the Retrofit behavior during the release (creation of the retrofit data).
BADI /TMWFLOW/RETRO_DURING_RETROFIT: this badi can be used to influence the behavior when the Retrofit screen is visible.
BADI /TMWFLOW/RETRO_AFTER_RETROFIT: BADI methods are processed after the retrofit has been completed/processed.
2. Prepare the logical components and the projects
2.1. Create the additional clients
I will create these landscapes in TMS:
Maintenance landscape: SMM:100->SMM:200->SMM:300
Implementation landscape: SS7:100->SS7:200-> VIR:300 (VIR is a virtual system)
Note: You can see different landscape options in ES Academy Best Practice: Change Management: Elements of a Software Change Management Strategy, section 3. SWCM Transport Landscapes.
Ensure that there are consolidation routes (client dependent) from your development system SMM:100 to the quality assurance system SMM:200 and your quality assurance systems are linked to the production system SMM:300 via delivery routes (client dependent).
The same for the implementation landscape:
No transport route between source Dev system and Target retrofit system is needed.
2.2. Domain links
It is very important to establish a domain link between the two TMS landscapes!!! You need a domain link between Tthe maintenance TMS landscape and the TMS implementation landscape (if not you will have problems later while importing the TOC created in SMM:100 to client SS7:100). Even if you are using Harmonizing infracture for Enhanced Retrofit scenario, the domain link between both transport domains are required.
Ensure Trusted services are activated in both domain controller systems.
2.3. Create the RFC destination for the system:clients involved in the retrofit scenario in LMDB
In our case for SMM:100, 200 and 300 and SS7:100, 200.
Note: There must not be any client with production role for this example scenario, if not the BC set could not be activated in the retrofit system.
2.4. Ensure that you have also created the ibase components for the involved production systems:clients.
2.5. Create three new logical components, one for the existing Maintenance landscape, the second logical component for the retrofit system and a third logical component for the implementation landscape:
|Development (source system role)||Quality (target system role)||Production (production system role)||Retrofit ( Postprocessing system role)|
In a real scenario you will have for example:
Maintenance landscape: DV1->QA1->VA1->PRD
Implementation landscape: DV2->QA2 -> ….
From QA2 you could have a VIR system as production system or you can have DV2->QA2->DV1->QA1->VA1->PRD.
Finally the new implementation changes, TRs created in DV2, need to arrive in PRD; you can decide in which way to get these TRs imported into PRD. Depending on this decision you can create different implementation landscapes like:
Note: Ensure that you have entered a system:client under production column for the implementation logical component as you need to have a production system to be able to use CSOL scenario for the implementation project. This production system does not need to be the same one than for the maintenance landscape.
2.6. Create a maintenance project in transaction SOLAR_PROJECT_ADMIN containing the created logical components:
Create the IMG project for the development system:
Go to 'Change Requests' and mark 'Activate Change Requests Management'. Save your project. Now press 'Generate Task List'. When the task list is generated, you will be prompted to enter the task list name:
Note: You can use a ChaRM project using cCTS functionality; however, for the retrofit system no cluster assignment can be done.
In the task list notice that you need to have one project track for the source system and a separate tree for the "Systems Without Transport Connections" with Post-Processing Systems (Retrofit system):
In the General Tasks folder, there is a task called "Assignments of Postprocessing Systems to Development Systems". If you execute it you will see:
Ensure that you always make the assignment of the source system with the desired Post-processing system. You could retrofit to several Post-processing systems.
You can change the assignments at any time by starting this task again. Really, you only need to execute this if more than one post processing system exists.
Lock/unlock groups for all project tracks and for the System Without Transport Connection and move the maintenance cycle SMNN to development with release phase:
2.7. Create an implementation project in transaction SOLAR_PROJECT_ADMIN containing the created logical components for the implementation landscape.
3. CSOL activation
We need to activate CSOL for the retrofit development system and also globally.
The point is that you need to get a lock entry in /n/tmwflow/lockmon for any object you change in the retrofit system, in the development system DV2 of the implementation landscape (SS7:100 in our scenario).
Then if the same object is modified in the DV1 system (SMM:100), the lock is detected and autoimport retrofit option will not be available for this object.
3.1. Settings in the retrofit system
In the retrofit system, SS7:100, you need to create this entry: (go to /nSM30 > bcos_cust)
The RFC Connection is pointing to the Solman system SMM:001 where the lock entries are saved, and also where ChaRM is configured.
For the cross-system object lock, you require either a trusted system connection, or you have to create an RFC connection with a special user of the type 'S' (Service). Assign the service user at least the SAPSOLMANTMWCOL role. See KBA 2004134 - CSOL - RFC from managed system to Solution Manager system.
3.2. Activate the cross-system object lock for the retrofit system in /TMWFLOW/CMSCONF.
Note: Sys.Change Option should be modifiable.
Note: In case of problems here check note 1584174 "CSOL: RFC to client 000 is required for activation in case of problems seeing all clients" .
System will appear in /TMWFLOW/CMSCONF if the system is used in a project with ChaRM activated.
3.3. Globally activate the cross-system object lock.
In solman 7.1 SP05 and higher: Call /n/TMWFLOW/CONFIG_LOCK
In previous 7.1 patch levels execute se38: /TMWFLOW/CONFIG_SERVICES
Please see also this SCN docs:
- How to Setup Cross System Object Lock (CSOL) when using Retrofit
- Down Grade Protection (DGP) settings for Retrofit
4. RFCs connections required for Retrofit
According to note 1175098, the following retrofit RFCs will be created automatically:
CWBADM_<SID>_<client>: from the retrofit system to the development system in the maintenance landscape, in our example from SS7:100 to SMM:100.
Used by the SAP Correction Workbench, SCWB is doing a remote delta comparison from the retrofit system to the development maintenance system. Therefore a trusted RFC-Connection from Retrofit System to Development System needs to be established.
- RETRO_<SID>_<client> - from maintenance project development system to retrofit system, from SMM:100 to SS7:100 in our scenario RETRO_SS7_100.
Used by the BC-Set tool, BC-Set tool is locally created on the development maintenance system, during the retrofit process it is transferred to the retrofit system and activated there. To support this process it is necessary to establish a trusted RFC Connection from Development System to Retrofit System.
Check if the retrofit RFCs are created automatically when you perform the first retrofit activity with SCWB and BC-Set.
User executing this first retrofit activity needs to have enough authorization to create RFC destinations on the managed system(s).
Ensure that you activate TMS Trusted Services in both domain controller systems.
Note 1484719 Retrofit - Retrofit failed because of RFC-Destination
You can start the retrofit process from:
• An urgent change when the status is "Authorized for Production" from the action list.
• A normal change when the status is "Successfully Tested " from the action list.
• The task list that contains the logical component with the retrofit system.
We are going to see examples for the use of auto import, semi-automatic and manual retrofit.
1. Auto Import
If no conflict (lock entry) exists then auto import can be used for customizing and workbench transport requests.
The objects included in the TR released in DV1 have not been changed in the retrofit system DV2 so there is no lock entry for them in the Solman system.
At the time of the release of the transport request all objects are checked. If there are objects without lock entries in /TMWFLOW/LOCKMON then a TOC is automatically created and released and will contain only the objects without conflicts (the owner of this TOC is the user used in the TMW RFC destination from Solman to DV1, SM_SMMCLNT100_TMW in our case).
The target of this TOC will be the retrofit system SS7:100.
Later when you start the retrofit you need to select a TR created in the retrofit system SS7:100.
Retrofit auto import tool will import this transport of copies into the retrofit system, changes will arrive in retrofit system and objects will be recorded in the retrofit request in SS7:100. After a successful import the status of the request is set to Retrofitted automatically.
- Create a couple of TRs in SMM:100 in the task list of project I02055_RET .
This is the fastest way to test this functionality, but you can always create a change document to make the same steps from the change document, urgent or normal change.
Enter the following changes:
For customizing TR1 enter a change in to sm30: T005A; a task will be created--release the task.
- For workbench T2, create a function group in se80 or a program in se38.
A task is created. Release the task.
- Release both TRs from the task list:
- Was there a lock entry in Solman system in /tmwflow/lockmon for this WB function group or for the view T005A? NO!
Then a TOC will be created and exported at the time the TR is exported. You can check this in table /TMWFLOW/TR_TROBJ. As the objects included in the TR1 and TR2 has obj_category 2 then the retrofit data will be created using TOC.
See also table /TMWFLOW/TOCASNG where you can see the created TOC per each TR:
For TR1 see that the target system of the TOC is the retrofit system SS7:100:
In case of errors creating the retrofit data you will see them in the Release TR logs:
- Now I create a couple of TRs in SS7:100 to retrofit the content of the TOC to these TRs. I need one for WB and another for customizing. I can do this quickly from the I* task list of implementation project I02055_RE2:
Requests TR3 and TR4 created.
- Start retrofit from the task list:
As all objects in this TR1 had obj_category 2, you can see a Green bullet under Critical Retrofit column.
I need to assign to TR1 the retrofit TR3 where I want to save the content of the TOC. To do this, select the row and click on Auto-import button.
You can see the logs under Additional Functions-> Display logs
See also table /TMWFLOW/RFITC: here you can see original TR, TR where you retrofitted the objects and if the retrofit is done or not and when:
TR3 is getting the content of the TOC:
As TOC is imported into SS7:100:
Do the same for TR2.
According to the parameter NO_CSOL value in SM30 ->/TMWFLOW/RCONFIG:
You can decide if the object retrofitted in the retrofit system should create a CSOL entry or not.
If parameter NO_CSOL is inactive then a lock entry will be created, as now the object is really changed in SS7:100.
Decide the best option for your scenario.
In my testing scenario I was using NO_CSOL with X Parameter Active, so I was not creating lock enties for the function group Z_DOLORES1 and also not from my entry in T005A 950.
2. Semi-Automatic Retrofit with BC-Sets or Correction Workbench (Note Assistant) - Standard retrofit
If a conflict (lock entry) exists then BC-Set/SCWB tools need to be used.
We call this “standard retrofit”, the one used in SAP Solution Manager 7.0.
The objects included in the TR created in DV1 have been changed in the retrofit system DV2, so there is a lock entry for them in the Solman system.
At the time of the release, the Solman system detects this lock and a BC-set will be created in SMM:100 system for customizing objects, for workbench changes we will need to use SCWB tool.
2.1. Customizing changes – BC-Set tool
Prerequisite: Ensure that user creating the BC-Set in the development maintenance system and in the retrofit system has the Deletion functionality for BC-Sets activated.
Logon to all the development systems -> Transaction SCPR20 -> Utilities -> User Settings -> Maint. Transaction -> Deletion Functionality -> Select “Switch On”
This setting is user specific so all the developer accounts need to activate it individually, otherwise if you delete some customizing changes they won’t be supported by B-Sets. As a result you would not be able to Retrofit them.
For customizing request, the BC-Sets are generated during the release of the transport request. So check always the task list release transport request log:
See in SMM:100 in /nscpr20 that BC-Set is created.
Note: not all object are supported by BC Sets, please see Case 3. Manual retrofit will have to be used for this situation.
Later during the retrofit process with BC-Set tool, the corresponding BC-Set ZCHARM* will be created and activated in the retrofit system, changes will arrive in retrofit system and objects will be recorded in the retrofit request in SS7:100. After a successful import, the status of the request is set to Retrofitted automatically.
- Create a customizing TR1 for SS7:100 in the task list of project I02055_RE2 directly and enter there an initial change in sm30: T005A for entry 960. Release the task of the TR1. You can release the TR1 or not. The only difference is that now you will see a lock entry for the customizing entry in /n/TMWFLOW/LOCKMON:
So we have initial entries in the retrofit system SS7:100 so now we go to create the same entry in T005A for 960 in SMM:100.
- Create TR2 from M* task list in SMM:100 and create an entry in T005A for 960, save the changes in the TR and release the task.
- From M* task list release also the TR1.
- Call now start retrofit from the M* task list:
See that the lock is detected and Critical Retrofit has a YELLOW triangle.
You can create a new TR3 in the retrofit system or try to use the TR1 with the initial changes.
Select “Retrofit for all Categories”.
The following pop ups will appear:
As there were already lock entries you get the popup informing about these lock entries:
In SS7:100 you can see the BC- Set is created and activated.
A new entry is created in /tmwflow/lockmon.
2.2. Workbench changes – SCWB tool
For workbench changes, since SCWB is adopted to carry out the automatic copy process, Retrofit could only support those objects which are supported by SCWB.
For every workbench (repository) request, Retrofit will check transport request object list and report non-supported objects (transport-critical objects) via the error messages in column “Critical Retrofit”.
We have created function group ZDOLORES1 in Case 1 and we retrofitted it to SS7:100 using autoimport option, changes were saved in TR SS7K900451.
We are going to release this TR from the I* task list.
Note: when releasing the TR you can get an error saying that the package of this TR does not exists in SS7:100, create it and assign to transport layer ZSS7, at least I was not able to see the place where to change the package for this TR...
Then make a modification to this function group in the SS7:100 system and save the changes in TR1:
This will create a lock entry in /TMWFLOW/LOCKMON too.
Now we will go to SMM:100 to make also changes to this function group. We save the change to TR2, release the task and later release the TR2 from the M*:
As the lock exists we will get the Yellow triangle in the Start Retro entry:
I release the TR in SMM:100 containing this change.
Call now start retrofit from the M* task list:
See that the lock is detected and Critical Retrofit is having a YELLOW triangle.
Go to see the objects:
Compare Source and Target System:
In the FG in SS7:100 I cannot see the CHANGES!! Text because the TR1 is not released.
I retrofit TR2 to TR1, where the changes were done initially in the retrofit system:
Select “Retrofit for all Categories”. The following pop up will appear:
The mechanism of SCWB merge editor is to calculate the “delta” changes from the source transport request, and try to manipulate them in the target system’s same object. This requires the target system’s object to have the same version as the original version in the source system before the change is performed. Only in this way we can ensure all those “delta” can be handled correctly. Otherwise you might get a message saying not all changes can be copied.
Check the logs.
Changes arrived to SS7:100:
3. Manual Retrofit
If a conflict (lock entry) exists and the object is not supported by SCWB/BC-Set, then we need to use Manual retrofit.
Objects with conflicts which have no support tool:
The objects included in the TR released in DV1 have been changed in the retrofit system DV2 so there is a lock entry for them in the Solman system.
In this case you cannot use retrofit tool to get your changes in the retrofit system. You need to do it manually.
- Create a customizing TR1 from the I* task list for project I02055_RE2 and save here a new entry for view V_CLG in the retrofit system SS7:100
An entry is written in Solman in /n/tmwflow/lockmon:
I go to see if this view supports BC-Set tool or not: /nSOBJ
This view is not supporting BC-Set tool.
- Create TR2 in SMM:100 and modify the same entry for the view V_CLG. Release the task and then the TR2 from the M* task list.
- Create a new TR3 in SS7:100 or used the initial TR1 to retrofit the changes MANUALLY.
- Now when we start the retrofit the line has red bullet. Select “Additional Functions”-> Retrofit Manual
4. Retrofit for mixed types of objects
When you have objects in the transport request with different categories please always Select “Retrofit for all Categories”
The objects that allows autoimport will be retrofitted via TOC and the objects already changed in the retrofit system will be retrofitted using tools like BC Set and SCWB.
Start Retrofit – Other functions
- Display Logs: This will display the retrofit logs.
- Object List of Transport Request: This will display the list of the objects included in the transport request and the retrofit options.
- Consistency check: System will check whether your selected request obeys release sequence to perform the Retrofit, and also whether there is a target request entered for it.
- Reject Retrofit: In case you feel the change is not needed for the target system, there is another button “Change Retrofit Status” which can set the status to “Retrofit Rejected”.
- Place Transport in Import Buffer Again: If the retrofit was not completed successfully, for example, because an auto import option reported errors, you can choose "Place Transport in Import Buffer Again". You are now able to repeat the retrofit process for auto-import objects. Note that you cannot use this function for manual retrofits.
- Create Retrofit Data Again: report RETRO_SERVICE_CREATE_RFIT_DATA: This will create the retrofit data again for the selected transport request. Note that the newest version of the relevant objects from the database will be used, this version could not be the same that the version of the objects when the original transport request was released.
If Development Systems, DV1 and DV2 retrofit, are in Different Domains, ensure that you create a domain link between the two domains. If transport groups are also different you need to forward the created TOC to the retrofit system.
The retrofit for NON-ABAP (e.g. Java, Business Objects, HANA Content) is not supported at the moment (SAP Solution Manager 7.1 SP13).
For Business Warehouse objects: In spro activity "Define Values for Retrofit Scenarios" you can decide which BW objects need to be retrofitted always manually.
Super user authorization object /TMWFLOW/A
Super user is allowed to:
Perform all categories at once
Ignore sequence violations
Place Transport in Import Buffer Again
Create Retrofit Data Again
Retrofit data is generated when the source transport request is released. Make sure the release does not contain any error in the M* or H* task list release entry.
During the release of the source transport, retrofit is checking each object included in the source transport and classifying them according to if these objects have been changed or not in the retrofit system too.
After that, Retrofit data will be entered in three tables:
- /TMWFLOW/R_TROBJ is the table to store the object level information from the source request.
- /TMWFLOW/TOCASNG is the table to store automatic ToC created for the source request in the case that objects get category 2, auto import.
F means Request imported successfully into all systems
- /TMWFLOW/RFITC is the Central Retrofit header table. It contains the information about source system, source request, target system and target request. Also it has the “TR ERROR”, TR_ERROR value will determine the color of the icon in Retrofit window column Critical Retrofit, and this value will determine also which type of retrofit can be used.
- /TMWFLOW/R_ARC: List of all objects already retrofitted.
- SAP Help Portal Dual Landscape Synchronization (Retrofit)
- How to Setup Cross System Object Lock (CSOL) when using Retrofit
- Down Grade Protection (DGP) settings for Retrofit
- ES Academy Best Practice: Change Management: Elements of a Software Change Management Strategy
1703391 - General note for managed systems in Change Management
1468044 - Retrofit extensions - for managed systems
SAP Solution Manager system:
1175098 - Change Request Management retrofit configuration
1818628 - Retrofit Conflict Calculation
2004134 - CSOL - RFC from managed system to Solution Manager system
1584174 - CSOL: RFC to client 000 is required for activation in case of problems seeing all clients
1175098 - Change Request Management retrofit configuration
1484719 - Retrofit - Retrofit failed because of RFC- Destination
2190740 - How to analyze errors when using Enhanced Retrofit functionality