Quantcast
Channel: Outlooking on Outlook – your answers are here
Viewing all 97 articles
Browse latest View live

“Download Headers Only vs. Download Headers in Outlook”

$
0
0

If there are users in your company that have huge mailboxes and in addition need to log on different machines all the time, you may consider enabling “Download Headers” in order to avoid spending a lot of time doing a full sync of the information from their mailboxes.

In case you were wondering why Outlook is doing a full sync of the messages even after you enable in Define Send/Receive Groups menu the option "Download headers only" for an Outlook cached mode client, this blog can give you an overview about how these two options are intended to work.

 

More information:

By default, Outlook is Downloading Full Items and on Slow Connection is downloading Only the Headers.

 


 
The Send/Receive settings will not have any effect when working in cache mode. This is the design behavior as cached mode will just use its own syncing mechanism. The Send/Receive settings will be taken into consideration only when synchronizing in offline mode.

 

In order to “Download Headers Only” in cached mode, you need to change the Download Preferences to Download Headers. If you manually enable this option under your current profile, you will notice that all the emails you receive will download only the message headers. However, this option has no effect for emails that were already downloaded in your OST before you enabled this option.

 

There is a GPO that enables the option “Download Headers” for all the users in cached mode. However, for existing profiles this GPO will take action only on new emails and not on emails that were already downloaded in your OST. In order to download only the headers for all the messages you need to create a new Outlook profile.

 

I added below the the GPO for enabling “Download Header” option in case you consider it as a suitable solution for your environment/users:

    1.In Group Policy, load the Outlook 2010 template (Outlk14.adm):

      Office2010

      
    2.Under User Configuration\Administrative Templates\Microsoft Office Outlook 2010\Tools| E-mail Accounts\Cached Exchange Mode, double-click Cached Exchange Mode (File | Cached Exchange Mode)


    3.Click "Enabled" to configure the policy and select “Download Headers”
    4.Click Apply- OK.
    5.After the policy is enabled please check on the test machine if the below key is added

      HKEY_CURRENT_USER\Software\Policies\Microsoft\office\14.0\outlook\cachedmode

     "CachedExchangeMode"=dword:00000001

    6.After applying the GPO “Download Preferences” should be grayed out


    7.Configure a new Outlook profile and you will notice that all messages will download headers only.

     

    Please feel free to comment or add any suggestions.

    Happy Outlooking!


    Understanding Meeting Updates

    $
    0
    0

    Since working with the Outlook calendar, and more specifically with meetings, it is very likely that the majority of us have encountered situations in which updates to meetings are not triggering the same type of message.

    And what I mean by this is that depending on the type of changes that we make to a meeting, this will generate either an informational or a full update, and the information will be changed or not, accordingly, on the attendee’s calendar.

    As I have discovered a good bit of documentation on this topic, I think the below article can be useful in either troubleshooting calendar issues or in understanding the expected behavior in such scenarios.

     

    In earlier versions of Outlook, you could easily run into one or more of the following problems when sending a meeting update:

    • Invitees have to reaccept meetings unnecessarily.
    • Attendees do not see anything different with the meeting and they delete the request thinking they have already dealt with it.
    • The invitee or recipient list does not handle duplicate entries and distribution lists elegantly. Consequently, invitees may receive cancellations and updates at the same time.
    • Attendees do not always have an up-to-date invitee list because updates are not sent correctly.

    Starting with Outlook 2007, meeting updates are classified as one of two types: a full update or an informational update.

    The difference between these two is worth discussing, as Outlook uses each type in a very specific scenario. Basically, this is the topic for this blog, with a focus on describing the scenarios that trigger either a full or informational update. Additionally, you will learn how to make Outlook send a specific type of update, depending on the meetings properties that you want to change.

     

    What is a full update?

    A full update is practically a new meeting invitation to the same event, replacing the old properties with the new ones. Full updates are sent when one or more of the following properties are changed:

    • Start Date/Time
    • End Date/Time
    • Recurrence

     

    A Full update has the following characteristics:

    • An organizer must send out the update. They cannot change and then save certain properties on the meeting without sending an update.
    • The attendee must reaccept the updated meeting.
    • If the receiving attendee does not have the meeting on their Calendar, the meeting is created on the Calendar (as if it is a new meeting request).
    • Changes to the meeting are highlighted in color in the attendee’s meeting invitation and the public properties on the meeting are overwritten on the attendee’s calendar item.

    In a few words, in Outlook 2007 and 2010 you can no longer make critical changes on a meeting without sending an update. For example if you attempt to delete a meeting, the Send Cancellation form automatically appears. You cannot save this change without clicking the Send Cancellation button to send the cancelation email.

     

    When you receive a full update from the organizer, you are requested to respond to the meeting.


    What is an Informational update?

    An Informational update is an update that does not require any action from the attendee. As the name states, it was designed to simply inform the attendee of specific changes that have occurred on the meeting. Informational updates have the following characteristics.

    • The update does not have to be reaccepted by attendees.
    • The Free/Busy status of the meeting is unchanged.
    • Changes to the meeting are highlighted in color in the attendee’s meeting invitation and the Public properties in the meeting are overwritten on the attendee’s calendar item.
    • If the meeting is not on the Calendar of the receiving attendee, the meeting update behaves as a Full meeting update.

     If you receive an informational update and the invite is processed, the required action is clearly spelled out in the message. If you are viewing the message in the Reading Pane, the informational message is clearly highlighted in the invite. The informational message appears in the light blue box in the following image:

     

    If you click the No Response Required button in the Reading Pane, you are notified that your calendar has been updated and the meeting update is automatically deleted.

    If you open the invite for an informational update, the Information Bar clearly states that your calendar has been updated and that there is no need to respond to the update.

    Please note that the Accept, Tentative, and Decline buttons are available. However, you are not required to respond to the update.


     

     

    In brief, here is a table describing the properties that can change on a meeting and what kind of update do they trigger:

    Property

    Update Type Issued

    Start Date/Time

    Full

    End Date/Time

    Full

    Recurrence

    Full

    Free/Busy

    Informational

    Location

    Informational

    Subject

    Informational

    Required attendee

    Informational

    Optional attendee

    Informational

    Body, Attachment

    Informational

    Custom properties, Bill information, Companies, Mileage

    Informational

    Response Requested

    Informational

    Allow New Time Proposal

    Informational

    Online Meeting

    Informational

    Removed attendee

    Informational

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    There are also two types of properties on the meetings: public and private.

    Public and private properties of a meeting are properties that exist when a meeting is created. For the most part, as an attendee you can change these properties for any meeting that you have accepted or tentatively accepted. The difference is that any of your previous edits to Public properties are overwritten if the meeting organizer changes any of them and sends you an update to the meeting (regardless of whether it is an informational or full update).

    Public Properties   

    Time (Start/End/All Day Event)

    Location

    Subject

    Attendees

    Body

    Attachment

    Recurrence Pattern

    Importance (High/Normal/Low)

    Custom Properties, Billing Information, Companies, Mileage

    Response Requested (Read-only)

    Allow New Time Proposal (Read-only)

    Meetings Workspace (Read-only)

    IsOnlineMeeting (Read-only)

    NetShowURL (Read-only)

     

    Private properties are those that you can edit on your local copy of the meeting and that will not be changed when the meeting organizer sends you a meeting update.

    Private Properties   

    Free/Busy Status

    (see exception in table below)

    Sensitivity (Private)

    Reminder

     

    There is one exception to the above rule, which is the following. Free/Busy status is the only private property that can change but only with a full update:

     

    Info

    Full

    Free/Busy

    no

    yes

     

     

     

     

    So whether the attendee makes a change on any of these private properties, they will behave as described above.

    A full update will change the free/busy time, whether or not the attendee previously changed it.

    The sensitivity and the reminder time are never changed, except if the attendee has not yet accepted the initial meeting request before receiving the update to it.

     

    To exemplify this let's take a scenario with userA as organizer and userB, userC as attendees.

    Note: I also used the public property Importance in this scenario.

    UserA sends a meeting request to userB and userC with Free/Busy as tentative, private, high importance and 15 minutes reminder.

    Both attendees accept the meeting.

    UserB leaves the meeting as it is, however userC changes the sensitivity to public, the importance to normal, the free/busy to busy and the reminder to 10 minutes, after which he saves and closes the meeting.

    UserA, as organizer, changes the end time, to another half an hour, free/busy to free, reminder to 30 minutes, importance to low and the sensitivity remains to private.

    Since the end time was changed, this will trigger a full update. However on the attendees, after reaccepting the meeting we will see the following:

    UserB will have the time updated, importance to low, free/busy to free, reminder to 15 minutes and sensitivity to private.

    UserC will have the time updated, importance to low, free/busy to free, reminder to 10 minutes and sensitivity to public.

     

    To go a bit further with this topic, there are also some ways of checking if the update received for a meeting was informational or full.

    The MAPI property Named Prop Name=0x0026 stamped on the meeting update indicates the type of meeting request or update being sent. You can use MFCMAPI to examine the property.

    Note: You should download the latest version but please use the same bit-version you have in Outlook (32 or 64 bit)

    • Open MFCMAPI
    • Go to Session -> Logon and Display Store table
    • Double-click on the user’s mailbox
    • Expand the Root and then
      • if the profile is configured in Online mode expand Top of Information Store
      • if the profile is configured in Cached mode expand IPM_Subtree
    • Right-click on Inbox and select Open Contents Table
    • From the window that pops-up locate the item in the top pane. The MAPI Properties of the item are at the bottom pane
    • Look at the bottom pane to locate the Named Prop Name 0x0026 property.

     The values for this property are listed in the following table:

    Meeting Item Type

    Bit

    Meeting Request

    0x00000001

    Full Update

    0x00010000

    Informational Update

    0x00020000

     

    Hope this was helpful in understanding and troubleshooting issues of this kind.

    Feel free to comment or add any remarks to the topic and keep on outlooking!

    Change first day of the week in Outlook (FirstDov) through automatic script!

    $
    0
    0

    If you want to change the calendar Work Week for example from “ Sunday until Thursday” you can do that automatically by simple running the below sample script.
    We took some time and we wrote this sample code which will help you to deploy this to all your users, but before doing this please read the statement below:

    SETWorkDays sample script:

    MICROSOFT MAKES NO WARRANTIES ABOUT THE SUITABILITY, RELIABILITY OR ACCURACY OF THE SAMPLE APPLICATION THAT HAS BEEN SENT TO YOU
    PLEASE USE IT ON YOUR OWN RISK AND JUST AS A SAMPLE APPLICATION THAT ILUSTRATES HOW SUCH A FUNCTIONALITY CAN BE IMPLEMETED
    This sample is not supported under any Microsoft standard support program or service. The sample code is provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of  the sample code and documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the code be liable for any  damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code or documentation.

    Sample Script:
    ---------------------

    call SetWorkDays


    Sub SetWorkDays
    Const REG_DWORD = 1
    Const HKEY_CURRENT_USER = &H80000001
    Const SOFTWAREMICROSOFTOFFICE = "Software\Microsoft\Office\"
    Const OUTLOOKOPTIONSCALENDAR = "\Outlook\Options\Calendar"
    Const olHiddenItems = 1
    Const olFolderCalendar = 9
    Const PR_ROAMING_XMLSTRREAM = "http://schemas.microsoft.com/mapi/proptag/0x7C080102"
    Const FILTER = "[MessageClass] = 'IPM.Configuration.WorkHours'"
    Const OWORKDAYS = "3C576F726B446179733E"      '<WorkDays>
    Const CWORKDAYS = "3C2F576F726B446179733E"    '</WorkDays>
    Const CTIMESLOT = "3C2F54696D65536C6F743E" '</TimeSlot>
    Const SUNDAY = "53756E646179" 'Sunday
    Const MONDAY = "4D6F6E646179" 'Monday
    Const TUESDAY = "54756573646179" 'Tuesday
    Const WEDNESDAY = "5765646E6573646179" 'Wednesday
    Const THURSDAY = "5468757273646179" 'Thursday
    Const FRIDAY = "467269646179" 'Friday
    Const SATURDAY = "5361747572646179" 'Saturday
    Const RETURNPLUSTABS = "0D0A0909"
    Const SPACE = "20"
    Const REGSUNDAY = &H80
    Const REGMONDAY = &H40
    Const REGTUESDAY = &H20
    Const REGWEDNESDAY = &H10
    Const REGTHURSDAY = &H8
    Const REGFRIDAY = &H4
    Const REGSATURDAY = &H2

    '==========================================================================================================================================
    '  modify the two values below to set the desired work days
    NEWWORKDAYS = SUNDAY & SPACE & MONDAY & SPACE & TUESDAY & SPACE & WEDNESDAY & SPACE & THURSDAY '& SPACE & FRIDAY & SPACE & SATURDAY
    REGWORKDAYS = REGSUNDAY + REGMONDAY + REGTUESDAY + REGWEDNESDAY + REGTHURSDAY '+ REGFRIDAY + REGSATURDAY
    '
    '==========================================================================================================================================

    Dim oCalendarAssociatedContentTable 'As Outlook.Table
    Dim oMsgWorkingHoursPrefs 'As Outlook.StorageItem
    Dim oPropAcc 'As Outlook.PropertyAccessor
    Dim olApp 'As Outlook.Application
    Dim oCalendar 'As Outlook.Folder
    Dim strXmlProp 'As String
    Dim oRow 'As Outlook.Row
    Dim strStart 'As Integer
    Dim strEnd 'As Integer
    Dim strHead 'As String
    Dim strTail 'As String

     

    Set olApp = CreateObject("Outlook.Application")
    olApp.GetNameSpace("MAPI").Logon "","" ,False,True


    Set oCalendar = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderCalendar)

    Set oCalendarAssociatedContentTable = oCalendar.GetTable(FILTER, olHiddenItems)

    'exit if message not found or more than one found
    'TODO: if more than one, pick the latest one
    If oCalendarAssociatedContentTable.GetRowCount <> 1 Then
                          Exit Sub
    End If

    'open the item
    Set oRow = oCalendarAssociatedContentTable.GetNextRow()
    Set oMsgWorkingHoursPrefs = olApp.Session.GetItemFromID(oRow.Item("EntryID"), "")


    'open the PR_ROAMING_XMLSTREAM property
    Set oPropAcc = oMsgWorkingHoursPrefs.PropertyAccessor
    strXmlProp = oPropAcc.BinaryToString(oPropAcc.GetProperty(PR_ROAMING_XMLSTRREAM))

    strStart = InStr(1, strXmlProp, OWORKDAYS)
    If (strStart = 0) Then
                            'handle case where no day is selected
                           strStart = InStr(1, strXmlProp, CTIMESLOT) - 1
                          If (strStart = 0) Then Exit Sub'this prop is bad
                          strHead = Mid(strXmlProp, 1, strStart + Len(CTIMESLOT)) + RETURNPLUSTABS + OWORKDAYS
                          strTail = Mid(strXmlProp, strStart + Len(CTIMESLOT) + 1, Len(strXmlProp) - (strStart + Len(CTIMESLOT)) + 1)   
       
    Else
                            strStart = strStart + Len(OWORKDAYS) - 1
                            strEnd = InStr(strStart, strXmlProp, CWORKDAYS)

                            If (strEnd = 0) Then Exit Sub
                            strHead = Mid(strXmlProp, 1, strStart)
                            strTail = Mid(strXmlProp, strEnd, Len(strXmlProp) - strEnd + 1)
    end if


    'inject the new WorkDays
    strXmlProp = strHead & NEWWORKDAYS & strTail

    'set the prop
    oPropAcc.SetProperty PR_ROAMING_XMLSTRREAM, oPropAcc.StringToBinary(strXmlProp)

    'save the message
    oMsgWorkingHoursPrefs.Save


    'we must also now set the registry value to ensure that Outlook remembers everything
    Dim objRegistry
    Dim olVersion 'As String
    Dim ret 'As Integer
    olVersion = Left(olApp.Version, 4)

    Set objRegistry = GetObject("winmgmts:root\default:stdregprov")
    ret = objRegistry.SetDWordValue(HKEY_CURRENT_USER, SOFTWAREMICROSOFTOFFICE & olVersion & OUTLOOKOPTIONSCALENDAR, "WorkDay", REGWORKDAYS)
    If ret <> 0 Then
    'TODO: error handling
    End If

    olApp.GetNameSpace("MAPI").Logoff
    olApp.Quit

    Set oCalendarAssociatedContentTable = Nothing
    Set oMsgWorkingHoursPrefs = Nothing
    Set objRegistry = Nothing
    Set oCalendar = Nothing
    Set oPropAcc = Nothing
    Set oRow = Nothing
    Set olApp = Nothing
    End Sub

     

    Explanation:
    --------------------
    You have two things to change in the script if you want to use something else:


    '==========================================================================================================================================
    '  modify the two values below to set the desired work days
    NEWWORKDAYS = SUNDAY & SPACE & MONDAY & SPACE & TUESDAY & SPACE & WEDNESDAY & SPACE & THURSDAY & SPACE & FRIDAY & SPACE & SATURDAY
    REGWORKDAYS = REGSUNDAY + REGMONDAY + REGTUESDAY + REGWEDNESDAY + REGTHURSDAY + REGFRIDAY + REGSATURDAY
    '==========================================================================================================================================

    Here all days will be checked. If you want to only check Sunday through Thursday you can add a ' to comment the end of the lines:

    NEWWORKDAYS = SUNDAY & SPACE & MONDAY & SPACE & TUESDAY & SPACE & WEDNESDAY & SPACE & THURSDAY ' & SPACE & FRIDAY & SPACE & SATURDAY
    REGWORKDAYS = REGSUNDAY + REGMONDAY + REGTUESDAY + REGWEDNESDAY + REGTHURSDAY ' + REGFRIDAY + REGSATURDAY

    Or simply delete the end of the lines

    NEWWORKDAYS = SUNDAY & SPACE & MONDAY & SPACE & TUESDAY & SPACE & WEDNESDAY & SPACE & THURSDAY
    REGWORKDAYS = REGSUNDAY + REGMONDAY + REGTUESDAY + REGWEDNESDAY + REGTHURSDAY


     

    Through sample ADM:

    Also you can also achieve this trough GPO - if you edit the ADM template - but the menus will become grayed out for the users:
    You cannot do that if you only add the keys under the normal path because at the next boot, you’ll get what’s stored in the message, unless you have set it via GPO

    Software\Microsoft\Office\XX.0\Outlook\Options\Calendar
     DWORD – Workday – values:
     Sets the value in the option ''Calendar work week'.
    124 |                       120 |                               60 |                           126 |                              30 |                                
    Monday to Friday | Monday to Thursday | Tuesday to Friday | Monday to Saturday | Wednesday to Saturday |


     142 |                            252 |                        254|
    Thursday to Sunday | Sunday to Friday | All seven days


     Software\Microsoft\Office\XX.0\Outlook\Options\Calendar
     DWORD - FirstDOW - values:
        0 |             1 |           2 |                   3 |                 4 |           5 |            6|
     Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday

    Explanation:
    ------------------
    We store those settings in the Calendar folder itself, and load it from there and cache it to registry when we boot.
    We store it in the associated content message IPM.Configuration.WorkHours.
    As I mentioned when you only set the registry key, you don’t update the message in the folder. Therefore at next boot, you’ll get what’s stored in the message, unless you have set it via GPO.

    a. Download MFCMAPI from:
    http://www.microsoft.com/en-us/download/details.aspx?id=2953
    b. Install it on the user’s computer
    c. Open MFCMAPI
    d. hit 'OK' to clear the 'About MFCMAPI' information dialog.
    e. Select 'Session' from the drop-down menu and click ‘Logon and Display Store Table.’
    f. right click on the calendar – Open Associated Contents Folder
    g. select from under the Subject field - IPM.Configuration.WorkHours.
    I. Go to PR_ROAMING_XMLSTREAM
    j. Open this Property and you will see all the settings saved here

     

    MICROSOFT MAKES NO WARRANTIES ABOUT THE SUITABILITY, RELIABILITY OR ACCURACY OF THE SAMPLE APPLICATION THAT HAS BEEN SENT TO YOU
    PLEASE USE IT ON YOUR OWN RISK AND JUST AS A SAMPLE APPLICATION THAT ILUSTRATES HOW SUCH A FUNCTIONALITY CAN BE IMPLEMETED
    This sample is not supported under any Microsoft standard support program or service. The sample code is provided AS IS without warranty of any kind. Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of  the sample code and documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the code be liable for any  damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code or documentation.

    Sample Script:

    const HKEY_CURRENT_USER = &H80000001
    strComputer = "."

    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
    strComputer & "\root\default:StdRegProv")

    strKeyPath = "Software\Policies\Microsoft\Office\xx.0\Outlook\Options\Calendar"
    strKeyValue = "WorkDay"
    oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
    oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strKeyValue,248

    strKeyPath = "Software\Policies\Microsoft\Office\xx.0\Outlook\Options\Calendar"
    strKeyValue = "CalDefStart"
    oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
    oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strKeyValue,480

    strKeyPath = "Software\Policies\Microsoft\Office\xx.0\Outlook\Options\Calendar"
    strKeyValue = "CalDefEnd"
    oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
    oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strKeyValue,1020

    strKeyPath = "Software\Policies\Microsoft\Office\xx.0\Outlook\Options\Calendar"
    strKeyValue = "Alter Calendar Type"
    oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
    oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strKeyValue,1

    strKeyPath = "Software\Policies\Microsoft\Office\xx.0\Outlook\Options\Calendar"
    strKeyValue = "Alter Calendar Lang"
    oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
    oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strKeyValue,1033


    strKeyPath = "Software\Policies\Microsoft\Office\xx.0\Outlook\Options\Calendar"
    strKeyValue = "FirstWOY"
    oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
    oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strKeyValue,0

    strKeyPath = "Software\Policies\Microsoft\Office\xx.0\Outlook\Options\Calendar"
    strKeyValue = "FirstDOW"
    oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
    oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strKeyValue,0

    strKeyPath = "Software\Policies\Microsoft\Office\xx.0\Outlook\Options\Calendar"
    strKeyValue = "WeekNum"
    oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
    oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strKeyValue,0


    'wscript.echo "success!"

    Where "xx" is the version from Outlook 12 or 14.


     

    I hope this helps you, and I’m glad to receive any comments or suggestions.

     

    Clarification on Outlook 2010 and Additional Exchange Account supportability

    $
    0
    0

    General information:

    Starting with Outlook 2010, we introduced a new feature that allows users to add Multiple Microsoft Exchange accounts to the same profile:

     

    http://office.microsoft.com/en-gb/outlook-help/what-s-new-in-microsoft-outlook-2010-HA010354412.aspx: "What's new in Microsoft Outlook 2010"

     

    Outlook 2010 added the capability to connect to multiple Exchange accounts within the same profile. This has been a frequently requested feature in earlier versions of Outlook, and it is finally here in Outlook 2010.

    This feature is useful, for example, when you have multiple Exchange accounts in different organizations. In earlier versions of Outlook, you had to use multiple Outlook profiles to work in either Exchange mailbox, causing you to restart Outlook every time you wanted to check e-mail in the account that is not currently in the active profile. Or, you can use a single Outlook profile but one account would be configured as a POP3 account. In this situation in Outlook 2010, you can have both Exchange accounts in the same Outlook profile, allowing you to send and receive e-mail in either account as if they were the only account in the profile.

     

    Please keep in mind the following limitations about the number of Exchange accounts you can include in the same Outlook profile.

    • By default, you can only add 10 Exchange accounts to the same profile.
    • You can customize the limit to the number Exchange accounts in the same profile using the following registry data:

                          Key: HKEY_CURRENT_USER\software\policies\Microsoft\exchange

      • DWORD: MaxNumExchang
      • Value: integer value starting at 1 (default = 10 if DWORD is missing)

     

    Additional Exchange Account supportability:

    Adding an additional Exchange account depends on the following conditions:

    • You have Full Access permission to the additional Exchange mailbox.

               Or

    • You don’t have Full Access Permissions and you know the credentials to access the additional Exchange mailbox.

     

    However, if you grant Full Mailbox permissions with the intention of adding a secondary exchange account, you should be careful to avoid conflictual overlapping settings. Automapping* or other type of permissions granted on a mailbox can interfere in the behavior of an additional account.

     Issues can occur when you add multiple Exchange accounts in the same Outlook 2010 profile in some configurations. Therefore, there are some supportability limitations when using this feature.  

    The below table is a graphical overview of the information available in the article: http://support.microsoft.com/kb/981245: "Issues that can occur when you add multiple Exchange accounts in the same Outlook 2010 profile" and it is intended to describe the supportability of Additional Exchange accounts under the same profile:

    Note: Please remember that in a manager delegate scenario, adding the manager's mailbox as an additional exchange account is not supported.

     

    Additional information:

    http://blogs.office.com/b/microsoft-outlook/archive/2009/08/25/multiple-exchange-accounts-in-outlook-2010.aspx: "Multiple Exchange Accounts in Outlook 2010"

     

    Please feel free to comment or add any suggestions.

    Happy Outlooking!

     

    ===================================================================================================================================================================

    *Automapping = In Exchange 2010 Service Pack 1 (SP1) Exchange introduced a feature that allows Outlook 2007 and Outlook 2010 client to automatically map to any mailbox to which a user has Full Access
    permissions. If a user is granted Full Access permissions to another user's
    mailbox or to a shared mailbox, Outlook automatically loads all mailboxes to which
    the user has full access.

    Microsoft Exchange Server 2010 Service Pack 1 (SP1), Outlook 2010 and Outlook 2007 clients automatically map to any mailbox to which a user has Full Access permissions. If a user is granted Full Access permissions to another user's mailbox or to a shared mailbox, Autodiscover automatically loads all mailboxes to which the user has full access. If the user has full access to a large number of mailboxes, performance issues may occur when starting Outlook. For example, in some Exchange organizations, administrators have full access to all the mailboxes in the organization. In this case, upon starting, Outlook tries to open all mailboxes in the organization. Please consult the following articles for additional information:

    http://technet.microsoft.com/en-us/library/hh529943(v=exchg.141).aspx

    http://technet.microsoft.com/en-us/library/bb676551(v=exchg.141).aspx

     

    New Outlook Calendar best practices guidance for Outlook 2007, Outlook 2010, and Outlook 2013

    $
    0
    0

    If you frequently work with meetings in Outlook, it is very likely that at some point you read the Outlook meeting requests: Essential do’s and don’ts article. However, you probably noticed that this older document only generally applies to newer Outlook versions. Over the last few years, many improvements were made to the Outlook Calendar. These improvements have made many of the recommendations in the older document unnecessary.

    The newBest practices when using the Outlook Calendar document is exclusively for Outlook 2007, Outlook 2010, and Outlook 2013 clients. It supplements (not replaces) the Essential do’s and don’ts document. The older document still applies to Outlook 2003 and earlier versions. 

    Read the entire article carefully. You will notice there are many changes, including clearly marked sections directed at Exchange mailbox users.  

    This newly published best practices document is the culmination of many months of work by numerous individuals.

    We are sure you will find it to be very helpful.

    Display search results as I type when possible: Online Mode

    $
    0
    0

    I would like to take the chance of describing the function of "word wheeling" in Outlook Instant Search  

    The function “Display search results as I type when possible”(word wheeling), can be a little ambiguous.   

    You may wonder what are the scenarios for which “when possible” applies. The most common is Outlook running in Online mode either
    with a primary account or additional mailboxes added without the checkbox
    “download shared folders”.

     

    Search

    • Display search results as I type when possible This option is selected by default. Clear this checkbox if you don't want the search results to be displayed as you type. For example, you might not want to see any search results until you pres  ENTER or click the Search button. The Search button  is enabled only if you clear this option. You might also want to clear this check box because the search results are not displayed as fast as you want.

    http://office.microsoft.com/en-us/outlook-help/find-a-message-or-item-by-using-instant-search-HA001230585.aspx

     

    This behavior is intended because in Online Mode the search is performed by Exchange server.

    Using Exchange Search, Outlook will send the search string to Exchange Server and the server will reply with the results.
    For this reason the user input “hitting enter or the search button ” is required.

    Here it is the interesting part, in background when you start a search in Outlook  running in Online
    mode

    I try to search for test1, type test1 and hit Enter or 
     

    Outlook will send the search Criteria (test1) to the Exchange server in an RPC package. (more info: http://msdn.microsoft.com/en-us/library/hh354885(v=exchg.80).aspx)

    The Server will process the client request  (http://msdn.microsoft.com/en-us/library/ee124336(v=exchg.80).aspx) and Outlook will display the results.

    Windows Desktop Search role in this configuration is only to enable Instant Search feature.

    In online the e-mail are stored only on Exchange Server so Windows Desktop Search (WDS) doesn’t indexes the e-mails.

    The functionality is reduced in Online Mode for all Outlook version from Outlook 2003 to the latest Outlook 2013.
    Hence, the function Display search results as I type when possible, is not displaying the result while you type.

    More information you can consult:

    Understanding Exchange Search

    http://technet.microsoft.com/en-us/library/bb232132(v=exchg.141).aspx

    Windows Desktop Search

    http://blogs.msdn.com/b/e7/archive/2008/10/13/windows-desktop-search.aspx

     

    How to programmatically add additional mailboxes to an existing mail profile

    $
    0
    0

    There's a well-known knowledge base article which describes on how to programmatically add mailboxes to a given e-mail profile:
    171636 How to add more Exchange mailboxes to a MAPI profile
    http://support.microsoft.com/kb/171636/EN-US

    This code has been updated and slightly modified in the following blog:
    http://blogs.msdn.com/b/emeamsgdev/archive/2011/11/02/how-to-add-more-exchange-mailboxes-to-a-mapi-profile-kb-171636.aspx

    This latest code snippet doesn't solve the issue completely, as it only fixes the display problem of the added additional mailbox.

    Reason:
    Beginning with Outlook 2010, more than one exchange account can be added to an e-mail profile. This leads to the following issues:
    - The 'Exchange global section' in the mail profile is no longer used to store information about additional mail profiles
    - Each Exchange account is saved with a dynamically created UID in the mail profile

    Each added additional mailbox will be stored with it's UID in the PR_STORE_PROVIDERS property of the MSEMS section, but this property has to be in-sync with the PR_STORE_PROVIDERS property of the exchange account itself (the exchange provider).
    This is important when adding more than one additional mailbox.

    Adding addtional mailboxes to a given e-mail profile requires two steps:
    - Create the EMSDelegate provider for the MSEMS service
    - Read the the PR_STORE_PROVIDERS property from the MSEMS section and add this prop to the dynamically created exchange account in this profile

    Disclaimer

    This code is sample code. these samples are provided "as is" without warranty of any kind. Microsoft further disclaims all implied warranties including without limitation any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the samples remains with you. in no event shall Microsoft or its suppliers be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the samples, even if Microsoft has been advised of the possibility of such damages. Because some states do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you.


    The following code snippet demonstrates this:

    HRESULT AddMailbox(LPSTR lpszProfile, LPWSTR lpszMailboxDisplay, LPSTR lpszMailboxDN, LPSTR lpszServer, LPSTR lpszServerDN)
    {
     HRESULT             hRes = S_OK;
     LPPROFADMIN         lpProfAdmin = NULL;
     LPSERVICEADMIN      lpSvcAdmin = NULL;
     LPPROVIDERADMIN     lpProvAdmin = NULL;
     LPMAPITABLE         lpMsgSvcTable = NULL;
     LPMAPITABLE         lpMsgProvTable = NULL;
     LPPROFSECT          lpMSEMSProfileSection = NULL;
     LPPROFSECT          lpProvProfileSection = NULL;

     LPSRowSet           lpSvcRows = NULL;
     LPSRowSet           lpProvRows = NULL;
     SPropValue          rgval[5];
     SRestriction        sres;
     SPropValue          SvcProps;

     LPSPropValue        lpMSEMSProp = NULL;  // Property value structure to MSEMS profile info prop
     LPSPropValue        lpProvProp = NULL;  // Property value struct for account-specific prop
     ULONG               ulProps = 0;            // Count of props.
     
     // Enumeration for convenience
     enum {iDispName, iSvcName, iSvcUID, iSctUID, cptaSvc};
     enum {iDName, iProvUID, cptaProv};
       
     // This structure tells HrQueryAllRows what columns we want returned.
     SizedSPropTagArray(cptaSvc, sptCols) = {cptaSvc, PR_DISPLAY_NAME, PR_SERVICE_NAME, PR_SERVICE_UID, PR_EMSMDB_SECTION_UID};
     SizedSPropTagArray(cptaProv, sptCols2) = {cptaProv, PR_DISPLAY_NAME, PR_PROVIDER_UID};

     // This structure tells our GetProps call what properties to get from the 'global' profile section.
     SizedSPropTagArray(1, sptMSEMS) = {1, PR_STORE_PROVIDERS};

     // Get an IProfAdmin interface.
     hRes = MAPIAdminProfiles(0, &lpProfAdmin); // Pointer to new IProfAdmin
     if (FAILED(hRes)) goto error_handler;
     printf("Retrieved IProfAdmin interface.\n");

     // Get an IMsgServiceAdmin interface off of the IProfAdmin interface.
     hRes = lpProfAdmin->AdminServices(lpszProfile,  // Profile that we want to modify.
                                             "",           // Password for that profile.
                                             NULL,         // Handle to parent window.
                                             0,            // Flags.
                                             &lpSvcAdmin); // Pointer to new IMsgServiceAdmin.
     if (FAILED(hRes)) goto error_handler;
     printf("Retrieved IMsgServiceAdmin interface.\n");
              
     // We now need to get the entry id for the Exchange service.
     // First, we get the Message service table.

     hRes = lpSvcAdmin->GetMsgServiceTable(0, &lpMsgSvcTable);
     if (FAILED(hRes)) goto error_handler;
     printf("Retrieved message service table from profile.\n");

     // Set up restriction to query table.
     sres.rt = RES_PROPERTY;
     sres.res.resProperty.relop = RELOP_EQ;
     sres.res.resProperty.ulPropTag = PR_SERVICE_NAME;
     sres.res.resProperty.lpProp = &SvcProps;
           
     SvcProps.ulPropTag = PR_SERVICE_NAME;
     SvcProps.Value.lpszA = "MSEMS";

     // Query the table to get the entry for the Exchange message service.
     hRes = HrQueryAllRows(lpMsgSvcTable, (LPSPropTagArray)&sptCols, &sres, NULL, 0, &lpSvcRows);
     if (FAILED(hRes)) goto error_handler;
     printf("Queried table for Exchange message service.\n");

     if (lpSvcRows->cRows > 1)
     {
      printf("More than one Exchange Account detected....exiting.\n");
      goto error_handler;
     }

     //We only modify the first and primary exchange service
     
     // Get a service provider admin pointer.
     hRes = lpSvcAdmin->AdminProviders((LPMAPIUID)lpSvcRows->aRow->lpProps[iSvcUID].Value.bin.lpb, 0, &lpProvAdmin);
     if (FAILED(hRes)) goto error_handler;
     printf("Retrieved IProviderAdmin interface\n");

     //Get the profile section pointer for the MSEMS service
     hRes = lpProvAdmin->OpenProfileSection((LPMAPIUID)lpSvcRows->aRow->lpProps[iSvcUID].Value.bin.lpb,
                                                  NULL,
                                                  MAPI_FORCE_ACCESS | MAPI_MODIFY,
                                                  &lpMSEMSProfileSection);
     if (FAILED(hRes)) goto error_handler;
     printf("Retrieved profile section interface, MSEMS\n");
       
     // Set up a SPropValue array for the properties you need to configure.

     // First, display name, as Unicode.
     ZeroMemory(&rgval[0], sizeof(SPropValue) );
     rgval[0].ulPropTag = PR_DISPLAY_NAME_W;
     rgval[0].Value.lpszW = lpszMailboxDisplay;
       
     // Next, the DN of the mailbox.
     ZeroMemory(&rgval[1], sizeof(SPropValue) );
     rgval[1].ulPropTag = PR_PROFILE_MAILBOX;
     rgval[1].Value.lpszA = lpszMailboxDN;
       
     // Next, the name of the server the mailbox is on.
     ZeroMemory(&rgval[2], sizeof(SPropValue) );
     rgval[2].ulPropTag = PR_PROFILE_SERVER;
     rgval[2].Value.lpszA = lpszServer;
       
     // Next, the DN of the server the mailbox is on.
     ZeroMemory(&rgval[3], sizeof(SPropValue) );
     rgval[3].ulPropTag = PR_PROFILE_SERVER_DN;
     rgval[3].Value.lpszA = lpszServerDN;
       
     // Finally, the PR_EMSMDB_SECTION_UID
     ZeroMemory(&rgval[4], sizeof(SPropValue));
     rgval[4].ulPropTag = PR_EMSMDB_SECTION_UID;
     MAPIAllocateBuffer(sizeof(MAPIUID), (LPVOID *) &rgval[4].Value.bin.lpb);
     memcpy(rgval[4].Value.bin.lpb, (LPMAPIUID)lpSvcRows->aRow->lpProps[iSctUID].Value.bin.lpb, lpSvcRows->aRow->lpProps[iSctUID].Value.bin.cb);
     rgval[4].Value.bin.cb = sizeof(MAPIUID);
       
     // Create the message service with the above properties
     hRes = lpProvAdmin->CreateProvider("EMSDelegate", 5, rgval, 0, 0, (LPMAPIUID)lpSvcRows->aRow->lpProps[iSvcUID].Value.bin.lpb);
     if (FAILED(hRes)) goto error_handler;
     printf("The new mailbox is added.\n");
     
     //With OL2010 and higher, the new added EMSDelegate will be added to the PR_STORE_PROVIDERS prop for the MSEMS section
     //Read the PR_STORE_PROVIDERS from the MSEMS section
     hRes = lpMSEMSProfileSection->GetProps((LPSPropTagArray)&sptMSEMS, 0, &ulProps, &lpMSEMSProp);
     if (FAILED(hRes)) goto error_handler;
     printf("Read MSEMS profile section prop.\n"); 

     //But it needs to be added to the PR_STORE_PROVIDERS prop for the primary exchange account in this profile
     //So I need to loop thru the list of installed services
     hRes = lpProvAdmin->GetProviderTable(0, &lpMsgProvTable);
     if (FAILED(hRes)) goto error_handler;
     printf("Got provider table.\n");

     hRes = HrQueryAllRows(lpMsgProvTable, (LPSPropTagArray)&sptCols2, NULL, NULL, 0, &lpProvRows);
     if (FAILED(hRes)) goto error_handler;
     printf("Got provider services.\n");

     for(ULONG ProvCnt = 0; ProvCnt < lpProvRows->cRows; ProvCnt++)
     {
      //Read the props for each provider and check the PR_STORE_PROVIDERS prop
      hRes = lpProvAdmin->OpenProfileSection((LPMAPIUID)lpProvRows->aRow[ProvCnt].lpProps[iProvUID].Value.bin.lpb,
                NULL,
                MAPI_FORCE_ACCESS | MAPI_MODIFY,
                &lpProvProfileSection);
      if(S_OK == hRes)
      {
       hRes = lpProvProfileSection->GetProps((LPSPropTagArray)&sptMSEMS, 0, &ulProps, &lpProvProp);
       if((lpProvProp) && (PROP_TYPE(lpProvProp->ulPropTag) != PT_ERROR) && (PROP_ID(lpProvProp->ulPropTag) == PROP_ID(PR_STORE_PROVIDERS)))
       {
        if(lpMSEMSProp->Value.bin.cb != lpProvProp->Value.bin.cb)
        {
         //Need to replace the PR_STORE_PROVIDERS for the account with the correct one from MSEMS
         hRes = lpProvProfileSection->SetProps(ulProps, lpMSEMSProp, NULL);
         if (hRes == S_OK)
          printf("Set provider properties.\n");
        }
        //Release these two props
        MAPIFreeBuffer(lpMSEMSProp);
        MAPIFreeBuffer(lpProvProp);
       }

       if(lpProvProfileSection)
        lpProvProfileSection->Release();
      }
     }
     
     goto cleanup;
          
     error_handler:
      printf("ERROR: hRes = %0x\n", hRes);

     cleanup:
      // Clean up the new stuff
      if(lpProvRows)
       FreeProws(lpProvRows);
      if(lpMsgProvTable)
       lpMsgProvTable->Release();

     // Clean up
     if (lpSvcRows) FreeProws(lpSvcRows);
     if (lpMsgSvcTable) lpMsgSvcTable->Release();
     if (lpSvcAdmin) lpSvcAdmin->Release();
     if (lpProfAdmin) lpProfAdmin->Release();
     if (lpProvAdmin) lpProvAdmin->Release();
     if (lpMSEMSProfileSection) lpMSEMSProfileSection ->Release();

     printf("Done cleaning up.\n");
     return hRes;
    }

    How to programmatically read additional mailboxes from an existing mail profile

    $
    0
    0

    Reading additional mailboxes from a given e-mail profile is much simpler than adding them. After retrieving all installed providers for the MSEMS service, just loop thru all providers and search for the ones with PR_PROFILE_TYPE set to the value 2.

    This is documented here:
    http://msdn.microsoft.com/en-us/library/office/cc815597.aspx

    For each 'delegate store' simply read the following properties (which are later required if you want to add this mailbox to a different/new.... e-mail profile):

    PR_DISPLAY_NAME
    PR_PROFILE_MAILBOX
    PR_PROFILE_SERVER
    PR_PROFILE_SERVER_DN


    Here's a code snippet which shows on how to enumerate the installed providers for the MSEMS service:

    Disclaimer 
    This code is sample code. these samples are provided "as is" without warranty of any kind. Microsoft further disclaims all implied warranties including without limitation any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the samples remains with you. in no event shall Microsoft or its suppliers be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the samples, even if Microsoft has been advised of the possibility of such damages. Because some states do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you.

     

     // Enumeration for convenience.
     enum {iDispName, iSvcName, iSvcUID, cptaSvc};

     // This structure tells HrQueryAllRows what columns we want returned.
     SizedSPropTagArray(cptaSvc,sptCols) = { cptaSvc,
           PR_DISPLAY_NAME,
           PR_SERVICE_NAME,
           PR_SERVICE_UID };
     
     // This structure tells HrQueryAllRows what columns we want returned.
     // Information when reading the installed provider services
     static SizedSPropTagArray(3, sptProvt) = {3, {  PR_DISPLAY_NAME,
           PR_RESOURCE_TYPE,
           PR_PROVIDER_UID} };

     // Get an IProfAdmin interface.
     hRes = MAPIAdminProfiles(0, &lpProfAdmin);// Pointer to new IProfAdmin
     if (FAILED(hRes)) goto error_handler;
     
     // Get an IMsgServiceAdmin interface off of the IProfAdmin interface.
     hRes = lpProfAdmin->AdminServices(lpszProfile, "", NULL, 0, &lpSvcAdmin);// Pointer to new IMsgServiceAdmin.
     if (FAILED(hRes))
     { 
      printf("Can't open Mail profile %s\n", lpszProfile);
      goto error_handler;
     }
     
     // We now need to get the entry id for the Exchange service.
     // First, we get the Message service table.
     hRes = lpSvcAdmin->GetMsgServiceTable(0, &lpMsgSvcTable);// Pointer to table
     if (FAILED(hRes)) goto error_handler;
     
     // Set up restriction to query table.
     sres.rt = RES_PROPERTY;
     sres.res.resProperty.relop = RELOP_EQ;
     sres.res.resProperty.ulPropTag = PR_SERVICE_NAME;
     sres.res.resProperty.lpProp = &SvcProps;

     SvcProps.ulPropTag = PR_SERVICE_NAME;
     SvcProps.Value.lpszA = "MSEMS";

     // Query the table to get the entry for the Exchange message service.
     hRes = HrQueryAllRows(lpMsgSvcTable, (LPSPropTagArray)&sptCols, &sres, NULL, 0, &lpSvcRows);
     if (FAILED(hRes)) goto error_handler;

     // Test if exchange service was found
     if (lpSvcRows->cRows == 0)
     {
      printf("MSEMS Service not found in Mail profile %s\n", lpszProfile);
      goto error_handler;
     }

     // Get a provider admin pointer.
     hRes = lpSvcAdmin->AdminProviders((LPMAPIUID)lpSvcRows->aRow->lpProps[iSvcUID].Value.bin.lpb, 0, &lpProvAdmin);
     if (FAILED(hRes)) goto error_handler;
      
     hRes = lpProvAdmin->GetProviderTable(NULL, &pMTProviders);
     if (FAILED(hRes)) goto error_handler;
       
     hRes = HrQueryAllRows(pMTProviders, (LPSPropTagArray)&sptProvt, NULL, NULL, 0, &pProvRows);
     if (FAILED(hRes)) goto error_handler;

     

    At this point, the rowset pProvRows contains all installed provider services for the MSEMS service and you can loop thru and read the properties.


    Conflicting permission sets when working with shared or delegated folders

    $
    0
    0

    Outlook allows users to share folders so that others can interact with items in those folders. Additionally, a user can be configured as an Outlook Delegate, allowing him or her to manage specific tasks on your behalf, such as meeting related tasks. If another user grants you folder permissions (or makes you a delegate) and you use Outlook to perform actions on that user's shared items, Outlook performs these actions using a specific permission set. However, there are a couple of different ways that you can be granted access to a user's folders. Each of these ways can create a different permission set, which can later result in conflicts.

    The diagram below shows how Outlook can be exposed to conflicting permission sets. Let's start with the following facts:

    • Permission set X is created when the Exchange Server Administrator grants you FullAccess permission to Allison's mailbox.
    • Permission set Y is created when Allison grants you explicit folder permissions by using Microsoft Outlook. Allison can do this in one of two ways:
      • Grant you individual folder permissions by right-clicking on a folder and selecting Permissions.
      • Configure you as an Outlook Delegate to specific Outlook folders, such as the Calendar.

    When you use Outlook to work with Allison's shared items, Outlook may initially use one specific permission set (this is Permission set Y in the diagram below). As you continue using Outlook to work with Allison's items, a particular function may be blocked within the existing context (again Permission set Y). In this case, some expected functionality may not be available. However, it is important to note that the unexpected behavior will not be consistent, nor can it be clearly defined here, because the initial context used by Outlook can differ depending on how Allison's mailbox or shared items are first accessed by Outlook.


     

    In the diagram, you see that the elevated permissions necessary to perform tasks on Allison's other folders are not available. This occurs because Outlook is not designed to consistently work with two or more permission sets.

    In some cases, Microsoft documentation points this limitation out. For example, the following Microsoft TechNet article makes reference to it:

    Configure Exchange accounts for Outlook 2010

    Some of the issues that can occur due to conflicting permission sets are listed in the following Microsoft Knowledge Base article:

    981245 Issues that can occur when you add multiple Exchange accounts in the same Outlook 2010 profile

    The bottom line: the easiest way to remember the limitation (and to avoid it) is by granting permissions using only one application: either Microsoft Outlook or Microsoft Exchange Server.

    Which application should you use to give permissions to your items?

    Since a user should only use one of two methods (Outlook or Exchange) to share their folders or entire mailbox, the following table will help you choose. The table lists some of the benefits and functionality that are available with each method.

     

    Exchange FullAccess

    Outlook Delegate or
      Shared Folder

    Shared mailbox appears in the Outlook Navigation Pane

    Automatically, if both of the following are true:

    a. Exchange FullAccess permission is granted with AutoMapping enabled on Exchange Server 2010 SP1 or later.

    b. You are using Microsoft Outlook 2010 or newer.

    Otherwise, you can manually add the shared mailbox as a second account using File | Account Settings.

    Not if you are only given permission to a specific folder or are only granted Delegate access. However, there is an exception. The user can grant you at least View permissions to their top level folder. Then, you add the shared mailbox to Outlook by using the Open these additional mailboxes option. If the user wishes to grant you access to their other non-default folders, they can set folder permissions on each individual folder.

    Receive meeting invitations on other's behalf

    No

    Yes - if you are configured as a Delegate.

    No - if you only have folder permissions.

    Able to view private items in shared mailbox

    No

    Yes, if you are configured as a Delegate and with the option "Delegate can see my private items".

    Note To view private items in other folders such as contacts or email folders, you must also be granted Reviewer permission to the Calendar.

    Able to open shared mailbox in OWA

    Yes

    No

    Effect on Offline Outlook Data (.ost) file size

    One .ost file is created. It contains the contents of both your mailbox and of the shared mailbox.

    Reduced size since only specific folders are being shared and cached (the additional shared folders are cached in the same .ost that is associated with the delegate's Outlook profile).

    Other considerations

    Not optimal as it requires maintaining permissions on both the Exchange Server (FullAccess) and Outlook client delegate/folder) permissions. Although the Exchange administrator can control this set of permissions, the administrator has no control over Outlook clients. Therefore, if a client chooses to configure delegate/folder permissions, they can enter an unsupported state. Additionally, the shared mailbox is fully exposed to any unexpected actions performed by the secondary user (or by any of their add-ins or devices).

    This is the recommended option, as it limits the effect that other users' add-ins or devices can have on the owner's mailbox. Additionally, it prevents Outlook clients from being configured in an unsupported state.

     

    Additional resources

    One delegate can manage multiple mailboxes. However, any given mailbox should have a limited number of delegates. Additionally, only one delegate with Editor permission is recommended. See the following Microsoft TechNet article for more information:

    Best practices when using the Outlook Calendar                                                                              

    Exchange administrators may be interested in the following Microsoft TechNet article, which explains how to disabling Auto Mapping:

    Disable Outlook Auto-Mapping with Full Access Mailboxes

    The evolution of meeting notes in Outlook

    $
    0
    0

    An Outlook meeting has a notes area that can be used to store information related to the meeting. Although it may seem very convenient to add notes directly into the meeting, there are few things that you should consider before you do this.

    The meeting organizer

    After you invite other people to a meeting, you can update the notes on your copy of the meeting. Because the notes are not a critical component of the meeting, you are not required to send an updated meeting invitation to the attendees. Therefore, you could add notes that are not initially visible to the attendees. However, if you later change the meeting time, date, location, or attendee list, Outlook sends a full meeting update to all attendees. Any existing notes will then be sent to the attendees. This is not desired behavior if you intended them to be personal notes.

    The meeting attendee

    If you accept a meeting invitation, you can also add notes to your copy of the meeting. However, if the meeting organizer changes the meeting time, date, location, or attendee list, their Outlook client sends a full meeting update. If you accept the meeting update, your notes are overwritten.

    Recurring meetings

    You can change one or more occurrences of a recurring meeting series. When you do this, Outlook saves each unique occurrence as a meeting exception. If the organizer or the attendee adds notes to an occurrence, Outlook creates a meeting exception. Later, if the meeting series is updated and a full update is sent, any notes in the meeting exceptions are lost.

    Enter Outlook 2013

    Outlook 2013 introduces a new feature known as Meeting Notes. This feature uses Microsoft OneNote to store notes related to the meeting. These notes can be personal or you can decide to share them with the meeting attendees. If you choose to share the notes, a link to the OneNote workbook is inserted into the meeting notes.

    In Outlook 2013, start taking meeting notes by clicking Meeting Notes and then clicking either Share notes with the meeting series or Take notes on your own. The following screen capture shows the options:

     

     

    Additional resources

    For more information about the Meeting Notes feature, see this post from the OneNote team:

    http://blogs.msdn.com/b/descapa/archive/2012/08/28/taking-meeting-notes-in-onenote-2013.aspx

    GAL pictures not displaying? Checkpoints to resolve the issue

    $
    0
    0

    Part 1: The Setup

    This  blog is split in two parts, first covering checkpoints for a correct setup for GAL pictures and the second Outlook client troubeshooting focused on Exchange Cached Mode.

    Setting pictures in Active directory is a great feature as you have a centralized location you can manage the company pictures.  
    Yet, there are two phases where you can face difficulties: in the setup process and in the operational phase.

    The setup process is well documented in these exchange blogs:

    GAL Photos: Frequently Asked Questions: http://blogs.technet.com/b/exchange/archive/2010/06/01/3410006.aspx 
    GAL Photos in Exchange 2010 and Outlook 2010: http://blogs.technet.com/b/exchange/archive/2010/03/10/gal-photos-in-exchange-2010-and-outlook-2010.aspx


    There is one point which is not fully described the above articles:

    mAPIID value should be 35998

    First question is how do I know if the value is right (35998) or when should I care about its value?
    If you have Active directory installed with Windows Server 2008 R2 on the master Domain Controller, the value will be 35998.

    However, most organization have Active directory for a longer time and they need to check the mAPIID.

    From this moment you need to pay extra attention changing the examples: DC=Contoso,DC=Com according to your domain name, usenames, etc. and copy the commands to notepad to remove extra spacing and special characters. Also make sure you read the disclaimer at the end of the post.

    To check the attribute you can easily perform this LDAP query on the master Domain Controller with Domain Admin privileges:
    ldifde -d CN=Schema,CN=Configuration,DC=Contoso,DC=Com -f schema.ldf

    This command will provide an export of your Active Directory Schema and export available here: %userprofile%

    Open schema.ldf with notepad and search for Picture:
    The line you are interested in is:
    dn: CN=Picture,CN=Schema,CN=Configuration,DC=contoso,DC=com

    and under it you have you should have mAPIID attribute with value 35998 (I set a wrong value in the screenshot as an example)

     

    If the value is not the specified one(35998) you have 2 options:

    Update the Active Directory Schema to 2008 R2 level following these articles:
    http://technet.microsoft.com/en-us/library/dd464018(WS.10).aspx
    http://technet.microsoft.com/en-us/library/cc753437(WS.10).aspx

    However, you may want to update only the mAPIID value and this is possible with the following command:

    ldifde -i -f c:\temp\mAPIID.txt

    Copy the below text in notepad, mAPIID.txt let's say, and of course change DC=contoso,DC=com.

    dn:
    changetype: modify
    add: schemaUpgradeInProgress
    schemaUpgradeInProgress: 1
    -

    dn: CN=Picture,CN=Schema,CN=Configuration,DC=contoso,DC=com
    changetype: modify
    replace: mAPIID
    mAPIID: 35998
    -

    dn:
    changetype: modify
    add: schemaUpgradeInProgress
    schemaUpgradeInProgress: 0
    -

    dn:
    changetype: modify
    add: schemaUpdateNow
    schemaUpdateNow: 1
    -


    Unless you have a good technical reason we advise you to use the first method and not changing the attribute only.

    Four checkpoints for Setup section

    1. Schema Level (mAPIID 35998)

    2. ThumbnailPhoto attribute replicated to GAL: procedure available here

    3. Import the picture methods:
    Directly in Active Directory follow the example code for here:
    http://support.microsoft.com/kb/292029

    Exchange 2007 PowerShell script one of the best I have used is available here:
    http://www.stevieg.org/tag/gal-photos/

    Exchange 2010 PowerShell command:

    Import-RecipientDataProperty -Identity username -Picture -FileData ([Byte[]]$(Get-Content -Path "C:\pictures\username.jpg" -Encoding Byte -ReadCount 0))

    Keep in mind that Exchange PowerShell can import pictures up to 10KB while the AD attribute supports a max size of 100 KB

    Exchange 2013 PowerShell command and Exchange Control Panel from OWA:
    Import-RecipientDataProperty -Identity username -Picture -FileData ([Byte[]]$(Get-Content -Path "M:\Employee Photos\ username.jpg" -Encoding Byte -ReadCount 0))

    Office 365 backend: 
    Upload a photo on Microsoft Office 365 Portal(max size 10KB) or follow the process described in:
    http://support.microsoft.com/kb/2497721

    4. Can you get the picture from Exchange?
    To check copy the below command in a export_picture.ps1 script and run it:

    $searcher.filter = "distinguishedname=CN=test user,CN=Users,DC=Contoso,DC=com"
    $photo=$searcher.findone()
    $photo.properties.thumbnailphoto | set-content c:\temp\test username.jpg -encoding byte

     

    After this checkpoints Outlook will show the Picture if it is set in Online Mode.

    This is because Outlook 2007, 2010 and 2013 will get the picture direct from the Global Catalog server.
    For Outlook 2003 and 2007 you need to deploy Outlook social connector again very well described on:
    http://www.stevieg.org/tag/gal-photos/
    Download page: http://www.microsoft.com/en-us/download/details.aspx?id=7985

    When running in Exchange Cache Mode Outlook client and Exchange Server has a more important role and we’ll cover it in Part 2.

     

    Disclaimer

    This code is sample code. These samples are provided "as is" without warranty of any kind. Microsoft further disclaims all implied warranties including without limitation any implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the samples remains with you. In no event shall Microsoft or its suppliers be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the samples, even if Microsoft has been advised of the possibility of such damages. Because some states do not allow the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you.

    Information on AutoComplete feature in Outlook

    $
    0
    0

     

    AutoComplete feature in Outlook and how it works:

     

    The nickname cache feature makes it quicker to resolve a name for a recipient that you use on a regular basis. The feature has changed a little over the years with the different versions of Outlook. For example, the filename extension has gone from .NICK to .NK2 between Outlook 2002 and Outlook 2003, Outlook 2007.

                    The NickName Cache file is used for easy resolving of names that you send emails most frequently. It saves you from having to type in the entire email address for a recipient.

     

    The nickname cache file will be located on a user’s machine in the following path:

     

                 Windows Vista   drive:\Users\user\AppData\Roaming\Microsoft\Outlook

                 Windows XP or Windows Server 2003   drive:\Documents and Settings\user\Application Data\Microsoft\Outlook

     

    When you use Outlook to send email it will store the email address for the recipient in the Outlook profile’s matching named NickName Cache File (i.e. Profile name: “Default Outlook Profile”, corresponding NickName Cache file: “Default Outlook Profile.NK2”). This is part of the Auto-Suggest/Auto-Complete component of Outlook.

     

                    If you have two computers and on the second one you have created a new profile, a new .nk2 file will be created. You can copy the .nk2 file from the first computer on the second one in order to maintain the cache names. Each profile will have a .nk2 file associated.

     

    The nickname cache is always held in memory until you exit Outlook. The updated information related to the cache is not written into the .nk2 file until you exit Outlook.If you receive an NDR after sending to the recipient, the correct information for that user is no longer available in the NK2 file or the file got corrupted.

     

     

    AutoComplete feature in OWA 2007 vs Outlook:

     

                    OWA allows now to cache the most recent entries used when sending messages. These entries are stored on the user’s mailbox. There is no link between these entries and the entries stored in the Outlook .NK2 file.

                    For example if you used Outlook to send messages to users: User1, User2, User3, in the .NK2 file of the Outlook profile you will have these entries.

                    If you use afterwards OWA 2007 to send message to User4, User5 in the OWA 2007 these entries will be available for the OWA AutoComplete. User4 and User5 will not be stored in Outlook’s .NK2

                   

     How to resolve problems with “corrupted” entries in .NK2 file of Outlook (Microsoft supported):

     

    Option 1: Delete only the “incorrect” entries manually using Outlook

     

                    As this file is associated to each profile and stored on users computers, in order to remove only the corrupted entries, users should delete them manually from Outlook. 

                    If there are few incorrect entries I would suggest this method because we will avoid losing the entire recipients cache. If the entire file is corrupted, you will need to recreated the entire .NK2 file.

     

    To remove an user from Outlook's nickname cache (.NK2) file, clear the nickname cache entry for that specific recipient:

     

    1. Open a new e-mail message.
    2. Begin typing the first letters of that recipient's name or e-mail address.
    3. Continue typing the name until only that one recipient's name appears in the list of automatically suggested/completed names.
    4. Press the DEL key on your keyboard.

     

    Note: One of the most important things to remember about the nickname cache feature is that new entries are not written to the .nk2 file until you exit and restart Outlook.

     

     

    Delete a name from the AutoComplete list

    http://office.microsoft.com/en-us/outlook/HP063767381033.aspx

     

     

    Option 2: Delete the .NK2 file in order to have a new file created

     

                    In this case the entire file will be replaced with a new one. The existing entries in the old file will not be added in the new one. The new .NK2 file will be an empty file and entries will be created while messages will be sent to different recipients (after Outlook exit, these entries will be written in the .NK2 file).

     

    Additional details on AutoComplete can be found here :

     

    Outlook 2007:

     

    Using the automatic name fill-in feature (AutoComplete)

    http://office.microsoft.com/en-us/outlook/HA100978871033.aspx

     

     

    Outlook 2003:

     

    About AutoComplete name suggesting

    http://office.microsoft.com/en-us/outlook/HP063766471033.aspx

     

    Delete a name from the AutoComplete list

    http://office.microsoft.com/en-us/outlook/HP063767381033.aspx

     

    AutoComplete

    http://office.microsoft.com/en-us/outlook/CH010496931033.aspx

    Some best practices when working with Outlook Calendar

    $
    0
    0

    Prerequisites

    1.1   Make sure that you are up-to-date!

     

    1.1.1          Outlook

    For administrators is very important keep all Outlook clients updated with the latest Microsoft cumulative updates for Office/Outlook.

    1.1.2          Exchange

     

    Exchange server should be up-to-date in order to avoid issues that were corrected in released Rollups or Service Packs.

     

    1.1.3          Blackberry/Palm/Other mobile devices used to synchronize the Outlook Calendar

     

    Very often users are synchronizing their mailbox (including calendar) with handheld devices (Blackberry, Palm, Iphone, etc.). For this reason it is also very important to update the software for these devices and 3rd party servers that are used for Exchange mailbox synchronization.

     

    Best practices for the Outlook client

     

    2.1   Same Outlook version when multiple users are working on the same calendar (for example while using delegation)

     

    When working on the same calendar we recommend using the same Outlook version with the same service pack and "updates" level.

    In fact an Outlook client up-to-date and an Outlook client that is not up-to-date might have a different behavior while processing a meeting and conflicts might appear. The same principle applies when using different Outlook versions.

     

    When you use delegates in Outlook 2007, it is recommended that the manager and all the delegates use Outlook 2007 Service Pack 2

    http://support.microsoft.com/kb/924470

     

     

    2.2   Always process meeting invites from the Inbox folder

     

    Normally when a user is invited to a meeting, an email message will appear in his Inbox folder, containing the meeting invite. At the same time the meeting will be placed in the Calendar as “tentative”.  These operations are automatically made by Outlook and Exchange.

     

    We recommend that the user that receives the meeting invite to process it using the meeting invite message (from Inbox) and to avoid deleting this message before processing the meeting.

     

    Deleting the meeting request message from Inbox, before manually processing the meeting, will delete also the “tentative” meeting from your calendar.

     

    Once the meeting is processed using the meeting invite message, you will see that the meeting will change from “Tentative” to “Accepted”

     

    2.3   Always process meetings invites that you receive

     

    As mentioned previously when receiving a meeting request, a meeting/appointment will be placed in your calendar as “Tentative”.

     

    We recommend processing the meeting request (by accepting/ declining/ etc.). This will inform the meeting organizer about your presence in the meeting or not (if you decline). The same principle applies with updates for already accepted meetings.

     

    Leaving the meeting as Tentative without processing it will potentially create conflicts and the information in your calendar won’t be accurate.

     

     

    2.4   Do not delete meetings from your calendar

     

    Once you accepted a meeting and you are no longer able to participate do not delete the meeting from your calendar!

     

    If you delete the meeting the organizer will not be informed that you declined the meeting and in his calendar you will still appear in the attendees list.

     

    If you are not going to participate in a meeting that you previously accepted please use the “Decline” button to send the meeting cancelation message. When you decline a meeting the organizer will receive this message and you will be removed from the attendees list.

     

    Also if you are not able to attend to a meeting at the proposed time you can always use the “Proposed New Time” feature of Outlook in order to inform the organizer.

     

    Note: You will not receive any meeting updates for a meeting you declined.

     

     

    2.5   How to move or delete a meeting

     

    Once a meeting was created (organizer) and accepted (attendees) you might want to modify the time/date/etc.

     

    a)      If you are the meeting organizer

     

    If you want to move a meeting, make your changes and make sure that you use the “Send Update” button in order to inform all attendees.

     

    b)      If you are attendee to this meeting

     

    Check 2.4 above

      

    2.6   Accept meeting cancellations

     

    If you receive a meeting cancellation message, open the message and click on the “Remove from Calendar” button. Like this the meeting will be removed from the calendar, in order to avoid the situation when the meeting was cancelled but it will still appear in your calendar.

     

    2.7   Recurring meetings

    In order to have a recurring meeting you will need to add a recurrence for it. This means that the meeting will take place according to the frequency you set (Daily/Weekly/Monthly/Yearly). You also have the option to set the range of recurrence starting from (Start field) to:

    -          No end date 

    -          End After: number of occurrences

    -          End By: here you can enter a date

     

    We recommend using an “End Date” for a recurring meeting.

     

    2.8.1 Changing the organizer of a recurring meeting

    It is not possible to change the organizer of a meeting or recurring meeting.

    2.8.3 Exceptions

       

     A recurring meeting exception is in fact an occurrence that is modified (date/time). An exception will no longer correspond to the recurrence pattern.

     

    2.8.4 Deleting a recurring meeting as organizer

     

          Do no delete the meeting from your calendar. In order to delete a recurring meeting you will need to open the series (if you open the occurrence you will cancel only that occurrence) and click on the “Cancel Meeting” (this is the option for Outlook 2007). The next step is to send this information to all attendees in order to update also their calendar. To do this, use the “Send Cancelation” button.

    Attendees will receive in their inbox the “Cancellation” message and will have the possibility to remove the meeting from their calendar (with the Remove from Calendar button).

    Important: All occurrences for the meeting will be deleted.

     

     Additional information:

     

    Outlook meeting requests: Essential do’s and don’ts

    http://office.microsoft.com/en-us/outlook/HA011276781033.aspx

     

    Working with support to troubleshoot the Outlook calendar in an Exchange environment

    http://technet.microsoft.com/en-us/library/cc891495.aspx

     

     

    Description of common scenarios in which Calendar information may be removed from the Calendar or may be inaccurate

    http://support.microsoft.com/kb/899704

     

    Special characters in an attachment filename get replaced with blank spaces when opened from Outlook

    $
    0
    0

     

    Scenario:

    User A sends an email message with an attachment to User B. The attachment name has the following filename: Name.a.b.c.txt. When User B receives the attachment and opens it from Outlook he will see thatdots (“.”) from the file are replaced with blank spaces (instead of Name.a.b.c.txt the file will appear as Name a b c.txt).

    How the attachment appears in Outlook in the received message:

     

     

     

    How the filename appears when the attachment is opened in Outlook:

     

     

     

    This behavior is not seen when saving first the attachment on your disk. If the attachment is first saved then the filename will contain the special characters.

     

    Explanation for this behavior:

     

    Outlook 2003 and 2007 have been designed keeping security as an important feature. The Security has been advanced on Outlook 2003, Outlook 2007 and Outlook 2002 Service Pack3. Attachments which contain the following special characters:  '.' ']' ';' ',' '=' embedded in the filename have potential security risks involved.

     

    For this reason, the Outlook security will strip these characters out of filenames and replace them with a blank space.

     

    We have seen cases when executables containing viruses were sent in this filename format (for example hello.exe.txt) as an attachment in Outlook. Double-clicking in Outlook on the file have the risk of executing directly the .exe file, so launching the virus:

     

    Some examples below:

     

     Win32.Mimail.Q: http://www.ca.com/us/securityadvisor/virusinfo/virus.aspx?id=38104

    Win32.Netsky.P@mm : http://www.bitdefender.com/VIRUS-27915-en--Win32.Netsky.P@mm.html

     

                In other words, this is the design of Outlook and you will need to avoid using special characters in filenames in order to preserve the entire name when opening it from Outlook.

     

    If you want to have these special characters, I can suggest the following workarounds:

     

    1)      Do not use special characters in the filenames. You could use ‘_’ (underscore) or '-' (dash).

    2)      Save the attachment first before opening it in order to preserve the full name. The sender and recipient should use an antivirus to scan the files before opening it/sending it.

     

    Useful tools while troubleshooting Outlook issues (1) – Process Explorer

    $
    0
    0

     

    The following blog post will give an overview of common tools used to troubleshoot Outlook issues. I will focus in this post on Process Explorer. I will not cover all features that Process Explorer has, but I will try to highlight some of them that you can use while investigating an Outlook issue.

     

    Process Explorer

     

    Download link: http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

    Process Explorer shows you information about which handles and DLLs processes have opened or loaded.

     

    How you can use Process Explorer with Outlook:

     

    Most of the time, when we have problems with Outlook (unexpected behavior of the Outlook client, Outlook is consuming too much memory 100 % CPU, Outlook crashes, etc.) one of the very first steps is to check if the Outlook client works correctly in safe mode. What safe mode means?

    Safe mode means that you will not use some of the Outlook features during that session and you will prevent addins to be loaded etc.

     In order to start Outlook in safe mode the switch to be used is : /safe. (Starts Outlook without Microsoft Exchange Client Extensions (ECE), the Reading Pane, or toolbar customizations. Component Object Model (COM) add-ins are turned off.)

     

    Command line to start Outook in safe mode : Outlook.exe /safe.

     

    More details on Outlook switches: http://office.microsoft.com/en-us/outlook/HP012185891033.aspx

     

    As mentioned above, one of the results while using Safe mode: addins are disabled. (not all addins can be disabled using safe mode)

     

    Let’s assume that using safe mode the problem is not appearing anymore in Outlook. In order to go deeper with our analysis we will go and check:  which DLLs files are loaded while starting Outlook in “normal” mode and which DLLs files are loaded in “safe” mode (under the Outlook process).

     

    In order to compare these two lists we can use Process Explorer to dump the full list of DLLs files.

     

    Here is how you will use Process Explorer to list and export the DLLs files that are appearing under the Outlook.exe process

     

    a)      Download Process Explorer and install it on the impacted computer. Start Process Explorer

    b)      Start Outlook  (normal mode/ safe Mode)

    c)       Once Outlook is started you will see in Process Explorer main window the Outlook.exe process 

    d)      Select the line containing the Outlook.exe process and press “CTRL+D” in order to display the list of DLLs

    e)      The main window will split in two: the upper pane will display all Windows active processes and the lower window will display the list of DLLs for the selected process (in our case Outlook.exe)

     

     

    f)       You will use the lower pane to check all the DLLs that are under the Outlook process. As in our example the problem is not appearing in safe mode, you would need to check if there are DLLS (Microsoft, 3rd party) that are appearing in “Normal” mode and aren’t appearing in “Safe” Mode.

    g)      The easiest way to do this is to export these lists  (one for Outlook started in normal mode and one for safe mode).

    h)      You can use the “File -> Save As…” menu to export the list as TXT file.

    i)        In our case you will have 2 export files that you can compare later.

    j)        Even if these exports are saved as TXT files you can use Excel to filter the data and to select different DLLs (filtered by company for example, etc.)

     

    Note: Of course you can use also the Process Explorer interface to sort and filter the content, but as I mentioned I think is easier to have all these exported and analyzed in Excel.

     

    In Process Explorer window, lower pane you have by default the following columns: Name (dll filename), Description (friendly name of the application that is using the DLL), Company Name, Version. You can customize the lower pane columns by right-clicking on the column names and selecting: Select Columns.... For example you can select the “Path” column in order to have the location of the DLL file.

     

    In order to have more details on a DLL file you can select the DLL and right click on it. Next you can choose “Properties”.

     

    Another nice feature of Process Explorer is “Process Explorer Search” feature (Find -> “Find Handle or DLL” or press CTRL+F). For example if you see that your Outlook is crashing with mspst32.dll you can use this feature to see which processes are using the DLL ( might create a conflict/sharing violation/, could keep the DLL runing even if Outlook is closed, etc.)

     

     

    Note: All details on Process Explorer features are also available in the Help menu.

     

    Going further with our example where the problem does not appear while using Outlook in safe mode. Once you compared the 2 Process Export Files and you identify one or more 3rd party DLLs (not Microsoft) that are appearing while Outlook is started in "normal" mode, you could check these files one by one in order to identify which one is impacting Outlook’s behavior.

    Once you identified the DLL that is causing your problem you can open a support case with the application provider or you can check on their website if there is an update that corrects the behavior.

     

    This was a basic example that I provided in order to underline the usage of Process Explorer. Of course you can use Process Explorer for advanced scenarios and more complicated issues. In order to see the benefits of Process Explorer while troubleshooting an Outlook issues you will need to try it and test it first.

    More details:

    Using Process Explorer to List dlls Running Under the Outlook.exe Process

    http://support.microsoft.com/kb/970920


    Useful tools while troubleshooting Outlook issues (2) Process Monitor

    $
    0
    0

     

    Another tool that can be useful while trying to solve an Outlook issue is Process Monitor.

     

    Download link: http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

     

    Process Monitor is an advanced monitoring tool for Windows that shows real-time file system, Registry and process/thread activity. It combines the features of two legacy Sysinternals utilities, Filemon and Regmon, and adds an extensive list of enhancements including rich and non-destructive filtering, comprehensive event properties such session IDs and user names, reliable process information, full thread stacks with integrated symbol support for each operation, simultaneous logging to a file, and much more

     

    How to use Process Monitor while troubleshooting Outlook issues

     

    I would say that Process Monitor can be used in various situations (OST gets corrupted, you cannot access one of your PST files in Outlook, you are not sure if a policy have been applied , you want to filter the data for a particular Outlook session that is used in a terminal server, etc). In order to describe the usage of Process Monitor I will focus on one situation. Let’s assume that your OST file gets corrupted very often and you have error messages in Outlook or you cannot access one of your PST files (access denied).

     

    In these particular cases I would use Process Monitor in order to check if my files aren’t scanned by another program that could block Outlook access to the file.

     

    How to start a trace or open an existing log:

     

     

     

    You receive this error message when the log you want to open was taken on a x86 operating system and you are currently running Process Monitor on a x64 operating system. If you get this error message, you need to use /run32 command line as indicated in the error message.

     

    In order to start a trace using Process Monitor you need to double-click on the Process Monitor .exe file and the following Filter will appear. Click next on “OK”.

     

     

    In the main window you will see that the trace started. In this trace you will have by default: Registry Activity, File System Activity, Network Activity, Process and Threads Activity. You can have also Profiling Events, option that is not selected by default. More details on these in Process Monitor Help -> Using Process Monitor.

     

    In order to stop the trace you can use the File menu and click on the “Capture Events” option.

     

    When to start and stop a trace:

     

    I would say that Process Monitor should be started before you reproduce the problem in Outlook and you should stop capturing events right after the problem appeared. Like this you are sure that you captured the necessary data.

    How to filter your trace:

     

    In order to describe the filter option of Process Monitor I will go further with our example, PST that cannot be opened.  In this case I will try to see in the log I have if I can retrieve records for my .PST file. To find this the easiest way is to use the Process Monitor Filter (Filter menu -> Filter or just press CTRL+L).

     

    In the Process Monitor Filter window you have the section “Display entries matching these conditions”. The drop-down list gives you different options to select in order to create your filtering condition. More details on filtering you will find in the Help menu -> Filtering and Highlighting.

     

     

    In our case we would like to identify first the .PST file. If you don’t know which .PST file is causing the problem we will to identify all PST files that we are access in this session. One sample filter is listed below:

     

    In this filter I am checking in the PATH field all entries that contain files with .PST extension. Once you applied the filter the results will be displayed. As we might have a conflict in accessing the PST file, we will need to check next which processes are accessing my PST besides Outlook. In the “Process Name” column we have the processes that are “working” with my file.  For example if you identify an antivirus that is scanning your PST one option in order to narrow down the possible cause would be to exclude the PST scan or to disable temporarily the antivirus in order to see if the problem persists. (as in my case were the antivirus was scanning the PST and Outlook.exe access was blocked).

     

     

     

    Again, this is a simple example explained in order to describe some features of Process Monitor. You will need to test the tool and to apply it to different scenarios in order to see the benefits of using it.

     

    Useful tools while troubleshooting Outlook issues (3) - MFCMAPI

    $
    0
    0

     

    Continuing with the tools series I will briefly describe MFCMAPI tool in this post. MFCMAPI is one of most complex tools that we can use to investigate Outlook issues and not only.

     

    Taking in consideration the complexity of this tool, I will not be able to describe everything or to give examples for each feature in this post and I will try to focus on MFCMAPI most used features while checking different Outlook issues. As a case study I added a scenario when attachments are “missing” in a received message

     

    Download link: http://mfcmapi.codeplex.com/

     

    Warning   This is a powerful tool whereby you can change raw data. Changes to data may be difficult to reverse. This tool enables the user to change the data that are not valid values and to enter corrupted data. This can be difficult or impossible to recover from. This tool is reserved for professionals who understand how MAPI and Exchange work and should not be used casually.

     

    Connecting to your profile using MFCMAPI

     

    In order to connect to a mailbox you need to use the Session menu and Logon -> Display Store Table.   A prompt will be displayed that will allow you to choose the Outlook profile.

     

    Online mode versus Cache mode view in MFCMAPI

     

    Depending on your Outlook profile configuration Online or Exchange Cache Mode you will have one of the following displays in MFCMAPI. If your Outlook profile is in Online mode you will see “Top of Information Store”. If your Outlook profile is configured with Exchange Cache Mode you will see “IPM_SUBTREE” for your store.

     

    Online Mode View:                                                         Exchange Cache Mode View:

                                                

     

    How to save MAPI properties of an Item

     

    In order to save the MAPI properties of an item you have 2 options. You can use the Property Pane menu or you can use the contextual menu after selecting the item.

    a)      Property Pane

     

     

    For example if you want to save the MAPI properties of a message in your Inbox:

     

     

    -          Expand the Top of Information Store/IPM_SUBTREE

    -          Double click on Inbox folder

    -          Select the message

    -          You can identify the message by checking the Subject column  in the upper pane

    -          In the lower pane you will have the MAPI properties of the selected message

    -          In order to save the content of lower pane use Property Pane -> Save Property Pane Contents …

    -          Next you will be prompted with the classic Save As windows and you will be invited to save the contents as XML

     

     

    b)      Contextual menu

     

    Another way to save the MAPI properties of an item, in our case a message in Inbox using the contextual menu:

    -          Select the message in the Inbox folder

    -          Right click on this message

    -          Next you can choose the Save Message(s) to File

    -          Again you will be prompted to save the content as XML

     

     

    How to check permissions on a folder

     

    In order to check the permissions on mailbox folder we can use MFCMAPI to see which user has rights on that particular folder. You will also be able to see the permissions that that user has on the analyzed folder.

     

    -          Expand the Top of Information Store/IPM_SUBTREE

    -          Select the folder

    -          Right-click on the folder and choose: Display ACL table…

    -          The “Display ACL Table” window will appear

    -          In the upper pane you will have the list of users that have permissions on that particular folder

    -          As shown in the screenshot below you can see the name of the user (PR_MEMBER_NAME), the rights associated (MEMBER RIGHTS) etc.

     

     

    How to check Public Folders

     

    MFCMAPI can be used also to check the Public Folder structure. Using MFCMAPI you can access the created Public Folders but also the System Folders, including Free/Busy, Offline Address Book,  EFORMS Registry (Forms Library) etc.

     

    In order to check these folders:

     

    a)      Once you are connected in MFCMAPI

    b)      In the main window, double click on the line that has as value : Public Folders for the Display Name column

    c)       A new window will appear with the public folders structure

     

    For example in the screenshot above I have one public folder (MyTestPublicFolder) under the Default Public Folders (IPM_SUBTREE) and the list of all system folders under NON_IPM_SUBTREE.

     

    MFCMAPI allows you to check the content of these folders. Also you can check the permissions on these folders and much more.

     

    View .MSG message or covert EML –MSG MSG-EML

     

    Another interesting feature of MFCMAPI is the MSG-EML conversion. These conversions can be useful for example when analyzing text rendering issues in Outlook and you would like to have the full message source of a message. Also MFCMAPI allows you to open directly an MSG file you saved on your disk in order to analyze the MAPI properties.

     

    View message attachments – Case study:  Attachments are not displayed

     

    When analyzing a message you can also check the attachment table for that message and the recipient list. You might have for example a case where the attachment is not displayed in Outlook.

     

    You received a message with attachment in Outlook and this is confirmed by the attachment icon that is displayed next to the message in the reading pane.

     

     

     

    When you open the message you don’t see any attachment.

     

     

     

    In this case one thing you can do is to check the MAPI properties of the message and more specific the attachment table in order to see if you really have an attachment for this message.

     

    a)      Select folder that contains your message (in my case Inbox and the attachment name is Sunset.jpg)

    b)      Select the message that normally has an attachment and right click on it in order to choose the Display Attachment Table option (next to this option you have also the Display Recipient Table if you want to check the recipient list for a message)

     

    c)       A new window will open (Attachments)

    d)      Normally if your message contains an attachment you will see it in the upper pane

     

     

     

     

    e)      For my case, I can see that in fact I have an attachment. The question is: Why we cannot see this attachment when opening the message?

    f)       What you should do next is to select the attachment and check in the lower pane the MAPI properties

    g)      I will next check the following property: PR_ATTACHMENT_HIDDEN. In my case I can see that the value of this MAPI property is: True.

     

     

     

     

    h)      This might explain why I cannot see the attachment in Outlook.

    i)        I will modify change the value of this property to False in order to see if I will be able to solve my problem.

    j)        I will double click on this property and the Property Editor window will appear

     

     

     

     

    k)      I will uncheck the Boolean checkbox and click OK

    l)        Next, in order to save the changes for my message, I will use the Actions menu and click on Save Changes On Message option

    m)    You will see that the value changed to False for the PR_ATTACHMENT_HIDDEN

    n)      Let’s check now in Outlook if we can see correctly the attachment when opening the message. The attachment appears correctly now.

     

     

     

    More information:

    Microsoft Exchange Server MAPI Editor

    http://technet.microsoft.com/en-us/library/bb508857(EXCHG.65).aspx

     

     

    Outlook 2010: Error adding more than 30 calendars in the Calendar module

    $
    0
    0

    Here is a good to know information about the Outlook 2010 Calendar module.

    If you got used to working with more than 30 calendars at the same time, then this blog will definitely help you further.

    I know this limitation was not present under Outlook 2007, so this will help you, if you decided to upgrade to Outlook 2010.

     

    In Outlook 2010, there is a default limit of thirty (30) calendars that can be displayed in the Calendar module at one time. If you try to enable more than 30 calendars, you receive the following error.

     

    “More than 30 calendars cannot be viewed at once.”

     

    To allow more than 30 calendars to be displayed at the same time in the Calendar module, configure the following registry data:

     

    Key: HKCU\Software\Policies\Microsoft\Office\14.0\Outlook\Options\Calendar

    or

    Key: HKCU\Software\Microsoft\Office\14.0\Outlook\Options\Calendar

    DWORD: CalendarMaximumNumber

    Values: 40, 50, 60, 60, 70, 80, 90, or 100 (decimal)

     

    Note: If you use any other value, it is ignored and the default limit of 30 calendars will be enforced.

    Note: If you configure the limit to 40 calendars, for example, and you try to enable 41 calendars in the Calendar module, the error message displayed is updated to include the configured limit.

    In this example, the error will be:

     

    “More than 40 calendars cannot be viewed at once.”

     

    I hope this is useful information for those who need this functionality.

    Usage of the “Do not check e-mail address against address of certificates being used” in Outlook 2010

    $
    0
    0

    If a user sends out an e-mail from his e-mail address (user@contoso.com) and digitally signs the e-mail using a different e-mail address (user@test.contoso.com) --> the receiver will see the signature as trusted. This happens although the signing e-mail address and the sending e-mail address are different.


    The setting “Do not check e-mail address against address of certificates being used” is referring to the sender’s and not the recipient’s machine. This means, that if you enable this option, the Outlook application on the sender’s machine will not check if the signing address is the same as the sender’s address. This, however, does not apply for the recipient of that signed e-mail. The recipient will only check the signing address by default.


    Here is the explanation from the ADM Templates for Outlook 2010:

    “This policy setting controls whether Outlook verifies the user's e-mail address with the address associated with the certificate used for signing.\n \n If you enable this policy setting, users can send messages signed with certificates that do not match their e-mail addresses.\n \n If you disable or do not configure this policy setting, Outlook verifies that the user's e-mail address matches the certificate being used for signing.”

    The behavior on the recipient’s machine is by design. For any incoming signed e-mail, Outlook will check the signing address and not the sender’s address. The check is being performed on the sender’s machine. If the setting is activated, Outlook will not check if the signing e-mail address is the same as the sender’s address.

     

    Further information regarding this feature is provided by the following KB article: http://support.microsoft.com/kb/276597 - How to turn off e-mail matching for certificates in Outlook.

     

    When you export a personal distribution list from Outlook to Excel, the contacts information is not displayed.

    $
    0
    0

    Recently I monitored the behavior when working with DL’s and trying to export them into Excel. Let’s take into account the following scenario:

     

    You are creating a personal distribution list in Outlook (no matter which version) and you add a few contacts in it. The contacts can be local or from the GAL and the number of entries is not important.

    Then click on File – Import and Export  and export the DL to an Excel file. This works and you can store the file locally. However, when you open the Excel sheet you’ll notice that the contacts information is missing. You can, however see the column names (for ex. Name, E-Mail, Telephone number).

     

    If you do the same operation, but for single or multiple contacts outside the DL, the information is visible in the Excel sheet. The explanation for this? Well, it’s simple.

    The entries in the Contacts folder in Outlook are exportable and will take all the properties in the Excel file. However, the entries in a personal DL are not really contacts, but links to those contact entries. Simpler explained, when you export a DL, only the DL properties are being written in the Excel sheet and not the contacts. Therefore, no data regarding e-mails, tel. numbers or addresses will be displayed.

     

    The same happens when you add multiple contacts from the Global Address List into a personal distribution list. The exported data will show no contact info.

     

    Background for this is that the personal DL’s in Outlook where primarily designed for helping users send e-mails to multiple contacts at one time. A simple workaround to the issue presented is to select the desired contacts directly from the Contacts folder in Outlook and export them. This way, the data will be shown in the Excel sheet.

    Viewing all 97 articles
    Browse latest View live


    <script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>