private void ExecuteCrmAddresses(ExtendedPluginContext context)
        {
            // Account is used here, but since all Entities have the same exact field names, this works just fine
            var target = context.GetTarget <Entity>();

            switch (target.LogicalName)
            {
            case Contact.EntityLogicalName:
                RemoveFormatting(target, Contact.Fields.Address3_Telephone1);
                RemoveFormatting(target, Contact.Fields.Address3_Telephone2);
                RemoveFormatting(target, Contact.Fields.Address3_Telephone3);
                RemoveFormatting(target, Contact.Fields.MobilePhone);
                break;

            case Lead.EntityLogicalName:
            case SystemUser.EntityLogicalName:
                RemoveFormatting(target, Contact.Fields.MobilePhone);
                break;
            }

            RemoveFormatting(target, Account.Fields.Address1_Telephone1);
            RemoveFormatting(target, Account.Fields.Address1_Telephone2);
            RemoveFormatting(target, Account.Fields.Address1_Telephone3);
            RemoveFormatting(target, Account.Fields.Address2_Telephone1);
            RemoveFormatting(target, Account.Fields.Address2_Telephone2);
            RemoveFormatting(target, Account.Fields.Address2_Telephone3);
        }
        private void ExecuteCrmPhoneNumber(ExtendedPluginContext context)
        {
            // Account is used here, but since all Entities have the same exact field names, this works just fine
            var target = context.GetTarget <Entity>();

            RemoveFormatting(target, Account.Fields.Telephone1);
            RemoveFormatting(target, Account.Fields.Telephone2);
            RemoveFormatting(target, Account.Fields.Telephone3);

            ExecuteCrmAddresses(context);
        }
        protected override void ExecuteInternal(ExtendedPluginContext context)
        {
            // Get the Target
            var contact = context.GetTarget <Contact>();

            if (string.IsNullOrWhiteSpace(contact.Address1_Line1))
            {
                context.Trace(SyncContactToAccount.AddressNotUpdatedMessage);
                return;
            }

            using (var crm = new CrmContext(context.OrganizationService))
            {
                var accounts = crm.AccountSet.Where(a => a.PrimaryContactId.Id == contact.Id);
                foreach (var account in accounts)
                {
                    UpdateAccountAddress(context.OrganizationService, account.Id, contact);
                }
            }
        }