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; }