
Serpent Team

Andrew Hanna

Kurze Antwort: Salesforce hat keinen Ruckgangig-Knopf. Ein
fehlgeschlagenes Produktiv-Deployment macht sich selbst ruckgangig, weil
rollbackOnError in der Produktion auf true stehen muss. Ein Deployment,
das durchlauft und sich als falsch herausstellt, mussen Sie dagegen selbst
zurucknehmen. Realistisch bleiben drei Wege: ein umgekehrtes Deployment aus einem
Snapshot vor der Release, gezielte destructive changes oder ein Fix nach vorn. Welcher
davon Ihnen offensteht, entscheidet sich vor dem Deployment, nicht danach.
Salesforce schreibt Metadaten direkt in die Org. Es gibt kein Transaktionsprotokoll
zum Zurucknehmen und keine fruhere Version der Org, auf die man umschalten konnte. Die
Metadata API bietet genau ein Sicherheitsnetz, und das greift nur beim echten
Fehlschlag: Bei einem Produktiv-Deployment muss rollbackOnError auf true
stehen, sodass ein fehlerhafter Bestandteil das gesamte Paket verwirft und die Org
unverandert bleibt (Salesforce Metadata API Developer Guide).
Fur den Fall, den Teams wirklich furchten, hilft dieses Netz nicht. Ein Release, das sauber deployt, alle Tests besteht und um neun Uhr morgens einen Geschaftsprozess bricht, ist aus Sicht von Salesforce kein fehlgeschlagenes Deployment. Es zuruckzunehmen bedeutet, ein neues Deployment zu bauen, und bauen konnen Sie es nur aus etwas, das Sie vorher gesichert haben.
Mit dieser Frage sollte jeder Rollback-Plan beginnen, und genau hier schweigen die meisten. Sortieren Sie Ihr Release in drei Gruppen, bevor Sie den ersten Schritt aufschreiben.
An dieser dritten Gruppe scheitern Rollback-Plane. Ein Metadaten-Rollback stellt Konfiguration wieder her, niemals Daten. Wenn Ihr Release eine Automatisierung uber 400.000 Datensatze laufen liess, andert das Zuruckspielen des gestrigen Apex daran nichts.
Die verlasslichste Variante. Liegt der Branch, aus dem das Release entstand, in Git, ist der vorherige Commit Ihr Rollback-Artefakt. Sie bauen ein Paket aus dem letzten guten Commit und deployen es daruber. Das deckt nur geanderte oder hinzugefugte Komponenten ab, kombinieren Sie es also mit Strategie drei.
Sichern Sie den Zustand der Ziel-Org unmittelbar vor dem Deployment und erzeugen Sie daraus bei Bedarf das Ruckwartspaket. Das deckt den Fall ab, dass die Org von Git abgedriftet ist, was in den meisten Salesforce-Teams zutrifft. Werkzeuge dieser Kategorie automatisieren Sicherung und Diff: Gearset, AutoRABIT und Blue Canvas dokumentieren jeweils snapshot- oder restore-basiertes Rollback, und Serpent liefert Ein-Klick-Rollback in jedem Plan, auch im kostenlosen.
Ein umgekehrtes Deployment aktualisiert Komponenten, die vorher existierten. Es
entfernt nicht, was Ihr Release erzeugt hat, ein neues Objekt oder Feld bleibt also
stehen, solange Sie es nicht ausdrucklich loschen. Dafur brauchen Sie ein
destructiveChanges.xml-Manifest, ein eigenes Artefakt, das geschrieben
werden will. Mit destructiveChangesPre.xml loschen Sie vor den
Erganzungen, mit destructiveChangesPost.xml danach, womit sich
Abhangigkeiten losen lassen, etwa eine Apex-Klasse, die noch auf das zu loschende
Objekt verweist.
Oft die richtige Wahl. Liegt der Fehler in einer Validierungsregel oder einer Zeile Apex, ist ein Hotfix uber die normale Pipeline schneller und sicherer, als ein Paket mit 200 Komponenten umzukehren. Rollen Sie zuruck, wenn die Auswirkung unklar ist. Reparieren Sie nach vorn, wenn sie klein und verstanden ist.
Ein Rollback ist eine Entwurfsentscheidung zur Bauzeit. Beantworten Sie diese funf Punkte, bevor das Release rausgeht.
Vor dem Deployen zu validieren ist die billigste Vorsorge. Eine Validierung mit Tests bleibt 10 Tage nutzbar und erlaubt einen Quick Deploy desselben Pakets, ohne die Apex-Tests erneut laufen zu lassen, Compile-Fehler haben in der Produktion also nichts verloren. Weitere Release-Playbooks stehen in unserer SF-Guides-Bibliothek.
Macht Salesforce ein fehlgeschlagenes Deployment automatisch ruckgangig?
Ja, aber nur solche, die fehlschlagen. Produktiv-Deployments verlangen
rollbackOnError auf true, eine fehlerhafte Komponente verwirft also das
ganze Paket. Ein erfolgreiches Deployment wird nie fur Sie zuruckgenommen.
Lassen sich Change Sets zurucknehmen?
Nicht nativ. Es gibt keinen Umkehrknopf, also bauen Teams ein zweites Change Set, das die vorherige Version erneut deployt, was nur funktioniert, wenn jemand diese Version vorher gesichert hat.
Stellt ein Metadaten-Rollback meine Daten wieder her?
Nein. Metadaten und Daten sind getrennte Probleme. Konfiguration zuruckzunehmen macht Datensatze nicht ruckgangig, die eine Automatisierung angelegt, geandert oder geloscht hat. Dafur brauchen Sie Backup und Wiederherstellungsplan.
Wie lange kann ich ein geloschtes benutzerdefiniertes Feld retten?
15 Tage. Das Feld steht unter Deleted Fields im Objekt-Manager und lasst sich in diesem Fenster samt Daten wiederherstellen, muss aber gegebenenfalls von Hand wieder in die Seitenlayouts.
Unverbindlich.