Exchange Server Edge Transport Reports Wrong Version

Exchange-2010-Logo-733341

Excited to get started on our Exchange 2013 installs, we started with the mandatory schema extensions using: setup.exe /PrepareSchema
FAILED
Oh CRAP! Not during the schema upgrade was my first thought. It failed because it said I needed to upgrade all my servers. I had run through all the requirements for co-existing an Exchange 2013 and 2010 environment including installing the Exchange 2010 SP3 update on every Exchange 2010 server role.
I start with my Edge Transport and run:

Get-ExchangeServer | fl name, admindisplayversion

Yep, it reports all servers at the SP3 level.
Next up is my Mailbox servers. Running the same command reports that my Edge Transport is still running SP2. What?
Long story short, you should/may need to recreate your Edge Subscription to get the version of your Edge Transport reported properly in the rest of the Exchange environment.
I used these commands:
Edge Transport

New-EdgeSubscription -File c:\edgesub.xml

Hub Transport

New-EdgeSubscription -FileData ([byte[]]$(Get-Content -Path "c:\edgesub.xml" -Encoding Byte -ReadCount 0)) -Site "YOUR SITE" -CreateInternetSendConnector $false -CreateInboundSendConnector $false

Problem fixed…moving onto setup.exe /PrepareAD
Stay tuned!

Remove a DAG with Active Databases and other Exchange Tricks

shutterstock_124904123

More Summer Fun! We are preparing to install Exchange 2013 in our environment to replace our Exchange 2010. Our Exchange 2010 platform runs on our 3-node Hyper-V cluster with 5 virtual hosts and one physical as follows:
1 – Edge Server
2 – CAS Servers in an NLB Cluster
2 – Mailbox Servers in a DAG
1 – Unified Messaging Server (physical machine)

With the Exchange 2013 role redesign, I’ve decided to move to a HA configuration instead of CAS Arrays and DAGs. This will simplify management for my team. Our new platform will look like:
1 – Edge Server (Exchange 2010 Edge Transport because Microsoft wants you to move to their Cloud Services)
1 – Client Access Server
1 – Mailbox (Hosting 2 Mailbox Databases for staff)
1 – Mailbox (Hosting Archive Database and Unified Messaging)

Anyways, in preparation for the upgrade, I upgraded all the servers to Exchange 2010 SP3 and decided to nuke the failover capabilities before the upgrade to simplify things. Removing the CAS Array is a simple matter of removing the nodes and fixing a few DNS entries and mail routes.

Removing the DAG caused a little bit more anxiety as it affects our production databases and you have to click buttons that say Remove or Delete (my least favorite part of server administration).

Took a bit of Google work but I finally found a well written article to assist: Decommissioning Exchange 2010 DAG

I also had issues (doesn’t everyone) removing the Public Folder Replica. I don’t like having to resort to ADSIEdit but I’m pretty sure everyone thats ever tried to remove a legacy PF database has had to.

UAG SP3 Upgrade Process

While upgrading to UAG SP3, I missed the part where you should update TMG to SP2 Update Rollup 3. The UAG upgrade went smooth but didn’t work after I imported my old configuration. Luckily I had read enough to export the configuration which you need to convert to an SP3 schema using the UAGSchemaUpgradeUtil.exe in <UAG Install>\common\bin. After importing the config, UAG couldn’t update TMG properly with errors such as Firewall settings cannot be updated Error 0x80070057. I couldnt find anything online about it so let’s start troubleshooting.

Reboot…..nope.

Reinstall SP3….nope.

Hmm….upgrade schema and reimport the previous configuration….Ah HAH!

Apparently the schema update utility is dependent on TMG being at the proper SP level as well. Once I did this, I could also see all the firewall rules being created whereas before, there were only 4 rules.

 

Enjoy and this tip and RTFM!

Bob

Using Active Directory Thumbnails in SharePoint 2013

Add-PSSnapin Microsoft.SharePoint.PowerShell
$mySitesUrl = “https://mysite.sharepoint.com”
$mySites = Get-SPSite –Identity $mySitesUrl
Update-SPProfilePhotoStore –MySiteHostLocation $mySites –CreateThumbnailsForImportedPhotos $true

One issue I ran into recently had to do with changing the MySite URL. I installed to port 8443 initially to get around the issue of homing multiple SSL sites to the same IP address. After updating the Default Zone URL, all the profile pictures broke (The URL was still referring to the old port number). After spending several hours researching how to resolve this issue, I came up empty handed. I tried running the command above and it didn’t do anything to update the URLs. Stopping short of running a query to manually update the Profile database, I re-examined the PowerShell cmdlet above. Since I didn’t want to “create new thumbnails”, I tried removing that switch and sure enough, all the URLs in the profile database updated properly with the new URL.

One thing to keep in mind with this command is that it should be run as the Farm administrator since the User Profile Service Application runs with those credentials.

You should also setup a task in to run periodically. Since the default time for a User Profile Incremental Sync is 1:00 AM, I set up my scheduled task to fire at 2:00 AM. Your scheduled task can look like this:

Run As: DOMAIN\FarmAccount
Command: c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Arguments: -NonInteractive -NoProfile -File

Excellent Reference for AD Photos and their tie-in with Outlook, Lync and SharePoint:

Change SharePoint 2013 SuiteBarBrandingElementHtml with PowerShell

Here is a snippet of code to change (and link) the default “SharePoint” text in a new SharePoint 2013 site.


# Uncomment to load the Snap-in if you aren't using the SharePoint PowerShell Shortcut
# Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

# Enter the URL of the site you wish to update
$webappurl = "https://mysharepointsite.com"
$webApp = Get-SPWebApplication $webappurl

# Enter the HTML/Link for the text
$html = '<div class="ms-core-brandingText"><a style="color:white;" href="' + $webappurl + '">SharePoint</a></div>'
$webApp.SuiteBarBrandingElementHtml = $html

# Update SharePoint
$webApp.Update()