If you deal with Staging systems like Development => QA => Production you need a Transport System as good as possible.
All changes to the System should belong to a a Change-Package (Change, User-Task - whatever).
This Information should be recorded when Changes are made / committed.
Change-Packages have title and a description
A Change-Package covers everything: Creating a new Database, new Document / Search Class, Scriptings, Roles / Groups, Rights, technical Users, Fips Jobs ... whatever is changed in the System and belongs to the Change Package.
Change-Packages are versioned
Change-Packages can be exported
Changes can be imported to a system
There is a Change History for each CSB (Is this change already applied to the system? Witch Version?)
Changes-Packages can include Scripts which are executed before and/or after a change is applied to a system.
The current Transport System is not really a good fit for this purpose - its more like a poor man's tool which somehow does the job more or less .
As Part of this, I also see:
Changes on to-be-transported objects need to be allocated to a change-package before starting and get locked for other changes.
Disable changes on to-be-transported objects in productive systems (not only via authorizations)
Objects need an information that says if it has to be transported or not
All Objects need to be versioned and compareable
For all this, have a look at SAP.