Transport Management Without Losing Your Sanity
Transport management is the leading cause of production incidents in SAP landscapes. Not HANA performance. Not authorisation gaps. Transports. Every seasoned BASIS admin has a transport horror story, and most of them were preventable.
Why Transports Are the Leading Cause of Outages
The Correction and Transport System was designed when SAP landscapes were simpler: three systems, one development path, regular maintenance windows. Modern landscapes are nothing like that. You have parallel development tracks, hotfix lanes, emergency patches, and business units who each believe their change is the most critical thing that has ever happened. The CTS was not designed to arbitrate those conflicts. That is your job.
The core problem is that transports carry implicit state. A transport that was correct when it was released from DEV may no longer be correct by the time it reaches PRD — because other transports moved in the meantime, changing the baseline it was built against. The system does not warn you about this. You have to know it.
The Three-System Landscape
The standard DEV → QAS → PRD path exists for a reason. Every transport must touch QAS before PRD. No exceptions. The argument "we already tested it in DEV" does not hold — DEV and PRD have been diverging since the day the system went live. QAS is the only environment that approximates production state closely enough to catch what DEV misses.
In practice, many shops let QAS drift. They skip QAS imports for "small" changes, or they import hotfixes directly to PRD under pressure. Every time this happens, the gap between QAS and PRD widens. When a real incident occurs, QAS is useless for reproducing the problem because it no longer reflects production.
Keep QAS synchronised with PRD. This means importing everything to QAS first, even when it feels redundant.
The Emergency Lane
Every team needs a defined, fast-track process for genuine P1 fixes — not a shortcut around process, but a documented alternative path. An emergency lane should require sign-off from at least two named individuals, a post-import review within 24 hours, and a follow-up transport through the normal path once the crisis is over. Without a defined emergency lane, every developer's urgent request becomes an unofficial one.
Release Windows and Freeze Calendars
A sustainable transport cycle has three layers.
The first is a regular release window — weekly or biweekly, planned, communicated to the business. When changes land in production is predictable. Stakeholders can plan around it.
The second is the emergency lane described above. Defined, controlled, documented.
The third is a freeze calendar. Hard locks around month-end close, year-end close, audit periods, and system upgrades. During a freeze, no transports reach PRD regardless of urgency. Exceptions require written approval from the system owner, not the BASIS team. The BASIS team cannot authorise their own exceptions.
Publish the freeze calendar at the start of each year. Put it in the project team's shared calendar. Put it on the wall. The moment a freeze is treated as negotiable, it stops being a freeze.
Transport Sequencing and Dependencies
Transports carry implicit dependencies that STMS does not enforce. If transport B was created after transport A and both touch the same repository objects, you must import A before B. Import them out of order and you have overwritten A's state with an older version.
The CTS tracks creation order within a single system, but it does not track cross-system dependencies or the order in which related transports from different developers should be imported. That dependency map lives in your head, or in your change management tool.
Before importing a group of related transports, reconstruct the dependency chain. Use transaction SE01 to review the object lists. Check whether any objects appear in multiple transports from the same period. If they do, establish the correct sequence before touching the import queue.
The command tp showbuffer prints the current import queue for a target system. Use it before every import run. If something looks wrong in the queue, stop and investigate — do not import and hope.
The Friday Embargo
Do not import to production on Friday afternoon. This is not a guideline or a soft preference. It is a hard rule that every team eventually learns after breaking it once.
The risk is not that Friday transports are technically different from Monday transports. The risk is that the support structure available to deal with a failed import collapses on Friday afternoon. Developers leave early. The business has closed for the week. On-call is thin. If something goes wrong at 16:30 on Friday, you are looking at a weekend incident.
If a change cannot wait until Monday, the emergency lane exists. Invoke it deliberately, with the appropriate sign-offs, not because it is 16:00 and someone wants to close a ticket before the weekend.
Monitoring with STMS and tp
STMS is the primary interface for managing transport routes, import queues, and transport logs. Know it thoroughly before you need it under pressure.
The tp program is the command-line engine behind STMS. Useful commands to know: tp showbuffer to inspect the queue, tp import for manual imports, tp cleanbuffer to remove transports from the queue, and tp check to validate a transport before import.
Transport logs live in /usr/sap/trans/log. The filename pattern is SYSIDDDHHMM.log where SYSID is the target system. Always grep for ERROR and RETURN CODE rather than relying on the STMS traffic light — RC=8 is informational in some contexts and fatal in others. Read the log.
When an import fails, the first thing to check is whether the failure was in a prerequisite transport rather than the one you intended to import. STMS error messages are often misleading about the actual root cause. Work backwards from the error line in the tp log, not from the STMS summary screen.
Import Queue Management
A growing import queue is a symptom of a broken process, not a workload problem. If transports are accumulating in QAS or PRD queues, the question to ask is why they are not being imported on schedule, not how to import them faster.
Old transports in a queue create risk. The objects they contain may have changed since the transport was released. The business requirement they address may have changed. The developer who created them may have left. Before mass-importing a backlog, review each transport for relevance and dependency conflicts. Importing two years of accumulated transports in one batch is how you destroy a production system.
Keep queues clean. Import on schedule. Close old transports that are no longer relevant rather than leaving them to accumulate.
> Editorial note: This guide reflects general best practices for ABAP-stack landscapes. Specific behaviour of STMS, tp, and CTS may vary across kernel versions and SAP releases. Verify procedures in your specific system before applying them to production.