cancel
Showing results for 
Search instead for 
Did you mean: 

Desktop Connection : Custom requirement for Appointments deleted in Outlook

nisha_vinod
Advisor
Advisor
0 Kudos

Hello Experts,

We have a custom requirement as follows:

When we delete an appointment in Outlook, we would like to set the status to "Cancelled" in CRM.

The standard behavior is: when we delete in Outlook, appointment is deleted in CRM.

We already had a look at the existing BadI's in Desktop Connection but they don't seem to serve our purpose.

Any advice would be much appreciated.

Regards

Nisha

Accepted Solutions (1)

Accepted Solutions (1)

michael_sackmann
Participant
0 Kudos

Hello Nisha,

a possible solution could be to do enhancement on the service on CRM server side. If you do service enhancement you could re-define the delete_entity method in your data provider class which is called in case the client sends a delete request. In your case you could change standard logic via re-definition. Instead of calling delete API you could call status change instead. However from client point of view these appointments are still being deleted so you have to make sure that get methods (get_entity, get_entityset) will not return such appointments to the client.

Regards
Michael

nisha_vinod
Advisor
Advisor
0 Kudos

Thanks a lot Michael.

Couldn't we influence the BADI to filter out  appointments with Status Cancelled during synchronization?

michael_sackmann
Participant
0 Kudos

Hello Nisha,

yes, for add filtering you could use BADI.

Regards

Michael

nisha_vinod
Advisor
Advisor
0 Kudos

Hi Michael,

During debugging, I just observed that UPDATE_ENTITY and PATCH_ENTITY get called when I execute a deletion either way - I mean OL to CRM or CRM to OL.

The delete_entity method doesn't get triggered at all.

We are on SP04 version. Is there something I am missing?

michael_sackmann
Participant
0 Kudos

Hello,

well, you stated that the appointment would be deleted in CRM (in your originally request). It looks that this is not the case. Actually when appointment is deleted on client, then it will NOT be deleted on CRM on database. Instead the appointment is changed to status = rejected (user status = E0007 which corresponds to system status I1032).

This is controlled by picklist values for status for appointments. In picklist there are the possible user status for appointment provided from the server to the client. In this status list there is also a field "rejected". If now an appointment is deleted on client then the client sets the status from the picklist which has the value rejected = true. In default delivery this is user status E0007.

So If you want to set another status in case appointment gets deleted, then (from my point of view) you habe to options:

1) you change picklist values so that another user status gets the value rejected = true. In this case the client will then set this user status instead  the original one E0007. Picklist for appointments is build in class /CRMGWS/CL_APPT_PICKLIST3.

2) you change UPDATE_ENTITY method where you check on the incomming value for status in the import data structure /CRMGWS/APPOINTMENTMAIN-ACTIVE_STATUS_ID. So you manipulate the incomming value in order to trigger a status change with a different status.

In both cases you have to make sure that the user status you set, does corresponding to the system status you want to be activated.

Regards

Michael

nisha_vinod
Advisor
Advisor
0 Kudos

Hello Michael.

My apologies..my initial understanding was based on Groupware behavior. When it came to actual debugging, I came to understand the correct functionality.

Thanks a lot once again for your support.

Regards

Nisha

Answers (0)