Tasks

You can link a Task to a new or existing Account, Business Contact, or Opportunity object.

The following C# and Visual Basic for Applications (VBA) examples show how to create a new task and link it to a new Account object.

C#

  private void CreateTask()
        {

            Outlook.ApplicationClass _app = new Outlook.ApplicationClass();
            Outlook.Application olApp = (Outlook.Application)_app;
            Outlook.NameSpace olNameSpace = _app.GetNamespace("MAPI");
            Outlook.Folders folders = olNameSpace.Session.Folders;
            Outlook.Folder bcmRootFolder = (Outlook.Folder)folders["Business Contact Manager"];

            Outlook.Folder accountsFolder = (Outlook.Folder)bcmRootFolder.Folders["Accounts"];
            Outlook.ContactItem newAccount = (Outlook.ContactItem)accountsFolder.Items.Add("IPM.Contact.BCM.Account");
            Outlook.Folder historyFolder = (Outlook.Folder)bcmRootFolder.Folders["Communication History"];

            newAccount.FullName = "Wide World Importers";
            newAccount.FileAs = "WWImporters";
            newAccount.Save();
            string accountEntryID = newAccount.EntryID;

            Outlook.TaskItem taskItem = (Outlook.TaskItem)historyFolder.Items.Add("IPM.Task");
            taskItem.Subject = "Discussion with Sales Manager";
            taskItem.Body = "As per the discussion on 23-Jun-2005, agreed to give a 15% discount on our products";
            taskItem.StartDate = System.DateTime.Parse("3/20/2006");
            taskItem.DueDate = System.DateTime.Parse("4/20/2006");
            taskItem.Save();

            Outlook.JournalItem oHistoryItem = (Outlook.JournalItem)historyFolder.Items.Add("IPM.Activity.BCM");
            oHistoryItem.Type = "Task";
            oHistoryItem.Subject = taskItem.Subject;
            oHistoryItem.Start = taskItem.StartDate;
            oHistoryItem.End = taskItem.DueDate;

            //If the Outlook Task item is deleted, the information is preserved in the body of the Business Activity
            oHistoryItem.Body = "StartDate: " + taskItem.StartDate + "\n" + "DueDate: " + taskItem.DueDate;

            if (oHistoryItem.UserProperties["Parent Entity EntryID"] == null)
            {
                Outlook.UserProperty userProp = oHistoryItem.UserProperties.Add("Parent Entity EntryID", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText, false, false);
                userProp.Value = accountEntryID;
            }

            if (oHistoryItem.UserProperties["LinkToOriginal"] == null)
            {
                Outlook.UserProperty userProp = oHistoryItem.UserProperties.Add("LinkToOriginal", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText, false, false);
                userProp.Value = taskItem.EntryID;
            }

            oHistoryItem.Save();

        }


VBA

  Sub CreateTaskWithAccount()

   Dim olApp As Outlook.Application
   Dim objNS As Outlook.NameSpace
   Dim bcmRootFolder As Outlook.Folder
   Dim olFolders As Outlook.Folders
   Dim bcmAccountsFldr As Outlook.Folder
   Dim bcmHistoryFolder As Outlook.Folder
   Dim newAcct As Outlook.ContactItem
   Dim newHistoryTaskItem As Outlook.JournalItem
   Dim newTaskItem As Outlook.TaskItem
   Dim userProp As Outlook.UserProperty
   Dim str As String

   Set olApp = CreateObject("Outlook.Application")
   Set objNS = olApp.GetNamespace("MAPI")
   Set olFolders = objNS.Session.Folders
   Set bcmRootFolder = olFolders("Business Contact Manager")
   Set bcmAccountsFldr = bcmRootFolder.Folders("Accounts")
   Set bcmHistoryFolder = bcmRootFolder.Folders("Communication History")

   Set newAcct = bcmAccountsFldr.Items.Add("IPM.Contact.BCM.Account")
   newAcct.FullName = "Wide World Importers"
   newAcct.FileAs = "Wide World Importers"
   newAcct.Email1Address = "someone@example.com"
   newAcct.Save

   Set newTaskItem = olApp.CreateItem(olTaskItem)
   newTaskItem.Subject = "Prepare Agenda For Meeting"
   newTaskItem.StartDate = "03/02/06"
   newTaskItem.DueDate = "03/03/06"
   newTaskItem.Save

   Set newHistoryTaskItem = bcmHistoryFolder.Items.Add("IPM.Activity.BCM")
   newHistoryTaskItem.Subject = newTaskItem.Subject
   newHistoryTaskItem.Type = "Task"
   newHistoryTaskItem.Start = newTaskItem.StartDate
   newHistoryTaskItem.End = newTaskItem.DueDate
   
   'The reason we are concatenating StartDate and DueDate and assigning them to the newHistoryTaskItem body is as follows:
   'In case the Outlook Task gets deleted, this information is preserved in the body of the Business Activity
   newHistoryTaskItem.Body = "StartDate: " & newTaskItem.StartDate & vbNewLine & "DueDate: " & newTaskItem.DueDate
   
   If (newHistoryTaskItem.UserProperties("Parent Entity EntryID") Is Nothing) Then
        Set userProp = newHistoryTaskItem.UserProperties.Add("Parent Entity EntryID", olText, False, False)
        userProp.Value = newAcct.EntryID
   End If
   
   If (newHistoryTaskItem.UserProperties("LinkToOriginal") Is Nothing) Then
        Set userProp = newHistoryTaskItem.UserProperties.Add("LinkToOriginal", olText, False, False)
        userProp.Value = newTaskItem.EntryID
   End If

   newHistoryTaskItem.Save

   Set newTaskItem = Nothing
   Set newHistoryTaskItem = Nothing
   Set newAcct = Nothing
   Set bcmAccountsFldr = Nothing
   Set bcmHistoryFolder = Nothing
   Set bcmRootFolder = Nothing
   Set olFolders = Nothing
   Set objNS = Nothing
   Set olApp = Nothing

End Sub

See Also

About Communication History Items | 2007 Office System: Updated Developer Content