private void RollbackADAction(Actions action, object[] attribute) { OrganizationalUnits org = null; Groups grp = null; Users usr = null; try { log.DebugFormat("Rolling back action {0}...", action.ToString()); switch (action) { case Actions.CreateOrganizationalUnit: org = new OrganizationalUnits(Settings.Username, Settings.DecryptedPassword, Settings.PrimaryDC); org.Delete(attribute[0].ToString(), true); log.DebugFormat("Successfully rolled back action {0} at path {1}", action.ToString(), attribute.ToString()); break; case Actions.CreateSecurityGroup: grp = new Groups(Settings.Username, Settings.DecryptedPassword, Settings.PrimaryDC); grp.Delete(attribute[0].ToString()); log.DebugFormat("Successfully rolled back action {0} for group {1}", action.ToString(), attribute.ToString()); break; case Actions.AddDomains: org = new OrganizationalUnits(Settings.Username, Settings.DecryptedPassword, Settings.PrimaryDC); org.RemoveDomains(attribute[0].ToString(), new string[] { attribute[1].ToString() }); log.DebugFormat("Successfully rolled back action {0} for org {1}", action.ToString(), attribute[0]); break; default: log.DebugFormat("Unknown action {0}... Skipping...", action.ToString()); break; } } catch (Exception ex) { log.ErrorFormat("Failed to rollback action {0}. Exception: {1}", action.ToString(), ex.ToString()); } finally { if (usr != null) usr.Dispose(); if (grp != null) grp.Dispose(); if (org != null) org.Dispose(); } }