Active Directory Group Nesting Reference
There was an unfortunate layout error in Active Directory, 4th Edition which caused the tables in Chapter 2 which explain group nesting to have the column headings over the wrong columns. This of course changes the meaning and makes the tables less than helpful. I’ve gone ahead and pasted the tables and captions below with the correct column headings.
| Can contain domain local | Can contain domain global | Can contain universal | |||||
|---|---|---|---|---|---|---|---|
| Scope | Type | Distribution groups | Security groups | Distribution groups | Security groups | Distribution groups | Security groups |
| Domain local | Distribution groups | Yes | Yes | Yes | Yes | Yes | Yes |
| Security groups | Yes | Yes | Yes | Yes | Yes | Yes | |
| Domain global | Distribution groups | No | No | Yes | Yes | No | No |
| Security groups | No | No | Yes | Yes | No | No | |
| Universal | Distribution groups | No | No | Yes | Yes | Yes | Yes |
| Security groups | No | No | Yes | Yes | Yes | Yes | |
| Group scope | Can contain users and computers from | Can contain domain local groups from | ||
| Same domain | Different domain | Same domain | Different domain | |
| Domain local groups | Yes | Yes | Special | No |
| Domain global groups | Yes | No | No | No |
| Universal groups | Yes | Yes | No | No |
Table 2-7. Restrictions on group membership based on group scope
| Group scope | Can contain domain global groups from | Can contain universal groups from | ||
| Same domain | Different domain | Same domain | Different domain | |
| Domain local groups | Yes | Yes | Yes | Yes |
| Domain global groups | Special | No | No | No |
| Universal groups | Yes | Yes | Yes | Yes |
Table 2-8. Restrictions on group membership based on domain
Web Site Updates
I made a number of improvements to the website this weekend. The major change is that I moved from the in-box commenting in Graffiti to Disqus. I’ve been having issues with the comment system for a couple of months, and Disqus adds quite a bit of functionality. I was able to port over all of the comments with metadata intact, but, trackbacks and pingbacks are currently still going against the local database. I’ve tested in IE9 and Firefox 5/6, but, I haven’t validated other browsers. Let me know if there are any layout bugs or other issues.
For the curious, Release Notes:
Fixes
- Fixed CSS bugs causing all text to be highlighted on mouse-over in comment area
- Fixed HTML bug causing footer not to span complete page in some scenarios
- Fixed CSS bug causing highlighted code to be indented
- Removed favicon.ico from 1.3 upgrade
- Removed IE7 compatibility mode header
- Removed category level RSS autodiscovery publishing
- Changed Tag RSS autodiscovery publisher to include “Tag” in title
- Replaced checked binaries with release build files
New Functionality
- Replaced commenting infrastructure with Disqus
- Updated syntax highlighter to latest release
- Replaced PowerShell syntax highlighter brush with a better one from PoshCode site
Add Office 365 Exchange Online to your PowerShell Profile
The Exchange Online component of Office365 as well as Live@EDU exposes a variant of the Exchange Management Shell that you’d normally use if you were managing an on-premises Exchange 2010 organization. Connecting to it requires a few steps which are documented here. I’ve been pasting in the three commands one at a time now for months and it’s gotten rather annoying. A bit of research reveals that you can add custom PowerShell code that is available anytime you launch a shell by modifying your PowerShell profile. You can read more about the various profiles you can modify here, but, I decided to simply modify the one specific to my user account. To do this, open a new PowerShell window and run this command:
notepad $PROFILE
If you haven’t done this before, notepad will prompt you to create a new file. Plug this code in the resultant file:
function Connect-ExchangeOnline
{
$LiveCred = Get-Credential
$global:Session365 = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $global:Session365
}
function Disconnect-ExchangeOnline
{
Remove-PSSession $global:Session365
}
Save and restart PowerShell, and you’ll be able to run Connect-ExchangeOnline to connect to Exchange Online/Live@EDU in one easy step.
Script to Collect Hardware Inventory Data
The VBScript below will collect a number of hardware demographics from machines and output them to a CSV file. These demographics include:
- Hostname
- Serial Number
- Make
- Model
- BIOS Version
- Operating System
- CPU
- Memory (MB)
- Disk Drives
You’ll need to supply an input file with one hostname or fqdn per line. You can configure the input and output files on lines 14 and 15 of the script.
'==========================================================================
' NAME: Script to Collect Serial Number, Make, Model, Color, etc.
'
' AUTHOR: Brian Desmond
' DATE : 10/22/2006
' DATE : 7/16/2007 - added cpu, memory, disk, and error handling
'==========================================================================
Option Explicit
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Const PATH_TO_INPUT = "Machines.txt"
Const PATH_TO_OUTPUT = "MachineInventory.csv"
Dim fso
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim shl
Set shl = WScript.CreateObject("WScript.Shell")
Dim input
Set input = fso.OpenTextFile(PATH_TO_INPUT)
Dim output
Set output = fso.CreateTextFile(PATH_TO_OUTPUT, True)
output.WriteLine "Hostname,Serial Number,Make,Model,BIOS Version,Operating System,CPU,Memory (MB),Disk Drives"
Dim wmiService
Dim wmiResults
Dim hostname
Dim make
Dim model
Dim biosversion
Dim operatingSystem
Dim serialNumber
Dim cpu
Dim memory
Dim drives
Dim line
Dim exec
Dim pingResults
While Not input.AtEndOfStream
line = input.ReadLine
hostname = ""
make = ""
model = ""
biosversion = ""
operatingSystem = ""
serialNumber = ""
cpu = ""
memory = ""
drives = ""
Set exec = shl.Exec("ping -n 2 -w 1000 " & line)
pingResults = LCase(exec.StdOut.ReadAll)
If InStr(pingResults, "reply from") Then
WScript.Echo "Reply From: " & line
On Error Resume Next
Set wmiService = GetObject("winmgmts:\\" & line & "\root\CIMV2")
If Not Err.Number = 0 Then
output.WriteLine line & ",Error: " & Err.Description
WScript.Echo line & ",Error: " & Err.Description
On Error GoTo 0
Else
On Error GoTo 0
hostname = line
Set wmiResults = wmiService.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
Dim item
For Each item In wmiResults
serialNumber = Trim(item.SerialNumber)
biosversion = Trim(item.SMBIOSBIOSVersion)
Next
Set wmiResults = wmiService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each item In wmiResults
make = Trim(item.Manufacturer)
model = Trim(item.Model)
Next
Set wmiResults = wmiService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each item In wmiResults
operatingSystem = Trim(item.Name)
operatingSystem = Split(operatingSystem, "|")(0)
memory = Round(Trim(item.TotalVisibleMemorySize) / 1024, 2)
Next
Set wmiResults = wmiService.ExecQuery("SELECT * FROM Win32_Processor", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each item In wmiResults
cpu = Trim(item.Name)
Next
Set wmiResults = wmiService.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType=3", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
For Each item In wmiResults
drives = drives & Trim(item.DeviceID) & " " & Round(Trim(item.Size) / (1024^2), 2) & ";"
Next
output.WriteLine hostname & "," & serialNumber & "," & make & "," & model & "," & biosversion & "," & operatingSystem & "," & cpu & "," & memory & "," & drives
WScript.Echo hostname & "," & serialNumber & "," & make & "," & model & "," & biosversion & "," & operatingSystem & "," & cpu & "," & memory & "," & drives
End If
Else
output.WriteLine line & ",No Response"
WScript.Echo line & ",No Response"
End If
Wend
output.Close
input.Close
Set wmiService = Nothing
Set wmiresults = Nothing
Configuring the Quest Free/Busy Connector for Lotus Notes and Exchange – Part 3
In Part 1 we took at look at the architecture of the Quest Free/Busy (F/B) Connector in Coexistence Manager for Notes (CMN) as well as how Exchange interfaces with it. We also configured the F/B Connector web services and the Domino Free Busy Connector Service. In Part 2, we configured the Exchange Free Busy Connector Service, the Domino QCALCON task, and the Exchange organization. In this post, we’ll complete the configuration by configuring Lotus Notes as well as building a test user in Exchange and Lotus Notes to validate the configuration. At the end of this post you should have working Free/Busy coexistence between Exchange and Notes.
As a reminder, here’s a copy of our sample environment that will be referenced:
Configuring the Lotus Notes Domain
All of the configuration tasks in this section will be performed in the Domino Administrator tool.
- Browse to Configuration > Messaging > Domains.
- Select Add Domain on the toolbar.
- Populate the Basics tab with the following data:
- Domain type: Foreign Domain
- Foreign domain name: Exchange
- Populate the Mail Information tab with the following data:
- Gateway server name: LN-ADM01/CONTOSO.
- Gateway mail file name: mail.box.
- Populate the Calendar Information tab with the following data:
- Calendar system name: LN-ADM01/CONTOSO.
- Calendar system: mail.box.
- Click Save & Close.
At this point, Domino should begin routing Exchange calendar requests to the QCALCON task and over to Exchange. To test this, we’ll need to configure a couple test users.
Testing the Configuration
We’ll create two test users for this exercise. User George Washington will have mail on Lotus Notes, while user Abraham Lincoln will have mail on Exchange. First, let’s configure Exchange.
- Create a Contact in Exchange for George Washington. Specify an External Email Address (targetAddress) of gwashington@lotus.contoso.com.
- Create a Mailbox in Exchange for Abraham Lincoln. Ensure the primary email address for Abraham Lincoln is alincoln@contoso.com.
In step 1, we’ve created an object which will be used for routing mail as well as for ensuring that the availability service redirects free/busy information to the Quest components. Next, let’s add these users to Lotus Notes.
- Switch to the People & Groups tab in Domino Administrator.
- Browse to Domino Directories > CONTOSO’s Directory > People.
- Click Add Person.
- Populate the Basics tab as shown below:
- Populate the Miscellaneous tab as shown:
- Click Save & Close.
Next, we need to register George Washington with Notes.
- In People & Groups, expand People on the right under Tools, and click Register….
- Populate the Basics tab as shown. Be sure to select LN-SRV01 by clicking Registration Server….
- Check Advanced in the lower left
- Switch to the Address tab.
- Populate the Address tab as shown:
- Click Register.
- Press F9 to refresh the People view.
What we’ve done is created a Person document for Abraham Lincoln which forward to Exchange and specifies the Foreign Domain created earlier for calendaring. We’ve also created a full fledged mailbox enabled user for George Washington in Lotus Notes.
Testing
Populate Abraham Lincoln’s calendar with a few appointments in Exchange. In Lotus Notes, populate George Washington’s calendar with a few appointments as well.
- Open George Washington’s person document from the People view in the NAB.
- Click Open Mail File… on the toolbar.
- Click Mail and then Switch to Calendar in the upper left of George Washington’s mail file to open the calendar.
- Create a few appointments.
In Exchange, invite George Washington to a meeting using Outlook. Verify the free/busy information is displayed (e.g. no hash marks). In Lotus Notes, invite Abraham Lincoln to a meeting. verify that the Find Available Times tab shows free/busy information. Be advised that in both cases it may take a few moments for data to become available.
Troubleshooting
There are a number of places you can look to for troubleshooting information depending on where you think the problem lies. All of the Quest components log useful information to a file:
- QCALCON (Domino to Exchange lookups) – c:\lotus\domino\qcalcon.exe.log.
- Exchange Free/Busy Connector Service (Domino to Exchange lookups) – C:\Program Files (x86)\Quest Software\Quest Coexistence Manager for Notes\Free Busy Connector\ExchangeFreeBusyService.exe.log.
- Domino Free/Busy Connector Service (Exchange to Domino lookups) – C:\Program Files (x86)\Quest Software\Quest Coexistence Manager for Notes\Free Busy Connector\DominoFreeBusyService.exe.log.
One additional useful tip surrounding the Quest components deals with caching. Both components keep requests cached in memory for 5 minutes by default. When you're troubleshooting, this can be problematic as you must restart the service each time you change a user in Notes or Exchange to see the effect. You can go in the Advanced configuration of either service in PowerGUI and tweak the cache lifetimes to "0" to disable caching. Just be sure to return the cache to the default values once you put the environment in production.
The Outlook availability service logging is also quite useful. You can enable that by going to Options>Advanced>Other>Enable Troubleshooting Logging. Restart Outlook and create a new meeting request. You’ll find logging information in %temp%\olkas which will include the exact errors and XML returned by the Quest components.
Configuring the Quest Free/Busy Connector for Lotus Notes and Exchange – Part 2
In Part 1 we took at look at the architecture of the Quest Free/Busy (F/B) Connector in Coexistence Manager for Notes (CMN) as well as how Exchange interfaces with it. We also configured the F/B Connector web services and the Domino Free Busy Connector Service. In this post, we’ll configure the Exchange Free Busy Connector Service, the Domino QCALCON task, and the Exchange organization. As a reminder, here’s a copy of our sample environment that will be referenced:
Configuring the Exchange Free Busy Connector
- Create a standard mailbox enabled user (e.g. svc_xch_cmn_fb) in Exchange. This will be used by CMN to query Exchange F/B information.
- Launch PowerGUI on Q-EXFBC01.
- Browse to PowerGUI\CMN Free/Busy Connector Management\Configure Domino Server and Exchange Components.
- Launch the Configuration Wizard from the task pane.
- Preferred Exchange server: mail.contoso.com.
- Domain\Username: CONTOSO\svc_xch_cmn_fb.
- Password: (service account password).
- Complete the wizard.
- Start the Quest CMN Exchange Free/Busy Connector Service service.
Configuring the Exchange Organization
Configuring your Exchange organization is perhaps the easiest part of this project. You’ll simply need to configure an Availability Address Space for lotus.contoso.com. If you’re not familiar with this, take a moment to review this post.
- Launch the Exchange Management Shell (EMS).
- Run the following PowerShell command:
Add-AvailabilityAddressSpace -ForestName "lotus.contoso.com" -AccessMethod OrgWideFB -UseServiceAccount:$true
Configuring the QCALCON Task
The final server component you’ll need to configure is the QCALCON task. Tasks are background processes of sort in Domino at least to the extent I understand them. You can configure them to either run at startup or at a specific time. For this step, install PowerGUI and the CMN Domino Server Components on LN-ADM01. The task and its configuration files are installed directly in the Domino server folder (e.g. c:\lotus\domino).
Configuring the QCALCON task is quite straight-forward.
- Launch PowerGUI.
- Browse to PowerGUI\CMN Free/Busy Connector Management\Configure Domino Server and Exchange Components\Advanced\Domino Server Task (QCALCON)
- If prompted to browse for the Config File, you’ll find it under your Domino installation folder (e.g. c:\lotus\domino\qcalcon.exe.config).
- Select Set Foreign Domain Name in the task pane. Enter mail.box when prompted.
- Select Set Exchange Free/Busy Connector host name in the task pane. Enter Q-EXFBC01.
- Open your notes.ini file (likely in c:\lotus\domino\notes.ini), and verify that the ServerTask= line includes qcalcon. If it doesn’t, add it to the end of the list.
Note: You may need to provide a fully qualified hostname in step 4.
Once you’ve configured QCALCON, you can start the task.
- Launch the Lotus Domino Console (or connect remotely via Domino Administrator)
- Run “load qcalcon”. You should see output like this if it’s succesful:
06/26/2011 03:08:55.25 PM [08F4:0005-060C] SchMsgQHandles_New> Opening queues for LWPSCHEDGATEWAY
06/26/2011 03:08:55.25 PM [08F4:0005-060C] SchMsgQHandles_New> InputQ: 121D0h, error = 0h: No error
06/26/2011 03:08:55.25 PM [08F4:0005-060C] SchMsgQHandles_New> OutputQ: 122A8h, error = 0h: No error
06/26/2011 03:08:55.25 PM [08F4:0004-00F0] SchMsgQHandles_New> Opening queues for MAIL.BOX
06/26/2011 03:08:55.25 PM [08F4:0004-00F0] SchMsgQHandles_New> InputQ: 12380h, error = 0h: No error
06/26/2011 03:08:55.25 PM [08F4:0004-00F0] SchMsgQHandles_New> OutputQ: 12450h, error = 0h: No error
06/26/2011 03:08:55 PM QCalCon Server: Starting
06/26/2011 03:08:55 PM QCalCon Server: Version 1.0.3.10
06/26/2011 03:08:55 PM QCalCon Server: Creating queue for mail.box
06/26/2011 03:08:55 PM QCalCon Server: Creating queue for LWPSCHEDGATEWAY
06/26/2011 03:08:55 PM QCalCon Server: Started
In the next post in this series, we’ll look at configuring the proper documents in the Notes configuration as well as configuring test users in Exchange.
Configuring the Quest Free/Busy Connector for Lotus Notes and Exchange – Part 1
The goal of this post is to introduce the Quest Free/Busy (F/B) connector that comes with Coexistence Manager for Notes (CMN), discuss how it works, and discuss the interface with Exchange. In this post we’ll also configure the Quest Web Services and Domino Free Busy Connector Service. Future posts in this series will discuss configuring the remaining components of the CMN F/B Connector. First, let’s take a look at the sample environment we’ll be using for this discussion:
There are three components of the F/B Connector which you’ll need to deploy:
- Domino Free/Busy Service – This component is responsible for accepting F/B requests from Exchange users, retrieving, and processing the data from Domino, and returning it to Exchange. This component also includes two web services which run inside IIS:
- Autodiscover implementation
- Exchange Web Services (EWS) implementation
- Exchange Free/Busy Service – This component is responsible for accepting F/B requests from Lotus Notes (via QCALCON) for Exchange users, retrieving and processing the data, and returning it to QCALCON.
- QCALCON Task – This is a Domino server tasks from Quest which handles requests for Exchange user F/B information. These requests are sent to the Quest Exchange Free/Busy Service.
Quest recommends that you separate the first two components on to two separate servers for performance reasons. They don’t make any data readily available as to when this is necessary, so you’ll need to make a judgment call and do some testing in the lab as to whether or not this is necessary. In a large environment, it’s possible to scale some of the components out behind a load balancer as well. In addition, Quest also recommends physical hardware in lieu of Virtual Machines, although my personal opinion is that given proper resource allocation, this guidance is stuck somewhere in the era of the Notes UI design.
The way Quest integrates Notes F/B data with Exchange is clever, and to understand it, you’ll need to have a bit of background on how Outlook clients (and others) get F/B info. Prior to Exchange 2007, Exchange stored F/B information in Public Folders, and Outlook clients knew where to go in the Public Folder store to find the data. With the desire to move away from Public Folders, this information became available via Exchange Web Services (EWS), also sometimes called the Availability Service (AS). This is a SOAP based web service hosted on the CAS server and accessible via HTTPS. Outlook 2007 and newer knows how to access this endpoint as does Outlook for Mac and various other EWS clients. Exchange 2007 also introduced the ability to provide a means for cross-organization F/B info without any complex public folder replication. The way this works is you define an “availability address space” in Exchange which tells Exchange for a given subdomain, send those F/B requests over to a different AS endpoint. If you’re not familiar, take a look at this post before reading further. This functionality is what Quest leverages.
What Quest has done is re-implement the Autodiscover service as well as the Availability Service such that Exchange thinks it’s talking to another Exchange organization, when in fact it’s actually talking to the Quest Domino F/B server. In Exchange, we define an availability address space for lotus.contoso.com which will resolve (via Autodiscover) to Q-LNFBC01.
Pre Requisites
With the background information out of the way, let’s go ahead and start setting this up. You’re going to need a number of resources:
- One to two servers to install the Quest components. For this example, I’ll use the two pictured above.
- A Lotus Notes server to install the QCALCON task.
- Administrative access to Lotus Notes
- Exchange Organization Management level access to Exchange
- A standard Domino user ID file and password with mail file.
- A standard Exchange mailbox enabled user and password
Install PowerGUI on Q-EXFBC01 and Q-LNFBC01, and then Free/Busy coexistence components. The installers are quite self explanatory, so I won’t walk through those. Be sure to only install “Web Server Components” and “Lotus Notes Components” on the Domino F/B server and the “Exchange Components” on the Exchange F/B server.
Configuring the Web Services and Domino Free Busy Connector Service
Once the installations are complete, we’ll use PowerGUI to configure the web services and Domino Free/Busy service.
- Launch PowerGUI on Q-LNFBC01.
- Browse to PowerGUI\CMN Free/Busy Connector Management\Configure Web Services and Lotus Notes Components in the Navigation Tree.
- Select Configuration Wizard from the task pane on the right.
- Configure an SMTP domain of lotus.contoso.com. Select autodiscover.lotus.contoso.com.
- Configure the following values for Domino:
- Domino Server Name: LN-ADM01/CONTOSO.
- Domino ID File Path: (browse to the ID file)
- Domino Password: (password to the ID file)
- Complete the wizard.
- Start the “Quest CMN Domino Free/Busy Connector Service” service.
- Launch the Free Busy Connector Management Shell (Start>All Programs>Quest Software>Quest Coexistence Manager for Notes>Free Busy Connector).
- Run this command:
Set-CmnDominoFreeBusyConfig -SmtpDomainMappings "lotus.contoso.com=contoso.com"
- Restart the Quest CMN Domino Free/Busy Connector Service.
Next, you’ll need to obtain an SSL certificate for the web services. While it’s possible to use a self signed certificate, your troubleshooting overhead will be substantially minimized if you obtain a proper trusted certificate. To obtain a certificate, you’ll need to generate a Certificate Signing Request (CSR).
- Launch Internet Information Services (IIS) Manager (start>run>inetmgr).
- Select Q-LNFBC01 in the COnnections tree.
- Double click Server Certificates in the center pane.
- Select Create Certificate Request in the task pane on the right.
- Enter a Common name of autodiscover.lotus.contoso.com and populate the request of the screen as appropriate.
- Upload the resultant CSR to your Certificate Authority (I recommend DigiCert if you don’t have a preference).
Once you receive the certificate back from your CA, return to the Server Certificates view in IIS Manager.
- Select Complete Certificate Request in the task pane on the right.
- Browse to the file you received from your CA and complete the wizard.
- Browse to Q-LNFBC01\Sites\Default Web Site in the Connections pane.
- Select Bindings in the task pane at right.
- Click Add.
- Select type https.
- Find your SSL certificate in the SSL certificate drop-down.
In the next post in this series, we’ll configure the Exchange Fee/Busy Connector and the Domino QCALCON server task.
Cross-Forest Availability with Exchange 2007 and Exchange 2010
Prior to Exchange 2007, Exchange stored F/B information in Public Folders, and Outlook clients knew where to go in the Public Folder store to find the data. With the desire to move away from Public Folders, this information became available via Exchange Web Services (EWS), also sometimes called the Availability Service (AS). This is a SOAP based web service hosted on the CAS server and accessible via HTTPS. Outlook 2007 and newer knows how to access this endpoint as does Outlook for Mac and various other EWS clients. Exchange 2007 also introduced the ability to provide a means for cross-organization F/B info without any complex public folder replication. The way this works is you define an “availability address space” in Exchange which tells Exchange for a given subdomain, send those F/B requests over to a different AS endpoint. This is a very common scenario particularly with mergers and acquisitions. Let’s consider one such scenario and see how to set this up (as well as how it works).
In an effort to become Santa’s sole source cargo supplier, your employer, Wing Tip Toys (wingtiptoys.com), acquires the Fabrikam Coal Company (fabrikam.com). You manage the Exchange 2010 organization for Wing Tip Toys, and Fabrikam Coal runs Exchange 2007. Later in the merger process, you’ll consolidate Fabrikam into your organization, but, as soon as the merger closes, you’ll need to make it possible for Wing Tip Toys users to view F/B information for Fabrikam users. To do this, you need to configure an Availability Address Space in your Exchange organization for fabrikam.com. You can do this using these PowerShell commands:
# These credentials are a standard mailbox enabled user in the Fabrikam organization $credentials = Get-Credential Add-AvailabilityAddressSpace -ForestName "fabrikam.com" -AccessMethod OrgWideFB -Credentials $credentials
This tells Exchange to route F/B requests for *@fabrikam.com to a CAS in the fabrikam.com organization. In order to find Fabrikam’s CAS servers, your CAS servers will use Autodiscover. One important thing to note is that your CAS will ONLY use this route we’ve defined if the Fabrikam user we’re trying to retrieve F/B info for has a Contact or Mail Enabled User (MEU) in the Wing Tip Toys Active Directory environment. That contact or MEU must have a targetAddress which ends with @fabrikam.com.
Here’s a quick (simplified) diagram of what happens:
- WTT user looks up F/B info for john@fabrikam.com.
- WTT CAS searches Active Directory for a contact or MEU with a targetAddress of john@fabrikam.com.
- Active Directory returns a match.
- WTT CAS performs an Autodiscover search for Fabrikam.com (this includes all of the usual Autodiscover mechanisms).
- Fabrikam returns Autodiscover results.
- WTT contacts Fabrikam’s availability service (authenticating with the credentials provided earlier) and asks for information pertaining to john@fabrikam.com.
- Fabrikam’s AS returns information to WTT’s CAS.
- The WTT CAS returns the information to the user.
When testing cross-forest F/B lookups, you may need some extra logging to sort things out. The best place to collect this data without engaging PSS is actually in the Outlook client. You can enable this logging by opening Outlook’s Options (either via the Tools menu in Outlook 2007 or backstage in Outlook 2010), and then going to Advanced. Check the “Enable troubleshooting logging” box and restart Outlook. When you make future Free/Busy requests, you’ll find those logged under %temp%\olkas.
Getting Started with a Lotus Notes to Exchange Mail Migration
I’m a reformed Lotus Notes user and from time to time, as a consultant, I work on projects that lead up to the liberation (or, “migration”, if you prefer) of Lotus Notes users. As luck has it, I’ve invested quite a few cycles the past few weeks teeing one of these projects off. There’s quite a bit involved in planning one of these projects, and that’s not my goal for this discussion. What I thought would be useful, though is to give a quick overview of the coexistence and migration components as well as a couple links I’ve come across that are pretty useful. I’ll put some info on configuring the various coexistence pieces in a separate series of posts later. First, two excellent resources if you’re just getting started with Notes:
- http://www.slideshare.net/NerdGirlJess/jmp105-how-stuff-works-domino-style
- http://www.slideshare.net/NerdGirlJess/bp108-admin-for-the-developer-install
Here’s my three part series on configuring the Free/Busy Connector:
My assumption if you’re reading this is that you’re familiar with Exchange but not with Lotus Notes. It’s very helpful to have skilled and knowledgeable Lotus administrators at your disposal, but, sometimes this doesn’t work out in your favor. With that in mind, I’ll do what I can to help you navigate the components of Lotus Notes that are going to be relevant. The first thing you’re going to need is a copy of the Domino Administrator and Lotus Notes client on your machine. This often comes as a single package – just be sure to select “single user mode” during the install if you’re prompted. First, though, the Domino Administrator end user experience, in case you aren’t yet familiar:
At some point you’re going to need to do something that’s only available in the Domino server’s command line interface. If you’re running Domino on Windows, you can Remote Desktop to the server and launch the Lotus Domino Console. If you’re running Domino on something else, or you don’t have Remote Desktop access, the console pictured below is also available inside the Domino Administrator program. To get to the console via Domino Administrator, switch to the Server tab and then the Status tab inside there, and finally, select Server Console. Pictured below is the Lotus Domino Console application available on Windows:
The Help file in the Domino Administrator console is really pretty useful. Unfortunately it’s a bit of a clique thing, because IBM seems to primarily make the help file available in the form of a Notes database. Some places seem to various older versions of it posted in HTML format on the Internet, but, Google isn’t real good at finding this it seems. If you simply go to Help>Help Topics on the menu bar of Domino Administrator, the database will open up.
The Global Address List (GAL) equivalent in Notes is the Notes Address Book, usually called the “NAB”. It’s possible to have more than one of these, but, for simplicity we’ll assume you’ve only got one. The NAB is usually stored inside a database called names.nsf. Inside the NAB are person documents for all your users. The person document is the rough equivalent of the Active Directory user object. Users with a proper mailbox in Notes will have the “mail file” field populated in their person document. Mail files are what Notes calls mailboxes. Everyone gets a separate file on the file system. You’ll be spending a good amount of time in the NAB, so hop over to the People & Groups tab in the Domino Administrator program and take a look. You can double click in any field to edit it.
If you’d like to create a new user and mailbox for them, switch over to the Configuration tab and then drill down to Registration> Person on the right. Fill in the form and check Advanced in the bottom left. On the Mail tab, pick where you want to create their mail file using the Mail Server button. On the ID Info tab, check the In File” button and browse to a folder to store the Notes ID you’ll need to access this user’s mail file. Finally, click Register to make things happen. If you go back to the NAB, you should see your new user.
That’s the quick tour. As painful as the tool looks, it’s moderately intuitive once you start poking around. If nothing else, the contextual help in the document editors can be amusing:
The actual migration of data and the coexistence period are two problems you’ll need to tackle. There are a couple companies that make tools in this space – Quest and BinaryTree. I’m familiar with the Quest offerings in this space and I’ve used them successfully at a number of customers, so, that’s what I’ll focus on going forward. That said, BinaryTree is a reputable ISV and you should certainly do your homework. On the Quest side, there are two products which can be purchased individually:
- Notes Migrator for Exchange (NME)
- Coexistence Manager for Notes (CMN)
NME is the product which is primarily responsible for the actual data migration. It can do some limited directory sync task, but, it’s really geared towards migrating data. CMN on the other hand has three components:
- Free/Busy Connector
- Mail Connector
- Directory Connector
The Free/Busy (F/B) connector enables Lotus Notes users to view calendar information for Exchange users and vice-versa. This component is the most complex to setup, but also quite likely the most important. The Mail Connector serves as an SMTP gateway between Notes and Exchange. The service adjusts the contents of messages so that they work and display correctly in the opposing clients. It also can handle some of the nuances of Lotus Notes email such as Doc Links and Active Mail. Finally, the Directory connector will ensure that users or contacts in Exchange and person documents in Notes are in sync and the address books for end users are functionally identical regardless of which system they’re on.
HP E5000 Videos Posted
Earlier in the year I got to spend two days at HP in Cupertino with Tony Redmond and Paul Robichaux talking to HP and Microsoft about HP’s new E5000 messaging appliance for Exchange 2010. In a nutshell, the E5000 is a complete out-of-the-box highly available Exchange 2010 solution which includes a 2 mailbox server DAG with pre-designed storage as well as redundant Client Access (CAS) and Hub Transport servers. HP wrapped the Exchange setup and configuration steps you’d often hire a consultant for with a number of easy to use wizards that will take you from a rather large ~170 pound box to a running Exchange 2010 solution in the course of a day or so.
While in Cupertino, Tony, Paul, and I spent two days inside a TV studio learning about the new appliance, evaluating it, and discussing our take on it. HP has over the course of a few months cut our discussions down to half a dozen 5 – 10 minute videos about the product. It was a really interesting experience to do this on camera even after the numerous reshoots as someone said something comical and the whole thing broke down.
In any case, if you’re interested in the new solution, check out the videos below, with descriptions I poached from Paul’s blog.
- Introduction to HP E5000 Hardware, featuring lots of oohing and aahing over the E5000′s chassis. Although HP’s Dean Steadman is in this video, I don’t think you can see the bandage he had to put on after an unlucky encounter with a sharp edge on the E5000 prototype. Too bad; we had great fun mocking him because of it.
- HP E5000: Complete and Optimized: a roundtable discussion of why HP designed the E5000 the way they did, and what they were attempting to accomplish with it.
- HP E5000: Simple and Cost Efficient, in which we explore the thorny question of how you get support for something that combines an operating system and application from Microsoft with HP’s hardware.
- HP E5000: Resilient/Highly Available, in which we explore whether you can safely use the word “appliance” to describe the E5000 (I voted that yes, we in fact could.)
- HP E5000: Large Low Cost Mailboxes. Do you want to go back to 100MB mailboxes? Neither do Microsoft’s Jeff Mealiffe or HP’s Karl Robinson, both of whom join our roundtable discussion of ways to deliver large, cheap mailboxes to sate users’ unceasing demands.
- HP E5000: Installation & Startup, in which HP’s Karl Robinson and Paul Robichaux walk through the out-of-the-box setup process. (Hint: we skip the boring parts, like installing Exchange.)
If you’re looking for a ready to go Exchange solution for somewhere in the neighborhood of 1,000 to 3,000 mailboxes, I’d really encourage you to check this solution out. I was certainly impressed by the appliance.

