Thumbnail Photos in Exchange 2010 and Office 2010

[tweetmeme source=”stalehansen” only_single=false]Finally there is a built in way to add thumbnails of people in Exchange and Global Addresslist. In earlier Exchange versions there were no function to import pictures in to schema and therefore a lot of different scripts and third party tools was designed to import pictures. Now we can deliver this as a part of any other Exchange project. Office 2010 is built around showing thumbnail photo of users in E-mail, Global Address List, Communicator, and all other office products where you find a username. This is really an important part of the Unified Communications experience

Here are some facts:

  • You need to activate the thumbnailPhoto attribute in schema to replicate to Global Catalog
  • The attribute is limited to 10K in size
  • The recommended thumbnail size is 96*96 pixels
  • In Exchange PowerShell use the cmdlet Import-RecipientDataProperty
    • Import-RecipientDataProperty -Identity “Bharat Suneja” -Picture -FileData ([Byte[]]$(Get-Content -Path “C:\pictures\BharatSuneja.jpg” -Encoding Byte -ReadCount 0))
  • After the thumbnails are uploaded you need to update OAB, so that it will point to AD for the images
    • Update-OfflineAddressBook “Default Offline Address Book”
  • For true offline use, you could modify the ConfiguredAttributes of an OAB to make thumbnailPhoto a Value attribute
    • This will increase the size of the OAB so it need to be tested before deployed

Anderson Patricio, MVP has created a script to automate this pocess: https://msunified.net/exchange-downloads/script-uploadphoto-ps1/
GAL Photos: Frequently Asked Questions: http://msexchangeteam.com/archive/2010/06/01/455005.aspx
See this article for the full story: http://msexchangeteam.com/archive/2010/03/10/454223.aspx

Certified MCITP Enterprise Messaging Administrator 2010!

[tweetmeme source=”stalehansen” only_single=false] Finally I got time to take the latest PRO exam for Exchange 2010. My score was 831 and it was a lot of questions about the new features in Exchange 2010 like DAG and RBAC. It was also questions about message hygiene and compliance. I scored max on designing and deploying Exchange 2010, and thats mostly because I spend most of my Exchange time doing just that. My lowest scores was on compliance, monitoring and security. Mostly because most of my customers don’t have big needs in those areas. By getting certified MCITP: EMA 2010 so soon after its release I became a Charter Member.

Here is some info about what it means to be a MCITP: EMA 2010

Candidates for this exam are responsible for the planning and deployment of the Exchange servers in an enterprise environment. They have a minimum of two years of experience administering, deploying, managing, monitoring, upgrading, migrating, and designing Exchange servers. 

The Microsoft Certified IT Professional (MCITP) certification helps validate that an individual has the comprehensive set of skills necessary to perform a particular job role, such as database administrator or enterprise messaging administrator. MCITP certifications build on the technical proficiency measured in the Microsoft Certified Technology Specialist (MCTS) certifications. Therefore, you will earn one or more MCTS certifications on your way to earning an MCITP certification. MCITP candidates are capable of deploying, building, designing, optimizing, and operating technologies for a particular job role. They make the design and technology decisions necessary to ensure successful technology implementation projects.

Install Exchange 2010 with latest update in Unattended Mode

[tweetmeme source=”stalehansen” only_single=false]If you are planning to install a new Microsoft Exchange Server 2010, you should probably consider installing the latest update before configuring any of the server roles.

The below guide is not written by me. I found it so useful that I want to repost it here on my blog for later reference. This guide is written by Elie Bou Issa and the original article can be found here:  http://blog.elieb.info/2010/03/06/exchange-2010-with-ur2-installation-in-unattended-mode.aspx

In the below scenario, we are installing the Mailbox role, the Client Access role and the Hub Transport role along with Update Rollup 2 in unattended mode. The exchange installation root folder is called exch and the Update Rollup 2 is placed under C:\Exchange2010\Patches. To install the exchange prerequisites, run “Exchange-Typical.xml” from the Scripts folder found in the installation directory. You can also take a look at this post for installing the prerequisites manually: https://msunified.net/2009/10/30/exchange-2010-prerequisites-on-server-2008-r2/
 
After successfully installing the prerequisites, set the NetTcpPortSharing service startup type to automatic by running the below command
Now, it is time to run the setup in unattended mode.
To do that, run the following command from the exchange installation directory:
Setup.com /m:Install /r:M,C,H /OrganizationName:Name of the Organization /UpdatesDir: Updates path 
If you wish to check the different options for unattended setup, you can refer to Install Exchange 2010 in Unattended Mode
After completing the installation, you can check the product version by clicking Help-> About from the Exchange Management Console as shown below:

Set External Web Farm FQDN Using lcscmd

[tweetmeme source=”stalehansen” only_single=false]I had a problem at a customer site with Live Meeting that external users could not join the meetings. External and anonymous users got the same message. Internal Live Meeting was working just fine and so did Communicator externally.    

The EDGE server gave the following Event ID:    

  • Source: OCS Web Conferencing Edge Server
  • Event ID: 41993
  • Level: Error
  • Description:  Failed to process data received from the client

That did not tell me much so I checked the Front End server. It had the following Event ID:

  • Source: OCS Data MCU
  • Event ID: 41059
  • Level: Error
  • Description:  Failed to connect external users because the download URL is invalid. 

It was now clear to me that the external web farm FQDN had to be wrong so I checked the Meeting Settings at pool level. The “External URL for meeting content download” was empty. Also the addressbook URL was empty. I decided to set the external web farm FQDN and found a way using lcscmd. After using lcscmd as described below external Live Meeting users could connect just fine. With the below steps I was able to set the external webfarm FQDN.

NOTE: PoolName in an Enterprise Edition deployment is the full FQDN name like ocspool01.domain.local. In a Standard Edition deployment you only need the Front End Server name like ocs-server and do not use FQDN

Step 1. Check current settings
To check the current URLs configured for these services, you can use LCSCMD.exe, and run the following:
Lcscmd /web /action:ListWMISettings /poolname:poolName 
 To retrieve the settings, check out the created html in the location provided after the command

Step 2. Update External URL
To update the external URL, you need to run the following command:
Lcscmd /web /action:updatepoolurls /externalwebfqdn:WebfarmFQDN /poolname:poolname   

Step 3. Check the settings again
Rerun the line stated in Step 1 to check your settings again, and check the created html file:
Lcscmd /web /action:ListWMISettings /poolname:poolName  

To clear the external URL in one step, just run the following:
Lcscmd /web /action:clearpoolexternalurls /poolname:poolName    

For more information, check the following link: http://support.microsoft.com/kb/938288
Thanks to: http://www.pro-exchange.eu/modules.php?$1&name=News&file=article&sid=971
To update internal URL, see how to here: http://mikestacy.typepad.com/mike-stacys-blog/2009/04/updating-the-ocs-r2-internal-urls.html

Official Microsoft OCS Reference

[tweetmeme source=”stalehansen” only_single=false]I am pleaced to announce that a OCS solution I designed and deployed is featured as an Official Microsoft Reference. It is an Enterprise Voice solution based on SIP-Trunk and delivers voice to 12 locations. We competed against a phone solution purely based on mobile phones with a netcentric call center solution. The customer wanted single number reach using the mobile phone as the only number and simple management.

With OCS we could deliver:

  • PSTN delivered over SIP-Trunk using Telenor as vendor
  • Mobile phone number as the only number shown when dialing from OCS
  • Dual Fork when calling the mobile number
  • Presence status delivered from mobile phone network directly integrated with OCS, without the use of the Communicator client
  • Dial-in Conferencing
  • Response Groups
  • Attendant Console

The bonus was the full Unified Communications solution that was delivered with OCS, wich the other solution did not have, with presence, chat, video and collaboration across multiple locations.

The customer was very pleased with the solution and it works as intended. The article is in norwegian, but one thing to note is that the customer appreciate  the simplicity of administering OCS as a telephony solution vs a regular PBX because it’s Microsoft, it’s based on AD and they can manage and update it themselves.

Check out the Official Microsoft Reference here: http://www.microsoft.no/msno/MSNO_CR/web/CompanyDetails.aspx?id=168

OCS Downloads

ocs_logo1
Official download pages:
TechCenter Office Communications Server 2007 R2 and Clients Downloads
TechCenter Office Communications Server and Client Downloads
Updates Resource Center for Office Communications Server 2007 R2 and Clients
Latest Cumulative Hotfix update for Office Communications Server 2007 R2 and Clients – CU9 June 2011

Continue reading

Configure Exchange 2010 InternalUrl PowerShell script

[tweetmeme source=”stalehansen” only_single=false]

UPDATE: This script has been updated and revamped 07.05.2010 and described in this post: https://msunified.net/2010/05/07/script-for-configuring-exchange-2010-internal-and-external-urls/

In Exchange 2010 you need to set the internal URL for various services on the Client Access Server. Outlook 2007 uses autodiscover internally to connect to the exchange server. If internal URL is configured wrong you could get certificate errors when logging on to Outlook as well as errors when using other services internally.

This script may come in handy in the following scenarios

  • Initial configuration
  • Expansion in the infrastructure with load balanced CAS
  • Change in internal FQDN if you change certificate name
  • Change from https to http
  • When you have a total disaster on site 1 and need to fail over to a second site with a passive DAG server that holds all server roles

 It is a very simple script, if you have some advice to make the script better I would be happy if you let me know. The script does the following:

  • The server path is specified with a prompt
  • The script is set up with “-identity *” if you have more than one instance you need to specify wich instance you want to configure
  • The url is generated using the variable and the default location of the services
  • After configuring the URL’s the scritp lists all changes so its easy to doublecheck the configuration
  • The UM role is excluded because it is not supported to be hosted on the same server as CAS

To run the script do the following:

  • Copy this into a txt file and rename it to a ps1 file
  • Open powershell and navigate to the location where the file is saved
  • Use tab in powershell to get the correct run syntax
  • Run it and type the correct FQDN like this when prompted: https://yourcasserver.domain.local
#InternalURL.ps1
$urlpath = Read-Host "Type internal Client Access FQDN starting with http:// or https://"
Set-AutodiscoverVirtualDirectory -Identity * –internalurl “$urlpath/autodiscover/autodiscover.xml”
Set-ClientAccessServer –Identity * –AutodiscoverServiceInternalUri “$urlpath/autodiscover/autodiscover.xml”
Set-webservicesvirtualdirectory –Identity * –internalurl “$urlpath/ews/exchange.asmx”
Set-oabvirtualdirectory –Identity * –internalurl “$urlpath/oab”
Set-owavirtualdirectory –Identity * –internalurl “$urlpath/owa”
Set-ecpvirtualdirectory –Identity * –internalurl “$urlpath/ecp”
Set-ActiveSyncVirtualDirectory -Identity * -InternalUrl "$urlpath/Microsoft-Server-ActiveSync"
#get commands to  to doublecheck the config
get-AutodiscoverVirtualDirectory | ft identity,internalurl
get-ClientAccessServer | ft identity,AutodiscoverServiceInternalUri
get-webservicesvirtualdirectory | ft identity,internalurl
get-oabvirtualdirectory | ft identity,internalurl
get-owavirtualdirectory | ft identity,internalurl
get-ecpvirtualdirectory | ft identity,internalurl
get-ActiveSyncVirtualDirectory | ft identity,internalurl