cancel
Showing results for 
Search instead for 
Did you mean: 

Making Account Read-Only in Outlook

danny_lipkovski2
Participant
0 Kudos

Hi,

we have setup Desktop Connection for CRM properly.
But we have the requirement to make accounts in Outlook readonly. User should only be able to create/change contacts, appointments and tasks in Outlook.

In the CRM OutlookBridge Extensibility Guide exactly this requirement is stated with following example:

*************

Make an Object Type Read-Only

1. Open customization.xml file.

2. Locate the type you want to make read-only.

3. Add security/modify_filter tag with false content inside under the type tag.

*************

I have updated customization.xml as stated above and created and deployed new Customization Package.

But accounts still remain editable in Outlook.
I also tried to mark all account fields as readonly but email/phone/fax and URL remain editable.

Any advice?

Danny

Accepted Solutions (0)

Answers (3)

Answers (3)

michael_sackmann
Participant
0 Kudos

Hi Danny,

I can confirm Antonios prosal with DCN SP3. Please note that there are also additional options within the security/modifiy_filter tag. If you also want to disable creation and deletion on the crm server the tag-definition looks as the following:

<security>

       <modify_filter>false</modify_filter>

        <delete_filter>false</delete_filter>

        <create_filter>false</create_filter>

</security>

Regards

Michael

Antonio_leites
Participant
0 Kudos

Hi Michael,

I upgraded to SP4 and it seems that now this is controlled by new functions in the security tab:

<modify_filter_fn handler="handlers.contactperson_modify_filter_fn"/>    and

<modify_filter_fn handler="handlers.accountmain_modify_filter_fn"/>

I included the modify_filter instructions after the function in the security tab like this

<security>

      <modify_filter_fn handler="handlers.contactperson_modify_filter_fn"/>

       <modify_filter>false</modify_filter>

        <delete_filter>false</delete_filter>

        <create_filter>false</create_filter>

</security>

but when the new packed is downloaded I get an error saying that is not correct. So I commented the new function

    <modify_filter_fn handler="handlers.contactperson_modify_filter_fn"/>

and left the old lines and it works. I know that this is just a workaround, but I didn't find any documentation about it.

Could you please explain the new way to set it?

Thanks

Antonio

michael_sackmann
Participant
0 Kudos

Hello Antonio,

indeed there have been some changes with package in SP04 and also in the maintenace of the package. Adjustments of packages should be done using invisible studio which is separate client software which can be downloaded from sap marketplace. See also note 1926916, there is separate statement for SP04. In your particular issue, you have to remove the <modfiy_filter_fn> tag. Either you use this tag, then the corresponding java script function is executed to determine whether the entity is changeable or not, or you use <modfiy_fitler> tag where you can set some kind of "hardcoded value", You cannot use both tags. Properties settings are described in documentation of invislbe studio itself. If you use invisble studio for this settings then already on the UI it is preventet that you can set both tags, so the error will not occur in first place.

Regards

Michael

Antonio_leites
Participant
0 Kudos

Hi Danny,

I set up the scenario you mentioned:  Accounts read only but Contact Persons can be modified and created in Outlook. First I tried adding the read_only attribute to all account fields, but telephone, email, fax, and URL (+ notes and Attachment) remain editable. These fields are associated to widgets and I have not been able to add the read_only attribute, always I got an error in the package syncronization.

So I changed the strategy and I tried to make the record type read-only adding the security/modify_filter tag and it works.


I used DCN SP3.



Best regards,


Antonio

0 Kudos

Hey Danny,

I would propose a litte different way:

Why not set the accounts readonly in backend already?

You can use a BAdI to influence the data which is requested by the client before it is delivered to Outlook.

I think that's better solution to forbid every kind of editing).

So...

... create an implementation for Enhancement Spot /CRMGWS/GROUPWARE_SYNC. This enhancement spot uses interface /CRMGWS/IF_GROUPWARE_SNC_QUERY. This interface contains a method named RESULT_PROCESSING. With this method you can influence data right before it is send out to Outlook.


You can change values like that:

         DATA lt_select                  TYPE string_table.

    FIELD-SYMBOLS <fs_accountmain>  TYPE /crmgws/accountmain.

    FIELD-SYMBOLS <fs_account_tab>  TYPE table.

    "Check for correct entity type

    IF NOT iv_entity_name = 'AccountMain'.

      RETURN.

    ENDIF.

    "Leave when EDITBALE flag is not requested

    lt_select = io_tech_request_context->get_select_with_mandtry_fields( ).

    READ TABLE lt_select WITH KEY table_line = 'EDITABLE' TRANSPORTING NO FIELDS.

    IF NOT sy-subrc = 0.

      RETURN.

    ENDIF.

    "Change EDITABLE flag for all accounts

    ASSIGN cr_entityset->* TO <fs_account_tab>.

    LOOP AT <fs_account_tab> ASSIGNING <fs_accountmain>.

      <fs_accountmain>-editable = space.

    ENDLOOP.


Hope that helps!

BR,

Alex

gregorw
Active Contributor
0 Kudos

Dear Alex,

I've just tried your suggestion, but it doesn't change the display of Accounts in Outlook. All fields are still editable. Any suggestions?

Best regards

Gregor

0 Kudos

Hello Gregor,

hm, that's... let's say interesting - as I have tried it in our internal system.

So let's see if we can find the issue...

  • Is the BAdI implementation called during runtime? To check that, you can place an external breakpoint (with the same user as you are using the Desktop Connection in Outlook) within the BAdI code (e.g on the first line: IF NOT iv_entity_name = 'AccountMain'.)
  • Have you done a complete sync? The change in user interface is refleceted after the next sync of Accounts (as the changed data has to be transfered to Outlook first).
  • Is there a filter value present at the registration of the BAdI? In my testings, I used it without filter value:

For further analyis it helps for sure to know if the BAdI is called in general. Thanks for checking that...

Best regards,

Alex

gregorw
Active Contributor
0 Kudos

Dear Alex,

I've checked that the BAdI is called. Also I've used "Synchronize All Change"

There I found out that the editable attribute was already space. But I think I found in the customization.xml that the field Editable is set by default to true. So I changed it to:

<boolean id="Editable">
 <default_value>false</default_value>
 </boolean>

The interresting thing is, this does only affect freshly synchronized accounts. Only when I remove the Customization Package via the Options Menu and re-sync from scratch the Accounts are not editable anymore. Unfortunately that results in a follow up problem that the linked Contacts that are listed in the Account can't be open via a double-click. Even the scroling when more Contacts than visible exists is disabled. Is that a bug or feature? I can open a Incident in the Service Marketplace for that.

Another option that I've tried was to add the tag security and inside of that one modify_filter with the value false to the customization.xml. As it is described in the Guide "InvisibleCRM OutlookBridge Extensibility Guide.pdf". So this resulted in i.e. for the ContactMain:

     <type id="ContactMain" 
                    small_icon="type_image:ContactMain:16" 
                    icon="type_image:ContactMain:24" 
                    large_icon="type_image:ContactMain:48"
                    caption="#obj_contact_main"
                    plural_caption="#obj_contact_main_plural"
                    display_format=":[:(FirstName) :]:[:(LastName):]">
          <security>
               <modify_filter>false</modify_filter>
          </security>

But with that addition I get this error in the Log:

[14-08-08 09:45:03.347936,T4264] [ERROR] [gen]: Package manager files validation failed with error :

Validation error: 'Validation error code: -1072898028; Reason: Element '{http://invisiblecrm.com/platform/extensibility/customization}db_storage'

is unexpected according to content model of parent element '{http://invisiblecrm.com/platform/extensibility/customization}type'.

Expecting: {http://invisiblecrm.com/platform/extensibility/customization}fields.

; Line: 67; Line position: 16; Source Text:        

<db_storage/>; Error XPath:

/*[local-name()="metadata" and namespace-uri()="http://invisiblecrm.com/platform/extensibility/customization"]/*[local-name()="type" and

namespace-uri()="http://invisiblecrm.com/platform/extensibility/customization"][2]/*[local-name()="db_storage" and

namespace-uri()="http://invisiblecrm.com/platform/extensibility/customization"][1]' for file '\customization.xml'

Hope you can help us.

Best regards

Gregor

0 Kudos

Hello Gregor,

thanks a lot for your detailed analysis - I will try to reproduce your issues.

I wonder if you could tell me the version in use...?

CRM AddOn SP Level

Outlook AddIn Version

would be helpful.

Thanks in advance!

Best regards,

Alex

gregorw
Active Contributor
0 Kudos

Dear Alex,

we try to get it working with this Backend Patch Levels:

SAPKB74007

SAPKA74007

SAPK-74007INSAPGWFND

SAPK-74009INSAPUI

SAPK-74007INPIBASIS

SAPKITLRE9

SAPKW74007

SAPK-74705INMDGFND

SAPKNA7031

SAPK-74705INSAPBSFND

SAPK-74705INWEBCUIF

SAPKU71305

SAPK-70004INCRMGWS

SAPKITAB9L

The Connector is 2.0.2.148, 32bit freshly loaded from the Service Marketplace.

Best regards

Gregor