Tag Archives: Public Folder

Now migrate your modern Public folders of on-prem Exchange Server 2013, 2016 to Exchange Online


Yesterday we announced the availability of public folder migration from Exchange Server 2013/2016 on-premises to Exchange Online!

The Key requirements are,

  • Exchange Server 2013 CU15 (or later), Exchange Server 2016 CU4 (or later)
  • Exchange on-premises hybrid configured with Exchange Online

So make sure to follow the respective article suitable to you:

Hope this helps.

Exchange Server 2007, 2010: How to query user mailboxes, its permissions using Exchange PowerShell?


In Exchange Server 2007/2010, you can use Exchange PowerShell cmdlets (especially using Get-Mailbox, Get-MailboxPermission, Get-ADPermission, Get-MailboxFolderPermission) to get a verity of info. I played with couple of the below in different scenarios and want to share the same with you – so that you can give a shot and make use of.

Scenario # 1: How to query permissions on a mailbox (testuser1)?
> Get-MailboxPermission test1

image

Scenario #2: How to query permissions of all the mailboxes on a particular server?
> Get-Mailbox –Server “ServerName” | Get-MailboxPermission

image

Scenario #3: How to query permissions of all the mailboxes?
> Get-Mailbox | Get-MailboxPermission
Note: This will get the list of all permissions (including SELF permissions and inherited permissions)

image

Scenario # 4: How to query permissions of all the mailboxes (filter out SELF and inherited permissions)?
> Get-Mailbox | Get-MailboxPermission | where {$_.user.tostring() -ne "NT AUTHORITYSELF" -and $_.IsInherited -eq $false}

Scenario #5: How to query mailbox permissions and Security permissions (only enumerate permissions that are not Inherited)?
> Get-Mailbox | Get-MailboxPermission | where {$_.IsInherited -eq $False}
Note: The above query will get you the “explicitly assigned permissions”

Scenario #6: How to query the explicitly assigned permissions (filter out SELF permissions)?
> Get-Mailbox | Get-MailboxPermission | where { ($_.IsInherited -eq $false) -and -not ($_.User -like “NT AUTHORITYSELF”) }

Scenario #7: How to query list of all mailboxes with Send-As permission assigned on them?
> Get-Mailbox | Get-ADPermission | where {($_.ExtendedRights -like “*Send-As*”)} | FT –Wrap
Note: This will get the list of mailboxes with Send-As permission assigned. Also you can notice that it shows Send-As permissions assigned to SELF on all mailboxes also.

Scenario #8: How to query list of all mailboxes with Send-As permission assigned on them (filter out SELF and inherited permissions as similar to Scenario #4)?
> Get-Mailbox | Get-ADPermission | where {($_.ExtendedRights -like “*Send-As*”) -and ($_.IsInherited -eq $false) -and -not ($_.User -like “NT AUTHORITYSELF”)} | FT –Wrap

Scenario #9: How to query the permissions of shared calendar in Exchange 2010?
> Get-MailboxFolderPermission –identity “mailboxaccount*:Calendar”
Note: If you just try Get-MailboxFolderPermission with identity with mailboxaccount won’t get you the above.

Scenario #10: How to query the users rights to a specific users mailbox?
> Get-MailboxPermission –identity “username” | fl user, accessrights

image

Scenario #11: How to query the permissions for every users mailbox?
> Get-MailboxPermission –identity * | fl user, identity, accessrights

image

Note:

+ Exporting the data:
At anypoint of time, if you want to export the above results to a CSV file, then you can use “Export-csv”. Say, let we try with one of the above scenario – try with scenario # 2:
> Get-Mailbox | Get-MailboxPermission | Export-csv C:permissions.csv

image

+ Automation using .Net Framework:
If you want to like to add Exchange management capabilities to your Microsoft .NET Framework–based applications then you can try the above by referring the following: http://msdn.microsoft.com/en-us/library/bb332449(v=exchg.80).aspx and http://msdn.microsoft.com/en-us/library/ff326159(v=exchg.140).aspx.

Happy PowerShelling and automation…!!

Migration: Exchange Public folders and its future


Public Folders are used in earlier versions of Microsoft Exchange Server to store free/busy data and files. From Microsoft Exchange Server 2007, free/busy data is no longer stored in public folders. It’s recommend that you do not store files in public folders in Exchange 2007. Instead, consider using Microsoft Office SharePoint, or Windows SharePoint Services. Public folders are included and supported in Exchange 2007 and 2010. However, future releases of Microsoft Exchange might not include public folders. You can visit http://blogs.technet.com/b/exchange/archive/2006/02/20/419994.aspx. Also, you can refer MS Exchange team blog have posted the updated public folder guidance for versions of Exchange past Exchange 2007.

So, what are my options?

If you’re building something new, you should look at the requirements and building on the SharePoint Technologies platform:

+ Starting with Exchange 2007, we recommend that applications use the Availability service to provide free/busy data for Exchange mailbox users. Windows SharePoint Services replaces the file sharing functionality that public folders provide. You must redesign applications that use public folders to use Exchange Web Services.
+ Also consider redesigning custom applications as early as possible as future versions of Microsoft Exchange may not contain public folders.
+ In addition to that you can refer the wonderful blogpost by Joel.

Exchange Server Utility : PFDAVAdmin update is released


I use PFDAVAdmin  utility [Exchange Server Public Folder Distributed Authoring and Versioning (DAV)-based Administration tool]  to perform various management tasks related to public folders and mailboxes. An updated version of the PFDAVAdmin tool has been released to the web on 04/06/2010 (the prior version on the Download Center was from April of 2007) @ Microsoft Download Center. You can get it from the download center at this link: http://www.microsoft.com/downloads/details.aspx?familyid=635BE792-D8AD-49E3-ADA4-E2422C0AB424.

Per MSExchange.com’s blog post, this update contains various bug fixes that have been made over the last three years. It also has some changes that make it work better against Exchange 2007. If you need similar functionality for Exchange 2010, use ExFolders instead

Please note:

  • The dependency on .NET Framework 1.1 remains, which means you should run PFDAVAdmin from a workstation with Framework 1.1 installed – you should not install this old version of the framework on your Exchange servers, because it makes IIS unhappy.
  • PFDAVAdmin still cannot connect to Exchange 2010 servers, because WebDAV is gone from 2010.

Custom forms deployment : Where we can publish Outlook Custom forms?


In Outlook, custom forms are typically published to a forms library so that only one copy of a form is stored on your computer. Individual items contain a Message Class field that indicates which form to use to display the data that is contained in the item. When you publish custom forms to a forms library, Microsoft Exchange Server-based computers and Outlook use considerably less resources and bandwidth because the form itself does not need to be stored within each individual item.

Considerations When You Are Deciding Where to Publish a Form:

There are many questions to take into account when you are deciding where to publish a form:

  • Is the form based on a folder solution, or is it an e-mail message form that is designed to be sent to recipients?
  • Are you using an Exchange Server-based computer? If you are using an Exchange Server-based computer, is it possible to publish the form to the Organizational Forms Library, or has your organization placed restrictions on what types of forms can be stored there?
  • How many people need access to the form?
  • Will the form be updated often, making it important to have only one copy of the form deployed centrally?
  • Does the form need to be available offline?
  • If this is an e-mail message form, will it be used only inside the organization, or will it be sent to other recipients outside of the organization?
  • How will the new form be opened?

Where we can publish?

Now we can see where we can publish these custom forms.

Outlook forms solutions can vary greatly, especially because Outlook has a number of different types of standard forms. It is often difficult to determine the best place to publish a form, and there are many factors to take into account when you make the decision. Forms can be published to three locations:
(1) A folder (or Folder Forms Library)
(2) Organizational Forms Library
(3) Personal Forms Library

We’ll discuss them in detail and how these three makes differences:

(1) A folder (or Folder Forms Library):

  • For most folder-based forms solutions, publish the form to the folder so that it is available whenever someone is using the folder.
  • If you publish the form in a public folder, the form is available to everyone who can access the folder.
  • If you publish the form to one of your personal folders, it is available only to you when you are using that folder.
  • Contact, Post, Task, and Journal forms are examples of the types of forms that are typically associated with a folder.
  • One advantage to publishing a form to a folder is that the form is available on the Actions menu when you are in the folder.

(2) Organizational Forms Library:

  • Publish the form to this library if you want to make the form available to everyone in your organization, such as a form to report vacation time.
  • This library is often used for e-mail message forms because they are typically not based on a specific folder.
  • You can publish a form to the Organizational Forms Library when you want to use the same custom form in more than one folder.
  • When you do this, you can maintain only a single published form.
  • Forms that are published to this library are accessible to everyone in the organization as long as they are given permissions to the library by the administrator.
  • The library is stored on the Microsoft Exchange Server-based computer.
  • The administrator must give you permissions to publish to the Organizational Forms Library.
  • This permission is typically given to only a few individuals or a department that manages the Exchange Server-based computer.

(3) Personal Forms Library:

  • Forms that are saved in this library are only accessible to you.
  • When you publish a form to the Personal Forms Library, the form is stored as a hidden item in the root folder of your mailbox or Personal Folders (.pst) file, whichever is your default mail delivery location.
  • Like forms that are stored in the Organizational Forms Library, these forms can be opened by using the Choose Form command.
  • Save a form to this library when you create a form for your own personal use, such as a standard e-mail message form that is pre-addressed to recipients.

Please note: It is also possible to store an Outlook form as a file in the file system or as an item in an Outlook folder. Microsoft recommends that you to avoid these approaches, because the form will be a one-off form.

image

Deciding Where to Publish Folder-based Forms:
  • When you create a folder-based solution where the primary focus of the form is to display the items in a single folder, typically publish the form to the folder itself.
  • When you publish the form to the folder, the folder is a self-contained entity and the form is available on the Actions menu.
  • However, there are scenarios where you may not want to publish a typical folder-based form to a folder.
  • If you use a form in more than one folder, and each folder always uses the same version of the form, consider publishing the form into either the Organizational Forms Library or the Personal Forms Library. When you do this, there is only one copy of the published form and it is easier to update if you need to make changes.
  • If you are the only person who needs access to this form, publish the form in Personal Forms Library.
  • If other people need to access to the form, and the form is typical in a public folder on an Exchange Server-based computer, investigate whether or not you may be able to publish the form to the Organizational Forms Library.
  • Note: One potential disadvantage to this approach is that the form will not be available under the Actions menu unless it is published to the folder. However, if it is the default form for the folder, as is typically the case, this will not make too much of a difference because you or the users can use a toolbar button to open new items.
Deciding Where to Publish Message-based Forms
  • If the form is based on an e-mail message and it is used by you and only a couple of other users, publish the form to the Personal Forms Library for all of the users. However, if you are going to create new items based on this form, you may want to publish it to your Inbox so that you can access it on the Actions menu.
  • If the form is going to be used by many people within an organization, publish it in the Organizational Forms Library so that there is only one copy of the form to maintain and all of the users have access to it. This approach, however, can make the form more difficult to open.

MAPI : When we try to access Public Folder via ASP application throws MAPI_E_FAILONEPROVIDER


Recently one of my customer updated that they get an different issue with their ASP application. This application running on their Web server that uses MAPI to read the Contacts folder in the Public Folders from Exchange Server 2003 SP2 machine. The user can retrieve his email in outlook and browse the public folders as he is used to, but when this user want to use the ASP page that reads the public folder he fails.

smile_sad Customer receives the following error:

bstrPublicRootID = objInfoStore.Fields.Item(&H66310102).Value
Error Description: [Collaboration Data Objects – [MAPI_E_FAILONEPROVIDER(8004011D)]]
number: –2147221219
Source: Collaboration Data Objects

During the the troubleshooting, we found that the customer tries to read the contacts in public folders. Customer try to gain programmatic access to Public Folders by assigning the folders collection to an object. Customer cannot gain programmatic access to a public folder from an ASP by stepping through the tree. To do this, certainly the customer needs to use GetFolder, which in turn requires him to know what the RootID of the Public Folder.

So we recommend customer to make use of MAPI property tag (example: bstrPublicRootID = objInfoStore.Fields.Item( &H66310102 ).Value) to get the root ID of the Public Folders, which resolved the issue.

lightbulbAlso in couple of earlier such scenario’s we found this error might happen due to one of the following:

You might don’t have permissions: You are trying to access a mailbox that the ASP does not have proper permission for.Check to make sure the ASP is being authenticated into the account you want. Insert this line into your VBScript to find out what account the ASP is running in:

Response.Write("You are logged on as " & Request.ServerVariables("LOGON_USER") & "<br>")

If you are logged in under the anonymous account, you will receive a blank string back.

You might be using Incompatible browser: You are using "NT Challenge Response" as your authentication type, and Netscape Navigator for your browser. Netscape Navigator does not support "NT Challenge Response" as an authentication option. In order to log onto a user’s Exchange account, the IIS authentication needs to be set up as "Basic (Clear Text)".

computer For a safer side, you need to make sure that you don’t have Exchange Server 2003 and Outlook 2003 in the same box.

thumbs_up Happy Programming!!

CDOEXM & C#.Net : How to mail-disable public folders in Exchange Server 2003 SP2 – Native Mode?


I created this code snippet, which helps us to mail-disable in the Exchange Server 2003 SP2 (Native mode) – public folders. For this i tried this, i used C#.Net & CDOEXM. In this below code, i try to mail-disable the public folder named “publicfolder1”. I used Visual Studio.Net 2008, C#.Net and CDOEXM – Collaboration Data Objects for Exchange Management – 2003 to do this:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CDO;
using CDOEXM;
using System.Collections; 
namespace MailDisableCSharp
{
    class Program
    {
        static void Main(string[] args)
        { 
 
            try
            {
                CDO.Folder objFolder = new CDO.Folder();
                CDOEXM.IMailRecipient objRecip;
                string fullurl;
                fullurl = "http://domain/public/publicfolder1";
 
                objFolder.DataSource.Open(
                                fullurl,
                                null,
                                ADODB.ConnectModeEnum.adModeReadWrite,
                                ADODB.RecordCreateOptionsEnum.adFailIfNotExists,
                                ADODB.RecordOpenOptionsEnum.adOpenExecuteCommand,
                                "Administrator",
                                "Password"); 
 
                objRecip = (CDOEXM.IMailRecipient)objFolder;
                objRecip.MailDisable();
                objFolder.DataSource.Save();
                Console.Write("Success");
             }
            catch (Exception e1)
            {
                Console.WriteLine(e1.Message);
           } 
 
        }
    }
}

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

Note:

+ To execute this code, you may try with VS.Net 2005 or VS.Net 2008, C#.Net.

+ Make sure you need to use the following references: CDOEXM – Microsoft CDO for Exchange Management 2000 & CDOEX – Microsoft CDO for Exchange 2000.

+ This code helps us to mail-disable the public folder “public folder1”.

+ Also we need to make sure to pass valid credentials username(Administrator) & password(Password) to execute this, along with valid fullURL – the public folder needs to be mail-disabled & domain – exchange domain.

Hope this helps. Happy programming!!

API’s that are not included in Exchange Server 2007 ?


When you migrated from Microsoft Exchange 2000 & 2003, where they provide several API’s that are not included in Microsoft Exchange Server 2007. Please find the following API’s that are not included in the Exchange Server 2007 environment & the recommended technologies to migrate to.


APIs that are not included in Exchange 2007
















































API


Status in Exchange 2007


Replacement Technology


CDOEX


De-emphasized but still supported.


Exchange Web Services


CDOEXM


Not included in Exchange 2007.


Microsoft Windows PowerShell and Exchange 2007 commands


CDOWF


Not included in Exchange 2007.


Windows Workflow Foundation (WWF) and Microsoft BizTalk Server 2006


EXOLEDB


De-emphasized but still supported.


Exchange Web Services


MAPI


De-emphasized but still supported.


Exchange Web Services


Public Folders


De-emphasized but still supported.


Exchange Web Services


Store Events


De-emphasized but still supported.


Exchange Web Services


WebDAV


De-emphasized but still supported.


Exchange Web Services


Web Forms


Not included in Exchange 2007.


ASP.NET


WMI Providers


Not included in Exchange 2007.


Windows PowerShell and Exchange Server 2007 commands.


 

Tutorial : Organizational Forms Library – Series # 2


Can we create it programmatically?

To create it programmatically using MAPI, we need to make use of CreateFolder(), the MAPI function. It is necessary to have very special privileges (obtained by opening the store with an EntryID created using IExchangeManageStore::CreateStoreEntryID()) to get it to work.

Please refer the following KB to create Org. forms library programmatically.


How to create Org. Forms Library in Exchange Server 2003 ?

To create a new Organizational Form in Exchange Server 2003, please follow the steps given below:

1. Start Exchange System Manager.

2. Expand the Organization object. Expand your Administrative Group.

3. Expand Folders. Right-click Public Folders.

4. Click View System Folders.

5. In the list of folders present in the right-hand pane, click the EFORMS Registry folder.

6. Right-click the EFORMS Registry folder, then click New. Click Organizational Form.

7. Enter a name for your Organizational Form, and then click OK.

8. Repeat these steps for multiple forms to create the library.

Note:
1)
How to create copies of organizational forms library?

In Exchange Server 2003, to create copies of the Organizational Forms Library on other servers, click the Replication tab, and then type the name of server that you want to contain the copy of the Organizational Forms Library.

2) How to set the storage limits for an organizational forms library?

To set storage limits for an Organizational Forms Library, click the Limits tab. To create a description of an Organizational Forms Library, click the Details tab. To set permissions for each user, click the Permissions tab.


How to create Org. Forms Library in Exchange Server 2007 ?

Per the KB, you need to follow the following method to create an Organizational Forms Library as it got changed in Exchange 2007.

To create an Organizational Forms Library in Exchange 2007, follow these steps.

1. Create a new public folder.

a. Click Start, point to All Programs, click Microsoft Exchange Server 2007, and then click Exchange Management Shell.

b. Run the following command at the Exchange Management Shell prompt:
New-PublicFolder -Path "NON_IPM_SUBTREEEFORMS REGISTRY" -Name "My Organizational Forms Library"

Note: You can use the Exchange management shell on any version of Exchange 2007 to create a folder. However, in Exchange 2007 SP1, you can also create the EFORMS REGISTRY folder by following these steps:

            a. Go to Toolbox in Exchange Management Console. Double-click Public Folder Management Console.

            b. In the left pane, click System Public Folders.

            c. in the Action pane, click New Public Folder. Type EFORMS REGISTRY as the folder name, and then click NEW.

            d. After the folder is created, click Finish to exit the wizard.

2. Add the PR_EFORMS_LOCALE_ID.

a. Use an account that belongs to the Exchange Administrators Group to log on to a client computer that is running Microsoft Office Outlook 2003 or a later version of Microsoft Outlook.

b. Start the Microsoft Exchange Server MAPI Editor (Mfcmapi.exe) from the MFCMAPI folder.

c. Create a MAPI profile if it is necessary.

d. On the Session menu, click Logon and Display Store Table.  Select MDB menu, click Open Public Folder Store, and then click OK.

e. Expand Public Root, expand NON_IPM_SUBTREE, and then expand EFORMS REGISTRY.

f. Click the public folder that you created in step 1. For example, click My Organizational Forms Library.

g. Click the PR_URL_NAME property. On the Property Pane menu, click Modify Extra Properties. Click Add, and then click Select Property Tag.

h. Click PR_EFORMS_LOCALE_ID in the list, and then click OK. Click OK two times. A red mark is displayed next to the newly created PR_EFORMS_LOCALE_ID property.

i. Double-click PR_EFORMS_LOCALE_ID. In the Unsigned Decimal box, type the desired locale ID, and then click OK. For example, type 1033 for English, type 1040 for Italian, or type a different ID for a different locale.
Note: To determine the locale ID for other locales, visit the following Microsoft Web site: http://msdn2.microsoft.com/en-us/library/aa579489.aspx (http://msdn2.microsoft.com/en-us/library/aa579489.aspx)

j. Exit MAPI Editor.

3. Configure limits and permissions for the Organizational Forms Library folder. Note: You can use suitable cmdlets in the Exchange Management Shell to set limits and permissions for the Organizational Forms Library folder.

a. To set storage limits, use the following cmdlet: Set-PublicFolder

b. To set permissions for each user, use the following cmdlets: Add-PublicFolderClientPermission, Add-PublicFolderAdministrativePermissions

Tutorial : Organizational Forms Library – Series # 1


What are the various types of Outlook form libraries available?

There are three types of Outlook form libraries are available, they are (i) Organizational Forms Libraries (2) Personal Form Libraries (3) Folder Libraries.

What is an Organizational Forms Library?

  • An organization’s forms library is a repository for forms (templates that help users to enter and view information)  that are accessed by all users in a company.
  • In simple terms, an organizational forms library is a special type of public folder that is listed only with system folders.

Some of the examples are, a standard supply request form can be stored in an organizational forms library or a form used to report vacation time etc.

Why to use Organizational Forms Library?

If we publish the forms at Organizational forms library it will used throughout the enterprise-wide. Org. forms library acts as the centralized library or repository. Saving to this library provides a quick and easy way to distribute and update forms.

How to use the forms enterprise-wise or throughout the organization?

  • You must publish a form to this library if you want to make the form available to everyone in your organization.
  • You can publish a form to the Organizational Forms Library when you want to use the same custom form in more than one folder.
  • This library is frequently used for e-mail message forms because they are typically not based on a specific folder.
  • When you publish a form, you can maintain only a single published form.
  • Everyone in the organization can access the forms that are published to this library as long as the administrator grants the users permissions to the library.

Where these libraries stored in Exchange?

Exchange stores these libraries in the EFORMS REGISTRY system folder.

Note: In Exchange Server 2003, you can only create organizational forms libraries in the system folders subtree of the Public Folders tree. Even if you have created new public folder hierarchies to work with the organizational forms libraries, only the Public Folders tree supports the EFORMS REGISTRY system folder.

What are the permissions required to view or use this?

Org. forms library is stored on the Microsoft Exchange Server-based computer. The administrator must give you permissions to publish to the Organizational Forms Library. This permission is typically given to only some individuals or a department that manages the Exchange server-based computer

Note: You can’t publish forms to the Organizational Forms library unless the systems administrator grants you permission.

Multi-languages support for Organizational Forms Library?

  • Organizational Forms libraries provides supports for multi-languages.
  • When you create an organizational forms library, you assign a language to it. You can have only one organizational forms library for each language.
  • When you use the Forms Administrator to create Organizational Forms Libraries, you must consider the different languages that clients use to access those libraries.

Tutorial : Free/Busy data – Series # 1


Publishing Free/Busy data:


Free/busy data is published information that contains a user’s personal availability data based on the user’s schedule. Microsoft Exchange Server uses the information extensively when users schedule meetings.



  • Exchange Server 2003 stores free/busy information in a dedicated public folder that is named SCHEDULE+ FREE BUSY. This folder contains a separate subfolder for each administrative group in your Exchange organization. When a user publishes free/busy data, Exchange Server 2003 posts the information in a message in the appropriate free/busy subfolder. The free/busy folders are system folders and function in a manner that is similar to offline address book folders.

  • Exchange Server 2007 uses the availability service.

Free/Busy data & different versions of Outlook and Exchange Server :



  • The process of publishing free/busy data from the user’s client application to the appropriate free/busy folder depends in part on the client that the user has.

  • Outlook and other MAPI-based clients function somewhat differently in this respect from Web-based clients such as Microsoft Office Outlook Web Access for Exchange Server 2003 and Microsoft Outlook Mobile Access.

  • The Availability service for Microsoft Exchange Server 2007 provides calendar information for your users. This information is known as free/busy information.

How Outlook publishes free/busy data?


By default, Outlook publishes the free/busy data for a user one time every 15 minutes, and again when Outlook shuts down. When publishing, Outlook updates the entire free/busy message instead of just adding changes to the existing message. The message includes free/busy data that ranges from the current month to two months in the future.


How to customize with Outlook?


Outlook users can customize the free/busy settings, including the following:




    • Publishing interval, which can be as short as one minute.

    • Number of months in the future to publish, which can be as long as 36 months.

Outlook 2007 with different Exchange Servers:


As we know that Microsoft Office Outlook 2007 works well with a variety of e-mail servers, and you can take advantage of an even richer feature set by using Outlook with the latest version of Microsoft Exchange Server. Some features of Office Outlook 2007 require or work better with Microsoft Exchange Server 2003 or later.



  • Free/Busy information is always up-to-date for users with Exchange 2007 Availability service. But it’s not the case with Exchange 2003.

  • Tentative calendar booking is managed on the Exchange Server. Users do not need to run Outlook for others to see their Free/Busy status. This feature is only available in Exchange Server 2007, not with Exchange Server 2003.

MadFB, Autodiscover & Outlook clients:



  • The Autodiscover service provides information for the Availability service by locating and providing the external and internal URLs for the Outlook 2007 client.

  • If your Microsoft Office Outlook 2007 users cannot view calendar information for other Outlook 2007 users in your Exchange 2007 environment, the problem may involve a failure in either the Autodiscover service or the Availability service.

  • Microsoft Entourage for the Macintosh also relies on this MadFB(MSExchangeFBPublish) process to publish free/busy data.

  • Outlook Web Access and Outlook Mobile Access do not publish free/busy data directly to the public folder store.

  • Instead, they rely on a free/busy publishing agent that is named MadFB (also known as MSExchangeFBPublish), which runs as part of the Microsoft Exchange System Attendant service (MSExchangeSA).

  • MadFB has two functions.


    • It publishes free/busy messages for Outlook Web Access and Outlook Mobile Access

    • It deletes duplicate free/busy messages

Note: Because most of the processing is handled by the Exchange servers instead of the client, using Outlook Web Access and Outlook Mobile Access can provide performance and reliability advantages over Outlook.


There are various other issues happens with respect to Free/Busy data when we do with programming as well as with the Outlook clients. I tried to catch up some of them and summarize for your view….


1. Troubleshooting the Free/Busy information for Outlook 2007 by reading this technet article or you can check it through the error codes available. Some of them are,



  • 0x80072EE7 – ERROR_INTERNET_NAME_NOT_RESOLVED – This error is usually caused by a missing host record for the Autodiscover service in the Domain Naming service.

  • 0X80072F17 – ERROR_INTERNET_SEC_CERT_ERRORS – This error is usually caused by an incorrect certificate configuration on the Exchange 2007 computer that has the Client Access server role installed.

  • 0X80072EFD – ERROR_INTERNET_CANNOT_CONNECT – This error is usually caused by issues that are related to Domain Naming service.

  • 0X800C820A – E_AC_NO_SUPPORTED_SCHEMES – This error is usually caused by incorrect security settings in Outlook 2007.

2. If you use Exchange Server 2007, you can determine whether the Availability service is not functioning properly or not:
(i) using Event log (ii) using Test-OutlookWebServices cmdlet
.


Using Event log:


When we try to review the application event log on the Exchange 2007 Client Access server and check for events that are generated by the Availability service. There are common events that are associated with the availability service as described. Some of them are,


  • 4001 The Availability service could not discover an Availability service in the remote forest   If you see this event, verify that the Autodiscover service in the remote forest is functioning correctly.

  • 4003 PublicFolderRequestFailed   This event usually indicates a failure to look up free/busy information for legacy mailboxes. Typically, this information comes from public folders. This error might be caused if the public folders are configured incorrectly or if the Availability service has not been configured to look up public folders for the legacy mailboxes. The description of this event will usually include the URL to the target public folder and one of the following HTTP errors:


    • 401   If you see this HTTP error, Integrated Windows authentication is probably disabled on the /public virtual directory.

    • 403   If you see this HTTP error, the Client Access server may be offline or it does not contain a replica. This might occur if Secure Sockets Layer (SSL) is not enabled on the /public virtual directory.

    • 404   This HTTP error can occur if the /public virtual directory could not be found.

  • 4005 Could not find information in Active Directory to allow cross-forest requests   If you see this event, you must configure the Availability service across forests.

  • 4011 Cross-forestRequestFailed   This usually indicates a failure to locate an AvailabilityAddressSpace object that is required to proxy the Availability service request to a different forest.

  • In this case, we will see how to find and troubleshoot the issue using the Event log. A 4003 event indicates a failure to look up free/busy information for legacy mailboxes. Typically, this information comes from public folders. The following is an example of a 4003 event.




    Event ID : 4003


    Raw Event ID : 4003


    Category : Availability Service


    Source : MSExchange Availability


    Type : Error


    Message : Process 4664[w3wp.exe:/LM/W3SVC/1/ROOT/EWS-1-128114978363374212]: Microsoft.Exchange.InfoWorker.Common.Availability.PublicFolderRequest failed. The exception returned is Microsoft.Exchange.InfoWorker.Common.Availability.PublicFolderRequestProcessingException


    This may be due to Exchange 2007 users are unable to see the free/busy information for users whose mailboxes reside on the Exchange 2003 server. The free/busy information displays as hash marks for these users in the Outlook Scheduling Assistant page.


    Using Test-OutlookWebServices cmdlet:


    When you try to test through cmdlet test the service using, 
                            Test-OutlookWebServices -id:user1@contoso.com -TargetAddress: user2@contoso.com



    • The Test-OutlookWebServices cmdlet uses a specified e-mail address to verify that the Outlook provider is configured correctly.

    • The optional MonitoringLogFile parameter indicates whether the results are written to the log file for Microsoft Operations Manager (MOM).

    • Using the Test-OutlookWebServices cmdlet to verify the Autodiscover service settings for Microsoft Outlook on a computer that is running Microsoft Exchange Server 2007 that has the Client Access server role installed.

    • This will provide the error details about the Availability service.

    For example, as specified in the following article and code example verifies the service information that is returned to the Outlook 2007 client from the Autodiscover service for a user who is named monika@contoso.com. The code example verifies information for the following services:



    • Availability service

    • Outlook Anywhere

    • Offline Address Book

    • Unified Messaging

    test-OutlookWebServices -identity:monika@contoso.com

    This code example tests for a connection to each service. This example also submits a request to the Availability service for the user monika@contoso.com to determine whether the user’s free/busy information is being returned correctly from the Client Access server to the Outlook 2007 client.


    3. Free/Busy Options Not Unique to Each Profile:


    On a computer that contains multiple profiles, the Free/Busy options will be the same for every profile. This information is defined in the KB article. The Free/Busy information is stored on a per-user basis rather than a per-profile basis. If the user who is logged on to the computer defines multiple profiles, each profile will contain the same Free/Busy information.

    To set the calendar Free/Busy information, follow these steps:


    1. On the Tools menu, click Options.


    2. On the Preferences tab, click Calendar Options.


    3. Click Free/Busy Options. In the Free/Busy Options dialog box you can set the following items:



    • How many months of Free/Busy information to publish.


    • How frequently the information should be updated.


    • Whether the information should be published on the Internet.


    • The Internet URL address for storing and searching for the information.


    4. Conditions that affect the display of Free/Busy time in Outlook:

    After you make an appointment in your active Calendar in Microsoft Outlook, other people may not immediately see that time as busy. This condition may also occur when someone attempts to invite you to a meeting.


    There are three possible causes for this behavior:



    • By default, Outlook updates your Free/Busy time every 15 minutes. If the update is not complete, others will not see your appointment as busy time.


    • Outlook publishes your Free/Busy time for only the next two months. If your appointment is beyond the published limit, others will not see your appointment as busy time.


    • If the appointment Show Time As property is set to Free, others will not see your appointment as busy time.


    The unavailability of Free/Busy information appears as black hatched lines in the Attendee Availability dialog box.


    Resolution:



    • If the cause is how often Outlook updates Free/Busy time, follow these steps as described in the support KB.

    • If the cause is how far ahead Outlook publishes Free/Busy time, follow these steps as described in the support KB

    • If the cause is that the Appointment Show Time As property is not set to Free, follow these steps as described in the support KB

    5. Legacy free/busy information no longer appears for appointments that are booked against a mailbox in Exchange Server 2007:


    In a Microsoft Exchange Server 2007 environment, you configure a room mailbox to have the AllBookInPolicy attribute set to “false.” When you do this, the legacy free/busy information no longer appears for the appointments that are booked against the mailbox. For example, when you examine the free/busy information by using the Scheduling Assistant, the room mailbox shows a status of No Information.


    This issue occurs because the default permission is changed to “None” when the AllBookInPolicy attribute is set to “false.” This situation prevents the Exchange System Attendant from publishing the legacy free/busy information. By default, when any mailbox is created, the free/busy permissions are set as follows:


    Default: Read: Free/Busy time
    Anonymous: None


    This condition is also true for resource mailboxes.


    To go through the following article to resolve this problem in Exchange Server 2007 Service Pack 1.


    6. Resolving problems in Outlook for delegated Exchange Server 2003 mailbox users :


    As stated above, we need to perform this procedure if delegated users are receiving error messages such as “Unable to open the free/busy message” when they try to modify the mailbox owner’s calendar.




    1. Request that all delegate users and the mailbox owner shut down Outlook.



    2. Request that the mailbox owner start Outlook with the /cleanfreebusy switch. The mailbox owner can do this from the command prompt by typing: outlook/cleanfreebusy


      Outlook will re-create the LocalFreeBusy message and synchronize the other mailbox folders to use it.



    3. Resume using Outlook. Delegates should now be able to use the mailbox as expected.


    7. Cleaning Mailbox stores using MadFB:


    As stated above, and in the over time, the free/busy folders may accumulate duplicate free/busy messages. In addition, Outlook and the free/busy folders may become unsynchronized, especially for mailboxes that have multiple delegate users. This section provides information about how Exchange Server 2003 automatically maintains free/busy data according to a configurable schedule, and about how you can repair synchronization problems.


    The cleanup process includes:



    • Deleting duplicate free/busy data messages.
      These are messages with an appended –x in the URL, where x is the number of the duplicate message. For each set of duplicates, MadFB keeps the oldest message and deletes the rest.

    • Repairing the URLs of free/busy messages.
      The URL of a free/busy message must be in canonical format, ending with subject(based on legacyExchangeDN).EML.
      Messages that are duplicates of existing free/busy messages have non-canonical URLs because of the appended -x. Messages that have been upgraded or replicated from Microsoft Exchange Server version 5.5 have URLs that contain GUIDs. These messages are also considered non-canonical.

    8. Calendar support in an Exchange and Non-exchange environment:


    As stated in the following article regarding the calendar support in an Exchange and Non-exchange environment (for ex. using the Microsoft Exchange Connector for Lotus Notes and the Microsoft Exchange Connector for Novell GroupWise) perform several functions to support calendaring capabilities between the foreign system and Exchange Server 2003:



    • Replicate directory information so that both Exchange users and foreign system users have access to calendaring data.

    • Convert meeting request items from Exchange format to the foreign format and from the foreign format to the Exchange format.

    • Detect Exchange Server 2003 free/busy requests and look up the appropriate free/busy data in the foreign system. This free/busy lookup is bidirectional.

    Exchange Server 2003 & Public folders


    Some organizations use public folders heavily, while others do not. The degree to which public folders are used in your organization may have a large effect on how you plan for migration and coexistence of public folders and the data stored therein. Factors to consider include:

    • The total number of public folders and the amount of data contained in them. Many organizations choose to remove unneeded folders from their public folder structure as part of their migration process.

    • The number of existing replicas and where they are located. Because Exchange public folders can be easily replicated between servers, many organizations have placed public folder servers at remote sites to improve access for remote users; as part of server consolidation, these replicas will normally be re-homed elsewhere.

    • The extent to which public folders are used as part of normal operations. If public folder-based applications are in use, how much are they used? Do users depend on them for their key tasks, or are they of secondary importance?

    • The messaging clients to be used after the consolidation. Outlook 2003 can be configured to cache users’ public folder favorites; this makes public folder access in Cached Exchange Mode seamless, but it increases the size of the OST file, and it causes additional synchronization traffic. Requests for public folder items will be automatically directed to the best available replica, which may be in a distant site across a slow or high-latency link.  

    Even if your organization does not use public folders for business reasons, Exchange still uses two important system public folders that must be accounted for in your planning.

    First, the Schedule+ Free/Busy folder is where Exchange stores free/busy status for individual mailboxes. Outlook publishes users’ calendar status to this folder, as does the Exchange System Attendant.

    Having multiple replicas of this folder helps ensure quick and consistent access to schedule data throughout the organization; however, these replicas have to be synchronized, which can add a substantial amount of network traffic.

    When a user creates a new meeting request, Outlook opens a connection to find each attendee’s free/busy data. First, Outlook retrieves the user’s legacy distinguished name, which it then uses to identify the name of the free/busy folder it needs. Outlook then searches for the correct folder and message for the specified user’s schedule data. This means that a single meeting request may generate multiple un-cached connections to different servers.

    On the other hand, adding multiple replicas of the free/busy folder means that changes made to one replica may take time to propagate to other replicas. Adjusting the number of replicas, their location, and the replication schedule used may be necessary to ensure the right balance between minimized access time and replication convergence.

    Offline Address book is one of the advantage when you make use of public folder. The OAB provides offline and Cached Exchange Mode users access to a subset of properties for all objects in the global address list.

    Exchange generates updates to the OAB periodically, and Outlook automatically downloads available changes once a day (in online mode) or when the user goes online (in Cached Exchange Mode).

    In general, Microsoft’s normal recommendation is to maintain OAB replicas on each server that contains user mailboxes. As you consolidate user mailboxes, you should bear in mind that when the OAB changes, a large number of clients may need to download OAB changes at once, and plan network capacity and CPU allocation accordingly.