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);
        }