Skip to main content

AX 2012 - How to retrieve meeting (appointment) status from Outlook

Microsoft Dynamics AX 2012 provides a very convenient way to synchronize outlook tasks, contacts and appointments back into AX. 

MSDN topics describe the integration in details.
https://technet.microsoft.com/en-us/library/aa498242.aspx
https://technet.microsoft.com/en-us/library/gg230659.aspx

Let's discuss the main motive of this post; How can you retrieve the meeting (appointment) status from outlook back to AX 2012.

Before I show you where and what code need to add or change, I will show the existing functionality how it works.

Go to Home > Periodic > Microsoft outlook synchronization > Synchronize


Here you can see, be default it tries to sync Contacts, Tasks and Appointments within provided date range. I will focus on Appointments for this post and sync Appointments only,



Let's assume I have following meeting (appointment) response in my outlook, remember it was a meeting invitation which I sent from AX and now I have their responses back into my outllook.

For below email the response is Accepted.



Upon Sync Appointments it creates Activities in AX and can be access from Home > Common > Activities > All activities.



The last (right most) column is showing the meeting response, AX default functionality (Sync process) does not bring this meeting response back into AX. Here is the code change which needs to plug in into existing class to achieve this function.

Class: SmmOutlookSync_Appointment
Method: synchronizeAppointmentsOutlookToAxapta()



This method is retreiving the meeting status;

// Faisal.F, read meeting response;
// Accepted = 3; Tentative = 2; Declined = 4 [based on macro smmMSOutlook2002ObjectModelConstants]
private str FCM_getMeetingResponse(COM  _outlookItem)
{
    COM     recip, recips;
    str     meetingStatus;

    if ( _outlookItem.Recipients() != null)
    {
        recips = outlookItem.Recipients();
        if (recips.Count() >= 1)
        {
            recip = recips.Item(1);

            switch(recip.MeetingResponseStatus())
            {
                case 2:
                    meetingStatus = "Tentative";
                    break;

                case 3:
                    meetingStatus = "Accepted";
                    break;

                case 4:
                    meetingStatus = "Declined";
                    break;

                default:
                    meetingStatus = "None";
                    break;
            }
        }
    }
    return meetingStatus;   
}

Comments

Popular posts from this blog

The Dual Write implementation - Part 1 - Understand and Setup

What is Dual-write? Tightly couples – complete at one transaction level Near real time Bi-directional Master data and business documents – Customer records you are creating and modifying and at this document we are talking about sales orders or quotes and invoice. Master data could be reference data e.g. customer groups and tax information Why Dual-write and why not Data Integrator? Data Integrator is Manual or Scheduled One directional Now, Let's deep dive and understand what is required for Dual-write setup and from where to start. First thing first, check you have access to https://make.powerapps.com/ Choose right environment of CDS (CE) Make sure you have access to the environment too, click on gear icon and Admin Center  Look for required environment and Open it, you must have access as going forward you are going to configure dual write steps in the environment user the same user you are logged in now. Now, go back to power platform admin center and...

D365FO: Entity cannot be deleted while dependent Entities for a processing group exist. Delete dependent Entities for a processing group and try again.

Scenario: There are times when you want to delete an entity from target entity list and when you do so, you face an error message which does not tell you where exactly the entity has been used.  "Entity cannot be deleted while dependent Entities for the processing group exist. Delete dependent Entities for a processing group and try again. " Solution: Browse the environment by appending this part  /?mi=SysTableBrowser&TableName=DMFDefinitionGroupEntity&cmp=USMF   at the end.  For example; if the environment URL is  https://daxture.sandbox.operations.dynamics.com then the complete URL will be https://daxture.sandbox.operations.dynamics.com/?mi=SysTableBrowser&TableName=DMFDefinitionGroupEntity&cmp=USMF Filter for Entity and it will give you the DefinitionGroup where the entity has been added or used in data management import/export projects. Get the DefinitionGroup name and search in the export/import projects under data management and either del...

Dual-write connection set error: An item with the same key has already been added

If you happen to see this error message then you have duplicate records in cdm_company entity in CDS environment. Check for cdm_companycode field this is normally not allowed but have a look and delete the ones with duplicates.