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

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: MaxNumExchange
    • 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.

Mailbox Quota in Outlook 2010 - general information and troubleshooting tips

$
0
0

Mailbox Size and Quota information are two different pieces of information we can get from the “Thermometer” on the Outlook status bar. The quota thermometer provides awareness of the size of your mailbox and how far you are from reaching the limit. 

 

Outlook reads these values from MAPI properties that are exposed by the Exchange store. The following property values exist on the store to communicate quota information (synthesized from policies in AD):

PR_MESSAGE_SIZE_EXTENDED - The current size of the mailbox (when on the mailbox root)

PR_STORAGE_QUOTA_LIMIT - Warning Threshold

PR_PROHIBIT_SEND_QUOTA - The limit where sending mail is prohibited

PR_PROHIBIT_RECEIVE_QUOTA - The limit where receiving mail is prohibited (also the maximum size of the mailbox)

 

These properties are visible and used via an online mode profile. In cached mode, there is a similar set of properties that are mapped to the properties listed above, so they should always reflect the same values.

Specifically: 

PR_QUOTA_WARNING (0x341A0003) corresponds to PR_STORAGE_QUOTA_LIMIT (0x3FF50003)

PR_QUOTA_SEN D (0x341B0003) corresponds to PR_PROHIBIT_SEND_QUOTA (0x666E0003)

PR_QUOTA_RECEIVED (0x341C0003) corresponds to PR_PROHIBIT_RECEIVE_QUOTA (0x666A0003)

PR_MESSAGE_SIZE_EXTENDED (0x0E080014) has the same name but the values are retrieved from the server either directly or via the OST synchronization.

 

(more info on: http://blogs.msdn.com/b/stephen_griffin/archive/2012/04/17/cached-mode-quotas.aspx)

 

The total size is not computed on the fly, but updated when data is added to and deleted from the store. The free space is calculated by taking the maximum mailbox size and subtracting the current mailbox size (PR_PROHIBIT_RECIEVE_QUOTA – PR_MESSAGE_SIZE_EXTENDED).

To display quota information on the Outlook Status Bar, right-click the status bar, and then make sure that the Quota Information item is set to On. You can also view quota information by clicking the File tab of the Outlook ribbon.

 

For quota information to be displayed, your mailbox must be located on Microsoft Exchange Server 2007 or on Microsoft Exchange Server 2010. Additionally, you must have both of the following mailbox or store limits configured:

  • Prohibit send at
  • Prohibit send and receive at

Note : If your mailbox is located on an Exchange 2003 server, Quota Information is not displayed in Outlook 2010. Additionally, the Outlook 2010 release (RTM) version in Cached Exchange Mode does not automatically start the Mailbox Cleanup Wizard when your mailbox is full. A hotfix package that changes the Mailbox Cleanup Wizard behavior is available. After you install this hotfix, when you run Outlook 2010 in Cached Exchange Mode, the Mailbox Cleanup Wizard starts when the mailbox is full:

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

 

When you are over your warning, the Quota Information icon will show up (even if it is not enabled all the time):

 

Then when the user is over the Prohibit Send limit it gets more visible:

 

Then the Quota Information turns red

 

And clicking on that takes you to the File menu where you can see how far you are over your limit and how much you need to delete to be able to send again.

 

 

When can we see the quota thermometer:

The Quota thermometer is not supported on additional mailboxes, such as delegate stores. That doesn't mean we can't have a different quota for that, it’s just that we won't see it in Outlook.

If the quota on an account is unlimited or no quota set, the Thermometer will not be displayed.

 

The thermometer is updated and displays the information for the folder/store currently selected. It always displays account quota information for the current folder selected (except for archive or PST stores, All mail items, SharePoint folders or IMAP accounts).

The Quota Thermometer will work with multiple Exchange accounts. The thermometer will show for whichever account has focus. The same behavior applies to Exchange + another type of account.

 

How are the updates triggered:

Quota updates are not triggered by moving the items to a different store. All triggers are based on time or the UI (like doing a Send/Receive).  There is no UI configuration to tell the user how often we ping the server for a user-initiated update to their mailbox size.

Updates can be triggered either manually by the user or automatically

 

The following user actions will request the server to update the properties :

* Emptying Deleted Items

* Emptying a Folder (via the button in the ribbon’s folder tab or right-click on folder)

* Permanently deleting (shift-delete) an item

* Closing the Archive / AutoArchive dialogs

 

Outlook will also ping the server to update quota information in the status bar if the user is below their warning quota. These updates occur every 30 minutes. There is also an update limit that has been set in order to reduce the server load and help improve performance. In this matter there can be only one update every 3 minutes (by default).However this can be changed by the Admin through custom GPO or logon script (the policy is not available in the standard ADM template):

Path : HKCU\Software\Microsoft\Office\14.0\Outlook\StatusBar

Name : QuotaPollInterval

Type : REG_DWORD

Value : Integer

If this value is set to 0 then the Quota Thermometer will be disabled entirely (we will never request the properties from the sever or generate any additional RPCs).

 

Troubleshooting guidance:

If you encounter problems with the way the quota is displayed, the main recommendation would be to have a support case with Microsoft so that a Support Engineer could assist you, depending on the particular scenario you are seeing.

However here are some things you might want to test and have the information prepared prior to doing this:

  1. Install the latest updates for the Outlook client
  2. Remove any third-party components (or try in safe mode)
  3. One critical aspect is to determine if the issue is occurring in cached mode or online mode? If available, you can also try in OWA.
  4. Check if the problem is occurring for the main mailbox or if you have additional mailboxes added in their profile, multiex or other accounts/stores for which of these stores/accounts the problem is occurring.
  5. Does it happen if you configure an Outlook profile for only one account or if you open the additional mailbox in its own profile?
  6. Get an OffCAT scan and check for any Quota related warnings/errors in the report.
  7. Check if when performing a Send/Receive action the information is correctly updated
  8. Check if after restarting Outlook the issue is still present.
  9. Check if the Antivirus is scanning the OST file and if so, please have it added to the exclusion list
  10. Check if after recreating the profile (or just renaming the ost) the issue still occurs
  11. Check the Sync Issues folder
  12. If you are using an Exchange server, verify if the following properties are set on the server:
  • PR_STORAGE_QUOTA_LIMIT 
  • PR_PROHIBIT_SEND_QUOTA
  • PR_PROHIBIT_RECEIVE_QUOTA

Note: If only one or two of them are set, you need to have all three populated so you can get the accurate information.

 

Potential causes for quota issues in Outlook:

Normally these kind of issues are mostly seen in cache mode and can be caused by (but not limited to):

  1. Poor network or other traffic interruptions (Since the information is requested and received from the server in a low priority task, this can be truncated when something interferes with the client/server connectivity) 
  2. Information not set correctly on the server
  3. Conflicting quotas set on different stores accessed from the same profile
  4. Removing the quotas completely after the mailbox exceeded the previous quota values
  5. OST corruption
  6. 3rd party touching the OST file

 

Known issues and references:

  1. Mailbox Quota Information is not displayed on the Status bar in Outlook http://support.microsoft.com/kb/982997
  2. The Mailbox Cleanup Wizard does not start in Outlook 2010 when the mailbox is full http://support.microsoft.com/kb/2632283/EN-US
  3. Users do not receive quota warning messages after applying SP1 for Exchange 2010 http://support.microsoft.com/kb/2480474

Outlook junk email filtering issue with Exchange Server 2013 and Office 365

$
0
0

Exchange Server 2013 introduces a change that has an adverse effect on the Outlook junk email filter feature. The end result is that messages excluded from junk email evaluation in earlier versions of Exchange Server and in Office 365 pre-upgrade environments are now evaluated and potentially moved to the Junk E-mail folder.

Background

Outlook and Exchange use a MAPI property (PR_CONTENT_FILTER_SCL) to control the behavior of junk email features in Outlook. Specifically, Exchange can set this property to a value that tells Outlook to exclude the message from client side junk email scanning. This property is referred to commonly as the “SCL” for the message.

Outlook limitation with Exchange Server 2013 and Office 365

With Exchange Server 2013 and Office 365, Outlook does not use the SCL value from the Exchange Server.

The following results apply:

  • The MAPI SCL value is ignored, regardless of how it is applied by Exchange
  • Outlook sends all mail originating from an SMTP sender to the junk filter for evaluation
  • The junk email decision is made by the filter
  • If the filter evaluates the email message to be junk, then Outlook moves it to the Junk E-mail folder

Important This does not mean that all email messages always go to the Junk E-mail folder. However, they are not automatically excluded from junk email processing. The junk email filter will still make a decision, and some email messages may appear to work fine, while others go to the Junk E-mail folder. This includes email messages sent from an external trusted domain addresses for which SCL is set to -1 by using an Exchange Transport Rule or the IPAllowList. Also affected is internal email from process servers or custom applications that use SMTP.

Workarounds

  • Add the affected sender addresses to the Safe Senders list. Note that if the address includes an accepted domain within your organization, you need to include the full address rather than only the domain (example: alias@internaldomain.com, not just @internaldomain.com).
     
  • Add a mail-enabled contact in Active Directory for the affected internal address. In some configurations, this will allow the sender address to resolve to a friendly name and deliver the message to the Inbox folder as an internal email message.

  • Lower the level of junk e-mail protection under Junk E-mail Options, or disable the junk filter by selecting No Automatic Filtering in Outlook. 



    While disabling the Outlook junk filter is not a great choice, it ensures important messages are not unexpectedly diverted to the Junk E-mail folder by the Outlook junk filter.

Status and planning

Microsoft is aware of and is currently evaluating this issue for consideration for a fix.  As more information becomes available, it will be posted in the following Knowledge Base article:

2885002 Outlook unexpectedly marks messages as junk even if the SCL level is low

Additional resources

If you are unfamiliar with the application and management of SCL -1 as it relates to Exchange Server 2010 and later versions, please see Tom Kern’s excellent post on the Exchange Team Blog:

Accepted Domains, Safe Senders List and You

Understanding Search Scopes in Microsoft Outlook

$
0
0

Search has become a feature that most Microsoft Outlook users rely on daily. Searching in shared mailboxes within Outlook can yield different results depending on how the Outlook profile is configured. Therefore, it is vital to understand how different configurations affect the Outlook search feature.

First, it is important to know that the Instant Search feature is only available when Outlook is in Cached Exchange Mode. Additionally, the Instant Search feature is dependent on the Windows Desktop Search (WDS) feature of the operating system. The WDS Indexer indexes the mailbox data that has been synchronized to the locally stored Offline Outlook Data (.ost) file. Secondly, if Outlook is in Online Mode, the search feature passes the query to the Microsoft Exchange server, utilizing the index available on the server. Outlook has different ‘search scopes’ that help direct the query against a specific dataset to narrow the results. In some configurations, you are limited to using the Current Folder search scope when searching in a shared mailbox.

If the shared mailbox is added via the Exchange email account’s Advanced tab (using the Open these additional mailboxes option) or via Auto-Mapping, you should be aware of the following limitation when the Outlook Search option is set to the All folders setting (you can view your Search options by clicking on the File tab, clicking Options, and then Search): all search queries are executed against all folders of the primary mailbox. This occurs because the global setting was changed to ‘All folders’. However, searching across multiple mailboxes using the ‘All folders’ scope is not supported. In this scenario, after typing the search criteria to get instant results in Cached Exchange Mode (or pressing Enter in Online Mode), the search scope displayed in the upper left corner of Outlook shows All Mail Items or All Outlook Items selected. This is true even if you initiated the search in a folder of the shared mailbox. The end result is that no items from the shared mailbox are returned. To include the shared mailbox in the scope, you need to manually reselect Current Folder.

Based on your need, the profile may need to be reconfigured using one of several methods. These are detailed below.

Outlook 2010

Shared mailbox configuration

Allowed Search Scopes

Search Provider

Added via Advanced tab with Download
Shared Folders turned on

Current Folder

WDS

Added via Advanced tab with Download
Shared Folders turned off

Current Folder; All Subfolders

Exchange Search

AutoMapped with Download Shared
Folders turned on

Current Folder

WDS

AutoMapped with Download Shared
Folders turned off

Current Folder; All Subfolders;

Exchange Search

Second Exchange account in cached mode

Current Folder; All Subfolders;
All Mail Items; All Outlook Items

WDS

Second Exchange account in online mode

Current folder; All Subfolders;
All Mail Items; All Outlook Items

Exchange Search

In Outlook 2010, the Search options include the following scopes:

Choosing All folders instead of the default of Current folder results in all queries being processed against the primary mailbox, even when you initiate the search from a folder within a shared mailbox. As detailed in the matrix above, the only way to use the All folders scope (All Mail Items or All Outlook Items) for a shared mailbox is to configure that mailbox as a second Exchange account in the Outlook profile.

Outlook 2013

Shared mailbox configuration

Allowed Search Scopes

Search Provider

Added via Advanced tab with Download
Shared Folders turned on

Current Folder

WDS

Added via Advanced tab with Download
Shared Folders turned off

Current Folder; Subfolders;
Current Mailbox

Exchange Search

AutoMapped with Download Shared
Folders turned on

Current Folder

WDS

AutoMapped with Download Shared
Folders turned off

Current Folder; Subfolders;
Current Mailbox

Exchange Search

Second Exchange account in cached mode

Current Folder; Subfolders;
All Outlook Items; Current Mailbox;
All Mailboxes

WDS

Second Exchange account in online mode

Current folder; Subfolders;
All Outlook Items; Current Mailbox;
All Mailboxes

Exchange Search

In Outlook 2013, the Search options include the following scopes:

If the Search options are set to anything other than Current folder, you may need to manually select the Current Folder scope in the Search tab when searching in a shared mailbox. This can be done either before or after you execute the search. If you do not click Current Folder, the search results will be limited to the primary or secondary Exchange accounts in the Outlook profile. No items will be included from shared or AutoMapped mailboxes, or those added by using the Open these additional mailboxes option.

Additional Information

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

Disable Outlook Auto-Mapping with Full Access Mailboxes

Simplifying sending e-mail “As” another mailbox

$
0
0

Microsoft Outlook support has often been asked if it is possible to automatically have the “From” field populated with a shared mailbox owner’s email address.  This question generally comes from a user who is either a Delegate for that mailbox owner (with added permissions) or a user who has “Send As” permissions.

Typically, you would access the Inbox of the shared folder and then click on the New E-mail button in the ribbon.  When the New Message window comes up, the “From” field is populated with the default account owner’s address.

How do you get the “From” field to show up in new e-mail message?  It’s easy, simply create a new e-mail message and then click on Options and then click on the “From” field from within the “Show Fields” group.  Next, close the message without saving. 

 

 

 

The result of this action is that the “From” field will now be exposed on the new e-mail message from now on.

  

 

To send mail “As” another user, you would click on the “From” and then choose the user from the GAL:

 

 

As you continue to use Outlook to send mail As another mailbox owner, the “From” field keeps a Most Recently Used (MRU) list.

 

 

 Now, while that is relatively easy, as mentioned, we are asked if there is another way so that the “From” field doesn’t have to be selected and the name of the user would be automatically chosen.

Well, the answer is yes and no, or, I’ve got good news and bad news.  In the interest of time, I’ll start with the bad news:

Any folder can easily have their default item changed……except the Inbox.

The good news:

You can create a custom form with the mailbox owner’s account as the default and publish it to the Inbox of that account, or even your account. If posted to your account, the beauty of this is that you don’t have to click into the mailbox owner’s Inbox to create the message.  I’ll show you how.

The process of setting this up takes a few minutes and the same form template that you initially create can be saved and used again, with a minor tweak, to create forms for other mailbox owners you are allowed to send mail “As”.  You will see in the end, there may be a change of process for the way you create new messages, but the result, if you have many shared mailboxes that you typically send mail “As”, it’s a much quicker way of sending mail as that mailbox owner.

 

Creating the custom form

 

1. Ensure that the Developer Tab is visible by right clicking on any spot on the ribbon and choosing “Customize the Ribbon” and placing a check mark by “Developer”.

 

 

2. Start a new Mail Message, click on the Developer tab and then choose “Design This Form”.

 

 

3. The Compose page is the default and we need to move some fields down to make room for the “From” field.  So, click on the body to select it.  Now, grab the top sizing handle bar and drag it down so there is enough room to add another Field (the “From” Field). 

 

 

 

4. Now, CTRL+Click all the fields above the Body.  The subject label, the subject box, the CC button, the CC box, the TO button and the To box.

 

 

5. Now, position your mouse pointer to one of the borders of the selected fields and when it changes to the ‘move” pointer, drag down to where there is enough room to add the “From” field at the top.

 

 

6. Click on the Field Chooser in the Tools section to expose the Field Chooser.

 

 

7. In the Frequently-used dropdown, Choose All Mail fields, scroll down the list of fields until you see “From” and then drag and drop “From” above the “To” field on the form.

 

 

8. Once you’ve dropped the “From” Field, make any adjustments necessary to align it with the rest of the fields.  You could add the BCC field as well, just make room for it and drop it in.  You may want to do this now as the BCC field will not be exposed when composing e-mail with a custom form unless you add it to the custom form.

 

 

Adding and Testing the “Send As” address to the form

  

9. Next, right-click on the “From” field (not the “From” button) and choose Properties.

 

 

10. Click on the Value tab and in the Initial Value section, add the alias or Display Name of the shared mailbox owner and then Click OK

 

 

11. In the Form section of the Ribbon, test your customer form by choosing “Run this Form”.  When the new form comes up, the “From” field should be visible with the mailbox owner’s unresolved name.

 

 

 

12. Click on Check Names in the Ribbon to resolve the “From” field.  If it doesn’t resolve, some adjustments may need to be made so check the ‘spelling’.

 

 

13. Close the new form Window and choose No to saving changes

 

Now that you’re back to the Custom Form design page, make your adjustments and test again.  If no adjustments are necessary you can now publish the form in the next step.

 

Publishing the “From” Form

 

14. Click on Publish, Publish Form As.

 

 

15. In the Look in field, choose “Outlook Folders” then Click on the Browse button and navigate to the appropriate Mailbox, choose that Inbox (this could be your Inbox, or even the Inbox of the mailbox owner for whom you have “Send As” permissions) and then click OK.  For Display Name, type in “From <username>” and then click on the Publish button

 

 

16. Repeat Steps 09 - 15, changing the “From” Field Value to an appropriate name and Publishing to the appropriate Inbox.

 

Once finished, save the form as a template in case you need to use it again by clicking on File, Save As, and save it as a .oft (Outlook Template).

 

“Send As” without leaving home (Inbox)

 

Now, if you’ve published all the forms to your Inbox, you don’t even have to leave your own Inbox when sending Mail “As”, simply click on New Items, Custom Forms and your forms will be accessible:

 

 

Or if you have multiple forms:

 

And that’s it!

 

Do you know of an easier way of doing this?  Let us hear “From” you! :)

Improved Outlook 2013 Scheduling Assistant functionality when forwarding meetings

$
0
0

Starting with Outlook 2013, forwarding a meeting has a different effect on the existing meeting in the organizer and attendee’s calendars. If you are a meeting attendee that frequently forwards meetings to other users, then you will want to know about a particular Outlook 2013 enhancement.

Outlook 2007 and Outlook 2010 behavior

Let’s start with the behavior in previous versions of Outlook. If you used Outlook 2007 and Outlook 2010 to forward a meeting, the additional recipient was immediately reflected not only in your Scheduling Assistant, but also in the Scheduling Assistant of both the new attendee and the organizer.

Here are some screenshots to help you visualize the behavior. User A uses Outlook 2010 to organize a meeting and invites User B:

User B opens the meeting invitation and sees this in her Scheduling Assistant view:

 

User B accepts the meeting invitation, but also decides her colleague might want to attend, so she forwards the meeting to User C. Once forwarded, User B’s Scheduling Assistant now shows User C as an attendee:

 

Additionally, User C now shows as an optional attendee on the organizer’s Scheduling Assistant:

 

This behavior allows User B to see User C as an attendee within the Scheduling Assistant. However, it gives User B a potentially incorrect view of who is attending the meeting. Continuing with the above example, let us say User C decides to decline the meeting request. Since User B is not the organizer, she will not receive a meeting notification indicating User C declined the meeting. She is also unable to use the Meeting Tracking feature to see who accepted or declined the meeting. Hence, User B may use the Scheduling Assistant to attempt to identify the meeting attendees. In this scenario, it can look to User B as if User C may attend the meeting, since User C is listed under the “All Attendees” list:

 

Enhanced Outlook 2013 behavior

The above scenario can give User B an unrealistic view of who will attend the meeting. Because of that, this behavior is improved starting with Outlook 2013. In Outlook 2013, the forwarder’s view of the Scheduling Assistant is not automatically updated after forwarding the meeting. In order for the forwarder’s view of the Scheduling Assistant to update, the meeting organizer must send a meeting update to all attendees. Only after the organizer’s update is sent does the forwarder’s view of the Scheduling Assistant reflect the updated list of attendees.

To show this functionality change, let us use the same example as before. User A invites User B to a meeting:

User B opens the meeting invitation and sees this in her Scheduling Assistant view:

User B accepts the meeting invitation, but also decides that her colleague might want to attend, so she forwards the meeting to User C. Once forwarded, User C is added as an optional attendee to the meeting organizer’s (User A’s) Scheduling Assistant:

 

However, the main difference here is that User B’s Scheduling Assistant is not automatically updated:

 

During this process, User A (the meeting organizer) receives a meeting forward notification:

Later, when User C processes the meeting, the meeting response (ex. Accept, Decline, or Tentative) is received by the organizer. In this example, User C accepted the meeting:

 

If User A wants to ensure everyone sees an updated view of the attendees, User A must simply open the meeting and click the “Send Update” button to send the update to all attendees:

 

After sending the update, User B’s view of the Scheduling Assistant is updated to reflect User C as an attendee:

 

As you can see, Outlook 2013 meeting forwarding behavior is intentionally different to ensure that any attendee who forwards a meeting does not mistake who is and is not attending the meeting.

Do you want to create an LDAP Address Book in order to distribute your Certificate Information? Here is a quick way to get this done!

$
0
0

            Consider the scenario where you, as Wingtiptoys, acquire an existing Contoso. Contoso has a client portfolio with which she has encrypted communication. In order to be able to use the encryption certificates to communicate with the Clients of Contoso you need to find a way to access the Certificate Information of the Clients.

            There are a couple of ways by which this can be achieved, one of them being the creation of an LDAP Address Book in your Organization’s Active Directory. Below you find the steps in order to set this up and get it working.

 

Note1: You need to have an Encryption Certificate issued for your User and configured in your Outlook 2013 Client in order to be able to send an encrypted email to the LDAP contact 

 

Note2: You can add the LDAP Contact to your Outlook Contacts Folder; however you need to update the contact from your Outlook Contacts Folder when the Certificate Information expires. We recommend to use the LDAP Contact directly in order to be sure the most recent and valid Certificate Information is being used for Email Encryption.

1. In your Active Directory Server open the Active Directory Users and Computers Window, right click your Domain and create a New Organizational Unit. I will name mine NewLDAPAddressBook.

 2. In the New Organizational Unit move the Contacts from the Address Book of Contoso 

 

So until now we have created a location that is accessible throughout the Organization of Wingtiptoys and Contoso.  Now we need to open the new Address List from the Outlook Client side in order to use the Contacts of Contoso.

 

3. From the Outlook Client, in this case Outlook 2013, go to the Outlook File – Info – Account Settings – Account Settings, Select the Address Books Tab and click New

4. In the Add Account Window select the Option Internet Directory Service (LDAP) and click Next

5. Enter the Server Name where the LDAP Address Book is being stored  

6. Check the This server requires me to log on checkbox and enter your Domain Credentials

 

7. Click on the More Settings Options and configure the following:

 

Note:

Characteristics of a Global Catalog Search

The following characteristics differentiate a Global Catalog search from a standard LDAP search:

  • Global Catalog queries are directed to port 3268, which explicitly indicates that Global Catalog semantics are required. By default, ordinary LDAP searches are received through port 389. If you bind to port 389, even if you bind to a Global Catalog server, your search includes a single domain directory partition. If you bind to port 3268, your search includes all directory partitions in the forest. If the server you attempt to bind to over port 3268 is not a Global Catalog server, the server refuses the bind.

  • Global Catalog searches can specify a non-instantiated search base, indicated as "com" or " " (blank search base).

  • Global Catalog searches cross directory partition boundaries. The extent of the LDAP search is the directory partition.

Global Catalog searches do not return subordinate referrals. If you use port 3268 to request an attribute that is not in the Global Catalog, you do not receive a referral to it. Subordinate referrals are an LDAP response; when you query over port 3268, you receive Global Catalog responses, which are based solely on the contents of the Global Catalog. If you query the same server by using port 389, you receive referrals for objects that are in the forest but whose attributes are not referenced in the Global Catalog.

 

          a. In the Connection Tab enter the Display Name of the LDAP Address Book, as you want it to be displayed in the Address Book menu, and leave the default Port 389 set  (see additional reading section for more Details)

             

          b. In the Search Tab in the Search Base Section enter the Custom Field enter the distinguished name of the Domain Controller Organizational Unit as displayed in ADSIEdit.

              

Also enable the Browsing within the LDAP Address book so that when selected all Items of the LDAP Address Book are visible

 

             

8. Click Finish in order to complete the Account Changes performed in the Address Book Section

Note: The Server Name you can find in the Active Directory Users and Computers top left corner

           

9. Restart Outlook 2013, go to the Address Book from the Ribbon and select the new LDAP Address Book visible in the Address Book pull down menu.

   

10. Select the LDAP Address Book and choose a contact you want to send an email to

Additional reading:

 

Add or remove an address book

https://support.office.com/en-au/article/Add-or-remove-an-address-book-fd067150-ba37-42a4-b88e-5b15f3dba4e6

 

Understanding S/MIME

https://technet.microsoft.com/library/aa995740(v=exchg.65).aspx

 

Outlook S/MIME certificate selection

http://blogs.technet.com/b/pki/archive/2008/12/17/outlook-s-mime-certificate-selection.aspx

 

Publish S/MIME certificates for external contacts to Active Directory for use with Exchange Server 2007

http://blogs.technet.com/b/exchange/archive/2008/04/23/3405402.aspx

 

Plan for e-mail messaging cryptography in Outlook 2010

https://technet.microsoft.com/en-gb/library/cc179061(v=office.15).aspx


Client-side vs. Server-side Rules

$
0
0

What are rules in Outlook and how can they help you manage your email? Simply put, rules are conditions set upon incoming and outgoing messages. When one or more of these conditions are met, Outlook takes an action that you specify. You can create rules from a template, from a message or by using your own custom conditions. There are two types of rules that Outlook uses: Client- rules and server rules. These rules perform very differently. Rules that have actions that require Outlook are client-side rules and only run if Outlook is running. Rules that do not require Outlook to process are considered server-side rules. Let’s look at the two rule types more in-depth.

Client Rules

The most important thing to know about a client-side rule is that Outlook must be running in order for the rule to work. If Outlook is not running, a client-side rule cannot be processed. Client rules also will not run unless the same user who created the rule logs into Outlook.

Creating rules in Outlook is simple. In Outlook, click the File tab and then click the Manage Rules and Alerts button. By default, the Email Rules tab is selected. To create the rule, click New Rule. This will launch the Rules Wizard.

In the Rules Wizard you can select from a set of pre-designed templates or use a blank rule to handle messages the way you want them handled.

Some examples of a client rule include the following:

  • Moving mail from a company such as Fabrikam.com to a folder called ‘Fabrikam’

  • Moving specific messages to a PST file

  • Play a specific sound when mail from your uncle Jim arrives

It’s also important to note that when it comes to client rules and server rules, the Exchange Server will look at incoming messages and apply its rules first if applicable. Afterward, client rules are applied when Outlook is running. Also, if a server rules moves a message when Outlook is not running, a client rule that exists in Outlook and that applies to the message may not run. This is known as a rule conflict and is discussed more later. Also, if a mailbox exceeds its size limit, rules that send replies or forward items will not run.

Rules created on the client are stored in a Filename.RWZ file where Filename is the name of the user that created the rule. You can also check which rules are client rules by clicking the Rules button under the Move section of the Home menu on the Ribbon. Then click Manage Rules and Alerts. Any rules that run on the client with have “(client –only)” appended to the end of the rule.

Tip

When you create a rule you are given the option to run the rules for all emails in your inbox. If you missed this checkbox, you can always go back and run the rules anytime. Go to the Manage Rules and Alerts dialog and select Run Rules Now.

Server Rules

Server rules are handled entirely by the Exchange Server and are applied to messages that arrive in your inbox even when Outlook isn’t running. Server rules handle rule operations that don’t require the Outlook client. Server rules are created two ways – by using Outlook Web Access (OWA) or by using Outlook. Rules created in OWA are always saved as server-side rules.

Some examples of a server rule include:

  • Changing the importance of a message

  • Moving the incoming message to a specific folder on the user’s mailbox

  • Deleting a message

To create a rule using OWA, go to the navigation pane and click Rules and in the Rules area toolbar, click New. This will open the Edit Rule dialog box. You can also right click any email message in OWA and left click Create Rule.

To create a server rule in Outlook, select an email you have already received. Click the Home tab in the ribbon if it is not already selected. In the Move group select Rules then Create Rule.

Rule Conflicts

Rules conflicts happen when you have more than one rule that will affect an incoming message. Let’s say, for example, you receive an incoming email from “John Doe” and the subject line is “Widget report for last week”. Let’s say you have two rules set – one that looks for mail from John Doe that forwards the mail to a subfolder in your inbox called “John Doe” and another rule that’s set to look for they keyword “Widgets” in the subject of a message.

If these are both client-side rules, the rule listed first in the rules list will take precedence. The mail from John Doe will end up in the John Doe subfolder and not the Widgets folder. If new mail was received from “Jane Doe” with ‘Widgets’ in the subject then the item would be moved to the Widgets subfolder since the criteria for the first rule was not met.

Let’s say that you have a client-only rule set to look for the word “Widgets” in the subject line and a server-side rule set to look for mail from “John Doe” and move it to the “John Doe” folder. Let’s also say Outlook is not running. When the mail is received, Exchange processed the server rule for “John Doe” and moves it to the “John Doe” folder. When you launch Outlook, the rules are applied, but because the new mail is not in the inbox, the “Widgets” rule is not processed and the email remains in the “John Doe” folder.

 

For more information on server and client rules on the Mac for Office 2011, see the following blog post.

Special thanks to Will Buffington and Melissa Shellito

Outlook initial OST Deployment

$
0
0

Providing an initial OST file for an Outlook Cached Exchange Mode deployment

OutlookCached Exchange Mode allows you to smoothly work online and offline with the Mailbox Information, hence allowing you to access mail, calendar, address book, and other Outlook information by using a local cache file, the Offline Folder (OST) file.

It is best to allow Microsoft Office Outlook 2013 to create the initial cache files (including the OST file), but it can be a slow process if users have large mailboxes and slow network connections.

With Outlook 2013 the option of using the Sync Slider control might come in handy in order have only part of your Mailbox Information available locally such as the last 12 Months of Email Information.

 

Another way to avoid delays in accessing the full Mailbox Information offline is to bring the user's computer to a location that has a fast Internet connection and enable Cached Exchange Mode at that time.

Should that not be possible, the creation of an initial OST file and sending it to the remote user (for example, by copying the file to a CD or Flash Drive) is a valid option.

This article provides step-by-step procedures for creating an initial OST file, and then configuring Outlook on the user's computer to use the file when Cached Exchange Mode is enabled. It is important that you follow the procedures for creating and using the initial OST file exactly.

   Note   For information about configuring and deploying Cached Exchange Mode, see Plan a Cached Exchange Mode deployment in Outlook 2013.

Use the following procedure to create—as the administrator on a local computer—an up-to-date initial OST file for a specific Outlook 2013 user.

To create an initial OST file

    1. Log on as administrator at a workstation with Outlook 2013 installed. The administrator account must have permission to open the mailbox of the user for whom you plan to create the initial OST file. In most cases the fastest way is by providing Full Access Permissions to the user’s Mailbox using the Exchange Control Panel.

  

  

    1. Delete all Outlook profiles. In Control Panel, click the Mail icon, and then click Show Profiles to view the list of configured profiles for Outlook.

          

    1. Also, delete any files in the default folder location of the user for Outlook OST files.

   Note   Should you not be able to see the AppData Folder from the Explorer menu go to Organize – Folder and search options and from the Folder Options Window under the View Tab select the Option to Show hidden files, folders and drives

             

By default, Outlook OST files are located in the following folder:

Windows 8

drive:\Users\<username>\AppData\Local\Microsoft\Outlook

or

drive:\Users\<username>\Roaming\Local\Microsoft\Outlook

 

Windows 7 / Windows Vista

drive:\Users\<username>\Documents\Outlook Files

 

    1. Create a new Outlook profile (for the user you are creating the initial OST file for). By Default the cached Exchange mode setting is enabled and the Sync Slider set to the default value of 12 months.

  

 

    1. After the new profile is created, start Outlook and wait for the mailbox to be completely synchronized between the client and the Exchange server. The status bar displays the synchronization status and reads All Folders Are Up to Date when the synchronization is complete.

    1. Exit Outlook. Then copy the OST file from the Admin Appdata folder and place it in the User AppData Folder, where the file can be accessed by the user:

Windows 8

drive:\Users\<username>\AppData\Local\Microsoft\Outlook

or

drive:\Users\<username>\Roaming\Local\Microsoft\Outlook

 

Windows 7 / Windows Vista

drive:\Users\<username>\Documents\Outlook Files

 

Now that you've created the initial file you can copy it any computer where the user logs on in order to configure his Outlook profile.


 

To use the initial OST file on the remote user's computer

    1. Log on to the user's computer as the user (not as administrator).

   Note   If you have more than one computer on which you want to use the same user’s OST file, you must create separate OST files for each computer. This is because each OST file is a unique replica of the mailbox and maintains a synchronization state that is unique to that file. 

    1. Copy the OST File you created in the previous procedure to the proper Outlook folder on the user's computer. For example, if the user's profile uses the default location for Outlook files, copy the files to the following folder:

Windows 8

drive:\Users\<username>\AppData\Local\Microsoft\Outlook

or

drive:\Users\<username>\Roaming\Local\Microsoft\Outlook

 

Windows 7 / Windows Vista

drive:\Users\<username>\Documents\Outlook Files

    1. Create an Outlook profile for the user. For step-by-step instructions on creating a new profile, see How to create and set up an e-mail account in Outlook. The Use Cached Exchange Mode is enabled by default for the new profile.

   Note   DO NOT Start Outlook in order to create the new Outlook Profile. Create the new profile from the Control Panel – Mail – Show Profiles Window

 

 

    1. Next, verify that the Outlook OST files are in the correct location.

    • In Control Panel, click Mail, and then click E-mail Accounts.

      • Click View or change existing e-mail accounts.

        • Click Change, and then click More Settings.

          • On the Advanced tab, click Offline Folder File Settings.

            • Verify that the name and path of the OST file shown in File: match the name and path of the OST file you copied from the computer on which you were logged on as administrator.

              • The only way you can change the OST file is on the initial profile creation, before finishing the wizard, by selecting Change account settings

                                 

               

                1. Start Outlook, using the newly created profile. Be sure to log on when a network connection is available. When Outlook starts with the new OST file, a connection to the Exchange server is required to validate that the user is authorized to use the OST file.

              The remote user's computer is now configured to use Outlook 2013 with Cached Exchange Mode, starting with the initial OST file you provided as the basis for a synchronized mailbox.

               

              Outlook and Outlook for Mac updates & build numbers

              $
              0
              0

              Have you ever looked at your Outlook or Outlook for Mac build number and wanted to know when that build was released or what KB article corresponds with it? Maybe you wanted to know how many updates have been released since then and what those later updates contain.

              Previously, it may have taken a lot of time to find this information, and perhaps you would not have been able to find it at all. Now there is a TechNet Wiki page that lists this information in one central location:

              Outlook and Outlook for Mac Update Build Numbers


              This Wiki page lists the build information for Outlook for Windows 2013, 2010, 2007 & 2003, and Outlook for Mac 2016 & 2011. You will find the date the update was released, the build number, and a link to the corresponding KB article. This Wiki will be updated when new updates are released (typically within a few days of the release), so it's a good way to monitor for updates of multiple versions of Outlook.

              In addition to the build number information, a link to the Microsoft Support Lifecycle page is included after each version, so you can easily click the link to find the product support information for that version of the product.

              Understanding Task Start & Due Date Behavior in Outlook

              $
              0
              0

              A common process when managing Tasks in Outlook is to set the Start Dates & Due Dates, and change these dates when needed.  The logic in Outlook does not allow you to set a Due Date to a date before the Start Date or set the Start Date to a date after the Due Date.  This blog post will describe the results you can expect for various scenarios when you change the Start and Due Dates of a Task.

               

              Scenario #1. You change the Due Date of a task before the Start Date.

              Result:

              Outlook for Mac 2011 & Outlook 2016 for Mac – The Start Date is automatically moved to be the same as the Due Date.
              Outlook 2010 & 2013 – You receive an error “The due date of a task cannot occur before its start date.”

              Examples:

              Windows Outlook 2013 or 2010:

              The Tasks Start Date is April 1 and the Due Date is April 5. 
              You try to change the Due Date to March 30.
              You receive this error message.


              Outlook 2016 for Mac or Outlook for Mac 2011:

              The Tasks Start Date is April 1 and the Due Date is April 5. 
              You change the Due Date to March 30. The Start Date changes to March 30 automatically.

               

               

              Scenario #2: You change the Start Date of a Task that also has a Due Date set.

              Result:

              All Outlook versions: The Due Date automatically changes preserving the duration of the task.

              Example:

              You have a task that starts on April 1 and is due on April 5. 
              You then change the start date to April 3, and the Due Date automatically changes to April 7.





              Scenario #3: The Start Date of a task is initially set to None with a Due Date set, and then you set the Start Date to a date later than the Due Date.

              Result:

              All versions of Outlook: The Due Date will change to the same date as the new Start Date that was set.

              Example:

              The Task Start Date is set to None, and the Due Date is set to April 5.
              You set the Start Date to April 10
              The Due Date is automatically changed to April 10.

              What happens when clicking on the "More" tab in Outlook 2013 when searching emails

              $
              0
              0

              When searching for emails in Outlook 2013 using Instant Search the returned results may be limited. By default, 12 months of your email is available offline, but you can control how much mail is kept offline. In order to improve performance of the Instant Search feature in Outlook, by default the search results list is limited to the most recent 250 items that match your search query in Outlook 2013. Below the search results you will see Showing recent results… followed by More.



              When clicking on the More tab the search query switches to using Exchange Search and no longer uses the local search. There is a 250 cap limit set on the Exchange Search side so the search results will be limited to 250 items even though there may be more items on the server related to the query. This cap is set at the Exchange side for performance reasons.

              If you have an OnlineArchivemailbox attached to your Outlook 2013 profile the search queries are performed by the Exchange Server. Outlook doesn't create a local copy of the archive mailbox on a user's computer, even if it's configured to use Cached Exchange Mode. Users can access an archive mailbox in Online mode only. You can tell the mailbox is in Online mode by viewing the Status Bar at the bottom of Outlook.

              Viewing all 97 articles
              Browse latest View live


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