protected MSERVEntry ProcessExternalOrgIdParameter(int partnerId, int minorPartnerId, Func <string, int, int> invoke)
        {
            MSERVEntry mserventry = new MSERVEntry();
            Guid       guid       = (Guid)base.Fields["ExternalDirectoryOrganizationId"];

            mserventry.ExternalDirectoryOrganizationId = guid;
            if (partnerId > -1)
            {
                string text = string.Format("43BA6209CC0F4542958F65F8BF1CDED6@{0}.exchangereserved", guid);
                mserventry.AddressForPartnerId = text;
                mserventry.PartnerId           = invoke(text, partnerId);
                MServDirectorySession mservDirectorySession = new MServDirectorySession(null);
                string forest;
                if (mservDirectorySession.TryGetForestFqdnFromPartnerId(mserventry.PartnerId, out forest))
                {
                    mserventry.Forest = forest;
                }
            }
            if (minorPartnerId > -1)
            {
                string text = string.Format("3da19c7b44a74bd3896daaf008594b6c@{0}.exchangereserved", guid);
                mserventry.AddressForMinorPartnerId = text;
                mserventry.MinorPartnerId           = invoke(text, minorPartnerId);
            }
            return(mserventry);
        }
        protected MSERVEntry ProcessDomainNameParameter(int partnerId, int minorPartnerId, Func <string, int, int> invoke)
        {
            MSERVEntry mserventry = new MSERVEntry();
            string     domain     = ((SmtpDomain)base.Fields["DomainName"]).Domain;

            mserventry.DomainName = domain;
            if (partnerId > -1)
            {
                string text = string.Format("E5CB63F56E8B4b69A1F70C192276D6AD@{0}", domain);
                mserventry.AddressForPartnerId = text;
                mserventry.PartnerId           = invoke(text, partnerId);
                MServDirectorySession mservDirectorySession = new MServDirectorySession(null);
                string forest;
                if (mservDirectorySession.TryGetForestFqdnFromPartnerId(mserventry.PartnerId, out forest))
                {
                    mserventry.Forest = forest;
                }
            }
            if (minorPartnerId > -1)
            {
                string text = string.Format("7f66cd009b304aeda37ffdeea1733ff6@{0}", domain);
                mserventry.AddressForMinorPartnerId = text;
                mserventry.MinorPartnerId           = invoke(text, minorPartnerId);
            }
            return(mserventry);
        }
        protected override void InternalProcessRecord()
        {
            MSERVEntry sendToPipeline = new MSERVEntry();

            if (base.Fields.IsModified("ExternalDirectoryOrganizationId"))
            {
                sendToPipeline = base.ProcessExternalOrgIdParameter(this.partnerId, this.minorPartnerId, (string address, int id) => base.AddMservEntry(address, id));
            }
            else if (base.Fields.IsModified("DomainName"))
            {
                sendToPipeline = base.ProcessDomainNameParameter(this.partnerId, this.minorPartnerId, (string address, int id) => base.AddMservEntry(address, id));
            }
            else
            {
                sendToPipeline = base.ProcessAddressParameter((this.partnerId != -1) ? this.partnerId : this.minorPartnerId, (string address, int id) => base.AddMservEntry(address, id));
            }
            base.WriteObject(sendToPipeline);
        }
        protected MSERVEntry ProcessAddressParameter(int id, Func <string, int, int> invoke)
        {
            MSERVEntry mserventry = new MSERVEntry();
            string     text       = (string)base.Fields["Address"];

            if (this.ShouldProcessPartnerId(text))
            {
                mserventry.AddressForPartnerId = text;
                mserventry.PartnerId           = invoke(text, id);
                MServDirectorySession mservDirectorySession = new MServDirectorySession(null);
                string forest;
                if (mservDirectorySession.TryGetForestFqdnFromPartnerId(mserventry.PartnerId, out forest))
                {
                    mserventry.Forest = forest;
                }
            }
            else
            {
                mserventry.AddressForMinorPartnerId = text;
                mserventry.MinorPartnerId           = invoke(text, id);
            }
            return(mserventry);
        }