Le Café Central de
Deva             


                    ... Deva blogs!!



  • Le Café Central de DeVa

    Monitoring Event Sink # 8 - Register a store event sink using Regevent.vbs on Exchange

    • 2 Comments

    Step-by-step guide on how to register store event sinks

    Per KB, Before you use regevent.vbs to register the event sink VB script, you need to register a new COM+ application on the Exchange server to properly execute script-based store events. Please follow the steps below:

    1. To start the Component Services console, click Start, select Programs, Administrative Tools, and Component Services.
    2. In the Component Services snap-in, expand the list in the following order: Component Services, Computers, and My Computer.
    3. Right-click COM+ Applications in the left pane, and select New and Application.
    4. Click Next and then choose the "Create An Empty Application" button.
    5. Enter ScriptEventSink as the name for the new application.
    6. Confirm that the Server Application radio button is selected and click Next.
    7. Click Next and click Finish.
    8. Select a user that will have owner permissions for the application you are creating, or choose the current user by selecting "Interactive User - The Current Logged On User" radio button.

    Note If you choose Interactive User, make sure the account that you are currently logged on with has one of the following permissions:
    Explicit "Full mailbox access" right on the mailbox you plan to publish the sink to
    Explicit Allow for the "Receive As" right on the mailbox store
    9. Open the newly created COM+ Application you just created, right-click on the Components subfolder, and choose New and, then, select Component.
    10. Click Next, then choose Install New Component(s).
    11. Browse the file system and select \Exchsrvr\Bin\exodbesh.dll. Click Next and Finish.
    After registering the new COM+ application, you need to write the event sink VB script file. Here is a sample event sink that does nothing but log its' existence:
    <SCRIPT LANGUAGE="VBScript">
    
    Option Explicit
    
    Public Sub ExStoreEvents_OnSave(pEventInfo, bstrURLItem, lFlags)
    
      LogFile "ExStoreEvents_OnSave"
    
    End Sub
    
    public Sub ExStoreEvents_OnDelete(pEventInfo, bstrURLItem, lFlags)
    
       LogFile "ExStoreEvents_OnDelete"
    
    End Sub
    
    Public Sub ExStoreEvents_OnSyncSave(pEventInfo, bstrURLItem, lFlags)
    
      LogFile "ExStoreEvents_OnSyncSave"
    
    End Sub
    
    Public Sub ExStoreEvents_OnSyncDelete(pEventInfo, bstrURLItem, lFlags)
    
       LogFile "ExStoreEvents_OnSyncDelete"
    
    End Sub
    
    public Sub LogFile(MyString)
    
       Dim fso
    
       Dim txtfile
    
       Set fso = CreateObject("Scripting.FileSystemObject")
    
       Set txtfile = fso.OpenTextFile("c:\LogFile.log", 8, True)
    
       txtfile.WriteLine (MyString)
    
       txtfile.Close
    
    End Sub
    
    </SCRIPT>
    
    
    We assume that the sink is now saved in the testscript.vbs., you can now register this event sink VB script using the following steps:
    1. Click Start, select Run, and type "cmd" (without the quotation marks) to enter the command prompt.
    2. Change the directory to \Exchsrvr\Bin and type the following 2 commands:

    regsvr32 exodbesh.dll
    regsvr32 exodbprx.dll
    3. Copy the regevent.vbs (located in the \Program Files\Exchange SDK\SDK\Support\OLEDB\Scripts directory.) and the event sink VB script files onto the root of the C drive.
    4.

    Start the command prompt, and change to the directory of C:\. Type the command to run the regevent.vbs. The following command is one example:

    cscript regevent.vbs add "onsave;ondelete" ExOleDB.ScriptEventSink.1 "file://./backofficestorage/contoso.com/MBX/smith/inbox/testsink" -m deep -file "c:\testscript.vbs"

    Note:

    • This command is used to register the event sink VB script named testscript.vbs in the Inbox of the mailbox named smith.
    • In the command above, you replace contoso.com with the default domain name referenced on the "Local path" field in the Virtual Directory tab of the Exchange virtual directory properties in the Internet Information Services snap-in.
  • Le Café Central de DeVa

    Monitoring Event sink # 7 - Register an Exchange Store Event Script File Using WebDAV in Visual Basic 6.0

    • 2 Comments

    I found this wonderful link, which discuss about how we can register an Exchange Store Event Sink using WebDAV in Visual Basic 6.0

    Please find the WebDavRegEvent sample shows how to register a Store Event Sink using Web Distributed Authoring and Versioning (WebDAV) in Microsoft Visual Basic 6.0.

    • The code uses XML technology to compose and send the WebDAV request to the Exchange Server.
    • The sample does not contain an executable and will require Microsoft Visual Basic 6.0 and Microsoft XML 2.0 or later on the computer in order to view and build the project.
    • The sample shows how to register a simple event sink.
    • It does not explore all areas of creating a registration item for an Exchange event sink.
  • Le Café Central de DeVa

    Status Code (422) unprocessable Entity using WebDAV/EXOLEDB Error

    • 1 Comments

    I came across a tricky situation.

    One of the customer got the (422) Unprocessable Entity using WebDAV Error, when he tries to access Exchange Server 2007 for the query "SELECT “DAV:displayname” FROM “Inbox”  WHERE CONTAINS(*, '"Mike"')"...he is referring that "Use an asterisk (*) to include all properties marked for full-text indexing".

    The request for working fine for Exchange Server 2003, but its not working on Exchange Server 2007. Found full-text indexing is enabled.

    Requests without CONTAINS predicate work fine on Exchange 2007. He wondered what is wrong with the request?

    The issue was quite confuseing...during research i found the update from Glen from one of our MSDN forum...(View the thread)

    "...the Search service was rewritten in 2007 to use MSSearch v3  as WebDAV and Exoledb have been demphasised on 2007 I have a feeling that they these API's where not ported for the new search service. Either that or its a bug i can't make simple searches using WebDAV or Exoledb work."

    FYI...

    Status Code 422 (Unprocessable Entity) - Non-zero depth was specified for a check-out lock, or the Depth Header was omitted

  • Le Café Central de DeVa

    Exchange Hosting Services - Exchange Hosted Archive

    • 3 Comments

    Microsoft Exchange Hosting Services - Exchange Hosted Archive

    Recent News: Microsoft recently acquired Frontbridge. Currently it was announced that Microsoft Exchange Hosted Services will now take the front line for hosted services including compliancy, data rentention, encryption, confidentiality etc.

    What is it for: Exchange Hosted Archive is an advanced message archiving system for e-mail and instant messages.

     Microsoft Exchange Hosting Services

    For more information: The hosted archive should be particularly interesting because of its powerful capabilities. Click here to read more information

  • Le Café Central de DeVa

    Deleting objects using WebDAV and C#.Net in Exchange Server

    • 2 Comments

    Code snippet to delete objects using WebDAV and C#.Net in Exchange Server Environment

     

                   // TODO: Replace with the URL of an object in Exchange 2000.
                    string sUri = "http://ExchServer/Exchange/Administrator/Inbox/NewApptFolder";

                    System.Uri myUri = new System.Uri(sUri);
                    HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(myUri);

                    // Set the credentials.
                    // TODO: Replace with the appropriate user credential.
                    NetworkCredential myCred = new NetworkCredential(@"DomainName\UserName", "UserPassword");
                    CredentialCache myCredentialCache = new CredentialCache();
                    myCredentialCache.Add(myUri, "Basic", myCred);
                    HttpWRequest.Credentials = myCredentialCache;

                    // Set the headers.
                    HttpWRequest.KeepAlive = false;
                    HttpWRequest.Headers.Set("Pragma", "no-cache");

                    //Set the request timeout to 5 minutes.
                    HttpWRequest.Timeout = 300000;
                    // set the request method
                    HttpWRequest.Method = "DELETE";

                    // Send the request and get the response.
                    HttpWebResponse HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();

                    // Get the Status code.
                    int iStatCode =  (int)HttpWResponse.StatusCode;
                    string sStatus = iStatCode.ToString();
                    Console.WriteLine("Status Code: {0}", sStatus);
                    // Get the request headers
                    string sReqHeaders = HttpWRequest.Headers.ToString();
                    Console.WriteLine(sReqHeaders);

                    // Read the response stream.
                    Stream strm = HttpWResponse.GetResponseStream();
                    StreamReader sr = new StreamReader(strm);
                    string sText = sr.ReadToEnd();
                    Console.WriteLine("Response: {0}", sText);

                    // Close the stream.

                    strm.Close();

     

    Note: This code snippet uses the HttpWebRequest class and the HttpWebResponse class in the "System.Net" namespace to delete objects.

  • Le Café Central de DeVa

    Creating Outlook Calendar Folder using WebDAV &amp; C#.Net

    • 1 Comments

    Code snippet to create Outlook Calendar Folder using WebDAV & C#.Net

    // TODO: Replace with the URL of an object on Exchange Server
            string sUri = "http://ExchServer/Exchange/Administrator/Inbox/NewApptFolder";
     
            System.Uri myUri = new System.Uri(sUri);
            HttpWebRequest HttpWRequest = (HttpWebRequest)WebRequest.Create(myUri);

            string sQuery;
            sQuery = "<?xml version='1.0'?>" +
              "<a:propertyupdate xmlns:a='DAV:' " +
              "xmlns:ex='http://schemas.microsoft.com/exchange/'>" +
              "<a:set><a:prop>" +
              "<ex:outlookfolderclass>IPF.Appointment</ex:outlookfolderclass>" +
              "</a:prop></a:set>" +
              "</a:propertyupdate>";

            // Set Credentials
            // TODO: Replace with appropriate user credentials

            NetworkCredential myCred = new NetworkCredential(@"DomainName\UserName", "UserPassword");
            CredentialCache myCredentialCache = new CredentialCache();
            myCredentialCache.Add(myUri, "Basic", myCred);
            HttpWRequest.Credentials = myCredentialCache;

            // Set Headers
            HttpWRequest.KeepAlive = false;
            HttpWRequest.Headers.Set("Pragma", "no-cache");
            HttpWRequest.ContentType =  "text/xml";
            HttpWRequest.ContentLength = sQuery.Length;

            //Set the request timeout to 5 minutes
            HttpWRequest.Timeout = 300000;
            // Set the request method
            HttpWRequest.Method = "MKCOL";

            // Store the data in a byte array
            byte[] ByteQuery = System.Text.Encoding.ASCII.GetBytes(sQuery);
            HttpWRequest.ContentLength = ByteQuery.Length;
            Stream QueryStream = HttpWRequest.GetRequestStream();
            // Write the data to be posted to the Request Stream
            QueryStream.Write(ByteQuery,0,ByteQuery.Length);
            QueryStream.Close();

            // Send Request and Get Response
            HttpWebResponse HttpWResponse = (HttpWebResponse)HttpWRequest.GetResponse();

            // Get the Status code
            int iStatCode =  (int)HttpWResponse.StatusCode;
            string sStatus = iStatCode.ToString();
            Console.WriteLine("Status Code: {0}", sStatus);
            // Get the request headers
            string sReqHeaders = HttpWRequest.Headers.ToString();
            Console.WriteLine(sReqHeaders);

            // Read the Response Steam
            Stream strm = HttpWResponse.GetResponseStream();
            StreamReader sr = new StreamReader(strm);
            string sText = sr.ReadToEnd();
            Console.WriteLine("Response: {0}", sText);

            // Close Stream
            strm.Close();

            // Clean Up
            myCred = null;
            myCredentialCache = null;
            HttpWRequest = null;
            HttpWResponse = null;
            QueryStream = null;
            strm = null;
            sr = null;
         

    Note: This code snippet shows how to use WebDAV to create a Microsoft Outlook Calendar folder.

    • It initially sets the method of the HttpWebRequest class to "MKCOL"
    • Then sends the request with the user credentials to the Exchange server.
    • It uses the HttpWebResponse method to receive the response.

    The HttpWebRequest and the HttpWebResponse methods are available in the System.Net namespace

  • Le Café Central de DeVa

    WebDAV Status Codes

    • 0 Comments

    Important WebDAV status codes:

    Please find the important WebDAV Status Codes:

    Status Code Meaning

    201 (Created)

    The collection was created.

    401 (Access Denied)

    Resource requires authorization or authorization was denied.

    403 (Forbidden)

    The server does not allow collections to be created at the specified location, or the parent collection of the specified request URI exists but cannot accept members.

    405 (Method Not Allowed)

    The MKCOL method can only be performed on a deleted or non-existent resource.

    409 (Conflict)

    A resource cannot be created at the destination URI until one or more intermediate collections are created.

    415 (Unsupported Media Type)

    The request type of the body is not supported by the server.

    507 (Insufficient Storage)

    The destination resource does not have sufficient storage space

    Complete list of  WebDAV Status Codes available:

    Please find the list of status codes returned by the Exchange 2000 Server WebDAV protocol service. Along with each status code or group of codes are the names of associated HTTP methods and a description of each status code.

  • Le Café Central de DeVa

    MAPI Architecture

    • 4 Comments

    MAPI Architecture 

    MAPI is a messaging architecture that enables multiple applications to interact with multiple messaging systems seamlessly across a variety of hardware platforms.

    MAPI Objects and General Architecture

    All of the objects defined by MAPI fall into one or more layers in the MAPI architecture.

    • The client interface layer is made up of all the objects that a client application, form viewer, or form server can implement.
    • The service provider interface layer contains the objects that a service provider of any type can implement.
    • This layer includes objects implemented by address book, message store, transport, form library, and messaging hook providers.
    • The layer that represents the MAPI subsystem is positioned between the client and service provider interface layers.
    • The MAPI layer contains all of the objects that MAPI implements for clients or service providers to use 

    The following article shows where each of the MAPI objects fits into the MAPI architecture. The objects are represented with the names of their derived interfaces.

    In general,

    • MAPI is made up of a set of common application programming interfaces and a dynamic-link library (DLL) component.
    • The interfaces are used to create and access diverse messaging applications and messaging systems, offering a uniform environment for development and use and providing true independence for both.  
    • The DLL contains the MAPI subsystem, which manages the interaction between front-end messaging applications and back-end messaging systems and provides a common user interface for frequent tasks.
    • The MAPI subsystem acts as a central clearing house to unify the various messaging systems and shield clients from their differences.

    MAPI Subsystem 

    The MAPI subsystem is made up of the MAPI spooler, a common user interface, and the programming interfaces. The MAPI spooler is a separate process responsible for sending messages to and receiving messages from a messaging system. The common user interface is a set of dialog boxes that gives client applications a consistent look and users a consistent way to work.

    The above article shows how Simple MAPI, CMC, and the CDO Library are layered between MAPI and client applications. Messaging-based clients call directly into MAPI while messaging-aware and messaging-enabled clients call into Simple MAPI, the CDO Library or CMC. Calls to these higher level APIs are forwarded to MAPI.

    MAPI - Programming interfaces 

    MAPI has programming interfaces that are used by the MAPI subsystem, by client application writers, and by service provider writers. The main programming interface is an object-based interface known as the MAPI programming interface. Based on the OLE Component Object Model, the MAPI programming interface is used by the MAPI subsystem and by messaging-based client applications and service providers written in C or C++.

    Client Application Writers 

    Client application writers have a choice of three other interfaces:

      • Simple MAPI
        •  An API function-based client interface for applications written in C, Microsoft Visual C++, or Microsoft Visual Basic.
      • Common Messaging Calls (CMC)
        • An API function-based client interface for applications written in C or C++.
      • CDO Library
        •  An object-based client interface for applications written in C, C++, Visual Basic, or Visual Basic for Applications. 

    Note:

    • Simple MAPI, CMC, and CDO Library client interfaces are primarily for messaging-aware and messaging-enabled client applications.
    • These interfaces are less complex.
    • Applications that require fewer messaging features can use Simple MAPI, CMC, or the CDO Library to implement these features quickly and easily.

    MAPI client application

    • A MAPI client application is any application that uses one of the three MAPI client interfaces (Simple MAPI, CMC, and the CDO Library) or the MAPI programming interface.
    • Client applications implement messaging tasks as either their primary or secondary focus.
    • Messaging client applications, such as applications that send and receive electronic mail, implement messaging as their primary focus while for non-messaging client applications, such as inventory or configuration applications, it is a secondary feature.

    Client application categories 

    Client applications can be organized into one of the following three categories:

    • Messaging-aware applications
    • Messaging-enabled applications
    • Messaging-based work group applications

    i) Messaging-aware applications 

    A messaging-aware application does not require the services of a messaging system, but includes messaging options as an additional feature.

    Example: A word processing application that includes a Send command in its File menu to allow documents to be sent is considered messaging-aware.

    ii) Messaging-enabled applications 

    A messaging-enabled application requires the services of a messaging system and typically runs on a network or an online service.

    Example: A messaging-enabled application is Microsoft Mail.

    iii) Messaging-based work group applications 

    A more advanced client application is the messaging-based work group application. The work group application requires full access to a wide range of messaging system services, including storage, addressing, and transport services. These applications are designed to operate over a network without users having to manage the applications' network interaction.

    Example: Such applications include work flow automation programs and bulletin board services.

  • Le Café Central de DeVa

    EXOLEDB Architecture

    • 1 Comments

    EXOLEDB Overview

    • Exchange Server 2007 provides a new, high-performance OLE DB provider that you can use on the local server to access Exchange store items: the Exchange OLE DB (ExOLEDB) provider.
    • Through the ExOLEDB provider, programmers can access the Exchange store using OLE DB, Microsoft ActiveX Data Objects (ADO), and Collaboration Data Objects (CDO).

    EXOLEDB Architecture

    The above article shows the relationship between ADO, CDO, OLE DB, the ExOLEDB provider, and the Exchange store.

    • ExOLEDB provider is a server-side component, and is therefore used only to access public stores and mailbox stores that reside on the same server.
    • We can access data on the server remotely by wrapping functionality into Component Object Model (COM) components, which can be utilized by ASP and other Web applications.
    • ExOLEDB provider is also ideal for use in COM+ components and Exchange store event and workflow sinks that run on the server.
    • To access remote public stores and mailbox stores, use the WebDAV protocol, MAPI, or CDO 1.2.1.

     

  • Le Café Central de DeVa

    Exchange Web Services Architecture

    • 1 Comments

    Exchange Web Services 

    Exchange Web Services is deployed with the Client Access server role. Microsoft Exchange Server 2007 clients connect to the computer that is running Exchange 2007 that has the Client Access server role installed in an Active Directory directory service site by using an HTTPS connection.

    For more information refer this article

  • Le Café Central de DeVa

    Adding delegates in Exchange Web Services (Exchange Server 2007 SP1)

    • 1 Comments

    Delegates & Exchange Web Services 

    In Microsoft Exchange Server 2007 SP1, you can use Exchange Web Services to add, update, and remove delegates.

    Code sample

    Please find the code example that shows you how to add delegates that can take actions on behalf of a principal. In this code it shows how to add two delegate users to an account.

    static void AddDelegate()
    {
        // Set the version, credentials, and Client Access server on ExchangeServiceBinding.
        ExchangeServiceBinding esb = new ExchangeServiceBinding();
        esb.RequestServerVersionValue = new RequestServerVersion();
        esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1;
        esb.Credentials = new NetworkCredential("username", "password", "domain");
        esb.Url = "https://example.com/ews/exchange.asmx";

        // Create the request.
        AddDelegateType request = new AddDelegateType();

        // Identify the principal's mailbox.
        request.Mailbox = new EmailAddressType();
        request.Mailbox.EmailAddress = "user1@example.com";

        // Identify the delegates who are given access to the principal's mailbox.
        request.DelegateUsers = new DelegateUserType[2];
        request.DelegateUsers[0] = new DelegateUserType();
        request.DelegateUsers[0].UserId = new UserIdType();
        request.DelegateUsers[0].UserId.PrimarySmtpAddress = "user2@example.com";
        request.DelegateUsers[1] = new DelegateUserType();
        request.DelegateUsers[1].UserId = new UserIdType();
        request.DelegateUsers[1].UserId.PrimarySmtpAddress = "user3@example.com";
       
        // Specify the permissions that are granted to each delegate.
        request.DelegateUsers[0].DelegatePermissions = new DelegatePermissionsType();
        request.DelegateUsers[0].DelegatePermissions.CalendarFolderPermissionLevel = DelegateFolderPermissionLevelType.Reviewer;
        request.DelegateUsers[0].DelegatePermissions.CalendarFolderPermissionLevelSpecified = true;
        request.DelegateUsers[1].DelegatePermissions = new DelegatePermissionsType();
        request.DelegateUsers[1].DelegatePermissions.TasksFolderPermissionLevel = DelegateFolderPermissionLevelType.Author;
        request.DelegateUsers[1].DelegatePermissions.TasksFolderPermissionLevelSpecified = true;
        request.DelegateUsers[1].DelegatePermissions.InboxFolderPermissionLevel = DelegateFolderPermissionLevelType.Editor;
        request.DelegateUsers[1].DelegatePermissions.InboxFolderPermissionLevelSpecified = true;

        // Specify whether the principal recieves meeting requests.
        request.DeliverMeetingRequests = DeliverMeetingRequestsType.DelegatesAndSendInformationToMe;
        request.DeliverMeetingRequestsSpecified = true;

        try
        {
            // Send the request and get the response.
            AddDelegateResponseMessageType response = esb.AddDelegate(request);
            DelegateUserResponseMessageType[] responseMessages = response.ResponseMessages;

            // One DelegateUserResponseMessageType exists for each attempt to add a delegate user to an account.
            foreach (DelegateUserResponseMessageType user in responseMessages)
            {
                Console.WriteLine("Results of adding user: " + user.ResponseClass.ToString());
                Console.WriteLine(user.DelegateUser.UserId.DisplayName);
                Console.WriteLine(user.DelegateUser.UserId.PrimarySmtpAddress);
                Console.WriteLine(user.DelegateUser.UserId.SID);
                if (user.DelegateUser.ReceiveCopiesOfMeetingMessagesSpecified)
                {
                    Console.WriteLine("Does the delegate receive copies of meeting related messages: " + user.DelegateUser.ReceiveCopiesOfMeetingMessages);
                }
                if (user.DelegateUser.ViewPrivateItemsSpecified)
                {
                    Console.WriteLine("Can the delegate view private items in the principal's mailbox: " + user.DelegateUser.ViewPrivateItems);
                }
            }
            Console.ReadLine();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
            Console.ReadLine();
        }
    }

    For more information refer this article

  • Le Café Central de DeVa

    Create/Set Folder Level Permissions with Exchange Web Services (Exchange Server 2007 SP1)

    • 1 Comments

    Folder-level permissions work with other Exchange Web Services (Exchange Server 2007 SP1) 

    Folder-level permissions work with other Exchange Web Services operations in the following ways:

    • The GetFolder operation will return the permissions that are set on the folder when the AllProperties shape is specified.
    • The SyncFolderHierarchy operation synchronizes PermissionSets.
    • The UpdateFolder operation will fail if multiple Permission entries are provided for the same user. The UpdateFolder response will return the ErrorDuplicateUserIdsSpecified response code.
    • The AppendToFolderField option of the UpdateFolder operation will append a permission entry for a user if the user does not already have a permission entry in the access control list (ACL) of the folder. If the user that is specified already has a permission entry, an ErrorUserAlreadyExists response code will be returned.
    • The SetFolderField option of the UpdateFolder operation will overwrite all the permission settings on the folder. The client cannot change the permissions for each user.
    • The DeleteFolderField option of the UpdateFolder operation will delete all the permission settings on the folder. 

    Sample Code:

    The following code example shows you how to set folder-level permissions when a folder is created. The authenticated user grants user3 the Editor permission level on a new folder named NewFolderWithPermissionsSet that is created in the Inbox default folder. 

    static void CreateFolderLevelPermissions()
    {
        // Set the version, credentials, and the Client Access server on ExchangeServiceBinding.
        ExchangeServiceBinding esb = new ExchangeServiceBinding();
        esb.RequestServerVersionValue = new RequestServerVersion();
        esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2007_SP1;
        esb.Credentials = new NetworkCredential("username", "password", "domain");
        esb.Url = "https://CAS.example.com/ews/exchange.asmx";

        // Create user identifier.
        UserIdType user = new UserIdType();
        user.PrimarySmtpAddress = "user3@example.com.com";

        // Set the folder permission level to Editor.
        PermissionSetType permissionSet = new PermissionSetType();
        permissionSet.Permissions = new PermissionType[] { new PermissionType() };
        //permissionSet.Permissions[0] = new PermissionType();
        permissionSet.Permissions[0].PermissionLevel = PermissionLevelType.Editor;
        permissionSet.Permissions[0].UserId = user;

        FolderType folder = new FolderType();
        folder.DisplayName = "NewFolderWithPermissionsSet";
        folder.PermissionSet = permissionSet;

        // Specify the target folder.
        DistinguishedFolderIdType inbox = new DistinguishedFolderIdType();
        inbox.Id = DistinguishedFolderIdNameType.inbox;
        TargetFolderIdType targetFolder = new TargetFolderIdType();
        targetFolder.Item = inbox;

        CreateFolderType request = new CreateFolderType();
        request.Folders = new FolderType[] { folder };
        request.ParentFolderId = targetFolder;

        try
        {
            // Send the request and get the response.
            CreateFolderResponseType response = esb.CreateFolder(request);

            // Get the response messages.
            ResponseMessageType[] rmta = response.ResponseMessages.Items;

            // Cast to appropriate response message type.
            if (((FolderInfoResponseMessageType)rmta[0]).ResponseClass == ResponseClassType.Success)
            {
                // Continue.
            }
           
        }

        catch
        {
            // Handle errors.
        }
    }

    For more information refer this article

  • Le Café Central de DeVa

    Technical Architecture of Exchange Server 2007

    • 1 Comments

    Technical Architecture of Exchange Server 2007 

    In Exchange Server 2007 introduces several architectural changes from previous versions of Exchange. Many features and components have been redesigned, some features have been removed, and several new features have been added.

    This document discusses the technical architecture of Exchange 2007, including descriptions of server roles, topologies, and the transport architecture. It is a compilation of several Exchange 2007 Help topics and is provided as a convenience for customers.

    Please find the following documentation here

  • Le Café Central de DeVa

    Calendar logging feature from Outlook

    • 1 Comments

    When i dealt with one of my customer, whose application dealt with Calendaring solution, i made this facility. Even in most of the scenarios, when we deal with Microsoft Office Outlook based calendaring solutions, what're the user action or what're the changes has made. But we have quick & smart solution for that.

    By making use of logging calendar transactions feature in the MS Outlook. Because of the Calendar logging feature, calendar transactions that are generated by client features, by user actions, by the object model, or by the MAPI Calendar Table are written to a log file.

    1) So what the log file will contain? 

    The log file contains the following information:

    Sniffer (Inbox auto-processing)
    Free/busy publishing
    Reminders
    Calendar item actions (creation, modification, or to deletion)
    Resource booking

    2) What is the main goal of the logging feature?

    The main goal of the Calendar logging feature is to quickly identify situations where, for example, meetings are inexplicably deleted from a Calendar folder


    For more information, please view the following article

  • Le Café Central de DeVa

    Part # 1 - Guide to Public Folders in Exchange Server 2007

    • 1 Comments

    Guide to Public Folders in Exchange Server 2007

    Please find the following articles, which guides us "how-to" deal with Public folders in Exchange Server 2007.

  • Le Café Central de DeVa

    Transport Architecture

    • 1 Comments

    Transport Architecture - Exchange Server 2007

    • I found this wonderful article, which gives heads up to Exchange Server 2007 with respect to Transport Architecture.
    • When we work with Exchange Server 2007, it's must to know how internally the messages are getting routed.
    • In Exchange Server 2007, the transport is collection of various server roles, connections, components and queus that work together to route the messages.
  • Le Café Central de DeVa

    Exchange Server 2007 - Database Architecture changes

    • 1 Comments

    Exchange Server 2007 - Database Architecture changes 

    The Exchange database architecture has changed in four significant respects in Exchange Server 2007:

    • The streaming database (.stm) file has been removed from Exchange 2007.
    • Longer log file names are used, thereby enabling each storage group to generate as many as 2 billion log files before log file generation must be reset.
    • Transaction log file size has been reduced from 5 MB to 1 MB to support the new continuous replication features in Exchange 2007.
    • The database page size has increased from 4 KB to 8 KB.
  • Le Café Central de DeVa

    Discontinued Features and De-Emphasized Functionality - Exchange Server 2007

    • 1 Comments

    Discontinued Features and De-emphasized functionality - Exchange Server 2007 

    • Do you know what're discontinued Features and De-Emphasized Functionality in Exchange Server 2007 ?. Then this article will be for you.
    • This article give details about the components, features, or functionality that has been removed, discontinued, or replaced in Microsoft Exchange Server 2007.
    • Please find this article

    Note: Some of the features and components that are listed as discontinued or de-emphasized in this topic were added to Exchange Server 2007 in Service Pack 1 (SP1). Please find this article.

  • Le Café Central de DeVa

    Exchange Server Comparison - Versions 2000, 2003 & 2007

    • 1 Comments

    Find the features comaprison of Exchange Server 2007 with features available in earlier versions, Exchange Server 2003, and Exchange Server 2000.

    Please find this useful article.

  • Le Café Central de DeVa

    Monitoring Event sink # 6 - Using Store Event Sink Bit Flags

    • 2 Comments
     
    In Event sink development, we have event sink bit flags. These flags can be used to identify which event sink was fired.
     
    The bit flags are implemented in EXEVTSNK.TLB, which is installed with the Exchange Software Development Kit (SDK). Then these flags are passed through the LFLAGS parameter of the following Exchange store event interface methods:

    Event Sink Flags Hexidecimal Value Decimal Value Description
    EVT_NEW_ITEM 0x00000001 1 The item is newly created.
    EVT_IS_COLLECTION 0x00000002 2 The item is a folder.
    EVT_REPLICATED_ITEM 0x00000004 4 The item is being replicated from another location.
    EVT_IS_DELIVERED 0x00000008 8 The item is being saved as a result of message delivery.
    EVT_SOFTDELETE 0x00000010 16 The item was deleted.
    EVT_HARDDELETE 0x00000020 32 The item was permanently deleted.
    EVT_INITNEW 0x00000040 64 First firing of the event sink. This is useful for initialization purposes. It is set only once during the lifetime of a created event sink.
    EVT_MOVE 0x00000100 256 The item was saved/deleted due to a move.
    EVT_COPY 0x00000200 512 The item was saved due to a copy.
    EVT_SYNC_BEGIN 0x01000000 16777216 The begin phase of the synchronous event.
    EVT_SYNC_COMMITTED 0x02000000 33554432 The commit phase of the synchonous event.
    EVT_SYNC_ABORTED 0x04000000 67108864 The event was aborted.
    EVT_INVALID_SOURCE_URL 0x20000000 536870912 Unable to get the source URL.
    EVT_INVALID_URL 0x40000000 1073741824 Unable to get the target URL.
    EVT_ERROR 0x80000000 2147483648 An error during the event.
  • Le Café Central de DeVa

    Microsoft Clinic for Exchange Server 2007 - Unified Messaging

    • 1 Comments

    Hi,

    Please find the following Microsoft Clinic for Exchange Server 2007 available for free - limited period, so make use of this!!

    Course Name: Clinic 5091: Introduction to Microsoft Exchange Server 2007 Unified Messaging
    URL:               https://www.microsoftelearning.com/eLearning/courseDetail.aspx?courseId=75413
    Estimated Time: 2 hrs
    Available Offline: Yes

    In this online clinic, you are introduced to the new Unified Messaging features and functionalities in Exchange Server 2007. In addition, you learn how telephony and Unified Messaging can be integrated in Exchange Server 2007. This online clinic is composed of a rich multimedia experience. It is intended for IT Professionals, who are interested in telephony or Unified Messaging.

  • Le Café Central de DeVa

    Monitoring Event Sink # 5 - How reliable Event sinks are?

    • 1 Comments
    After we implemented Event sink (either synchronous or asynchronous), there are certain situations we dont know why sinks are not firing and how reliable they are in real time situation.
    • Both synchronous and asynchronous event notifications are reliable under normal conditions.
    • That is, no notification is skipped on an event.
    • However, if there is a failure in the store, Exchange server might call your event method multiple times.
    • For example, Exchange might shut down after three of five event notifications have been invoked.
    • When Exchange restarts, the three previous event notifications might or might not be invoked a second time.
    • An event method that fails after being notified will not be notified again for that specific event
  • Le Café Central de DeVa

    Monitoring Event Sink # 4 - Using Performance Counters

    • 1 Comments

    You can also monitor the Event sinks by using Performance Counters. 

    • System monitor counters are fully supported for each event.
    • For the core OLE DB functions, these counters are the same as the store counters.
    • For Microsoft Exchange-specific implementations, such as the various event interfaces, the OLE DB layer in the store supports counters for determining how an out-of-process sink affects the performance of the overall system.
    • In addition, the OLE DB provider creates counters for each instance of a virtual server.
    • Other Microsoft Internet Information Services (IIS) services, such as SMTP, Network News Transfer Protocol (NNTP), and HTTP perform similar functions.

    Each event appears as an instance of one of the following counters:

    • Submitted Rate (per second)
    • Submitted Total
    • Completed Rate (per second)
    • Completed Total
  • Le Café Central de DeVa

    Monitoring Event sink # 3 - Using OLE DB Provider &amp; Application Event Logs

    • 1 Comments
    When we work with event sink, many of the time we'll get confuse, whether the event is working or not. Because there are quite some issues associated probably event sink might be not properly registered or not, how about its criteria filter or any of the interfaces or missing were some of the common reasons.
     
    By making use of MS Exchange OLE DB provider, we can find more valuable information. We can check MS Exchange OLE DB provider logs events in the Microsoft Windows® server operating systems Application event log.

    The following table describes these events.

    Severity Symbol Description
    Error EVENTS_BINDING_DISABLED The Exchange OLE DB (ExOLEDB) provider has disabled the event registration due to the problems in the event sink.
    Error EVENTS_INVALID_BINDING The ExOLEDB provider was unable to register the event.
    Error EVENTS_INVALID_CRITERIA_FILTER The ExOLEDB provider was unable to process the specified event criteria filter.
    Error EVENTS_INVALID_PROPERTY_VALUE The ExOLEDB provider was unable to initialize the event registration.
    Error EVENTS_INVALID_SINK_CLASS The ExOLEDB provider was either unable to create an event sink object or unable to get the necessary interface or interfaces from the sink class.
    Error EVENTS_MISSING_PROPERTY The ExOLEDB provider was unable to initialize event registration due to a missing property value.
    Error EVENTS_UNABLE_TO_INITIALIZE_SOURCE The ExOLEDB provider was unable to initialize event registration for the store.
    Error EVENTS_UNABLE_TO_REGISTER_BINDING The ExOLEDB provider was unable to initialize an event registration.
    Error EXOLEDB_FAILED_TO_REGISTER_OBJECTS The ExOLEDB provider was unable to successfully register event sink Component Object Model (COM) objects
  • Le Café Central de DeVa

    The support guidelines for client-side messaging development

    • 1 Comments

    The support guidelines for client-side messaging development

    This is one of the finest article describes "what is supported" and "what is not supported" when you develop custom solutions that integrate with Microsoft-based messaging products or Microsoft technologies. This article also contains most of the key information to be aware of when you develop with Microsoft products and Microsoft technologies.

    However, this article does not cover all scenarios.

    Some of them were,

    • Integrating with Outlook properties
    • MAPI-specific information for named properties
    • Common named properties that are used by Outlook
    • APIs that are supported in managed code
    • The .NET Framework user controls and etc.

    Please find the article

Page 24 of 27 (653 items) «2223242526»