protected override IConfigurable PrepareDataObject() { TaskLogger.LogEnter(); TransportRule transportRule = null; try { transportRule = this.TryGetDataObject(); XDocument rulePackXDoc; if (transportRule == null) { transportRule = (TransportRule)base.PrepareDataObject(); string rawIdentity = this.ClassificationRuleCollectionIdentity.RawIdentity; transportRule.SetId(ClassificationDefinitionUtils.GetClassificationRuleCollectionContainerId(base.DataSession).GetChildId(rawIdentity)); transportRule.OrganizationId = base.CurrentOrganizationId; transportRule.Xml = null; string organizationId; string name; if (base.CurrentOrganizationId != null && base.CurrentOrganizationId.OrganizationalUnit != null) { organizationId = base.CurrentOrganizationId.OrganizationalUnit.ObjectGuid.ToString(); name = base.CurrentOrganizationId.OrganizationalUnit.Name; } else { organizationId = base.CurrentOrgContainerId.ObjectGuid.ToString(); name = base.CurrentOrgContainerId.DomainId.Name; } rulePackXDoc = ClassificationDefinitionUtils.CreateRuleCollectionDocumentFromTemplate(rawIdentity, organizationId, name); } else { rulePackXDoc = ClassificationDefinitionUtils.GetRuleCollectionDocumentFromTransportRule(transportRule); } this.implementation = new DataClassificationCmdletsImplementation(this); this.implementation.Initialize(transportRule, rulePackXDoc); } catch (LocalizedException exception) { base.WriteError(exception, ErrorCategory.InvalidOperation, null); } TaskLogger.LogExit(); return(transportRule); }