Tuesday, March 27, 2012

Read Optimized Form made available through UR7

After installing UR7, there are chances you may not find any changes with respect to the much talked about Read Optimized form. That is because the default setting for RO is switched off and by default all forms are expected to open in Edit mode.

You need to make the change at Organization level using the Settings Dialog.

You can either have the forms open by default in Read Optimized (RO) mode or Edit mode. If you choose RO, all forms for all users would open in RO unless individual users have overridden the default to set their own preferences using the individual options available to each user.

Note if you uncheck the Allow users to select a mode for viewing forms, you can force the users to follow the organization level setting enforced by the administrator. The above option will then not be available on individual user settings form.

The individual user settings always take preference over Organization settings.

So what is a Read-Optimized form?
This form will display the record in read-only mode this means that user will not be able to edit the details on the form. The idea behind this being, most often users access existing records for viewing the details rather than editing them.

The benefit of RO form is that it loads much faster than an Edit form. It is much like the Print Preview Option that was always present in CRM. When you did a print preview it would show up a window with all the details laid out just as it is on the form.

The trade-off however has been that it would now not include or support the following
1. Left navigation links missing
2. Ribbon Missing
3. Web Resources cannot be included on the form, if included the form will not open in RO even if user preference is set to RO form for viewing.
4. If you have scripts included on the Onload event then again the forms would not open in RO view until the scripts are removed from the onload event handler.

Here is what the url now looks for Read Optimized Form. A new flag &rof has been provided that lets you provide the RO setting. True would open the form in RO view if it is possible i.e it does not include scripts or web resources that prevent the form from opening in RO view.


The above link would open the account form in RO mode even if the users individual setting was set to Edit mode.

If the &rof flag is not included in the URL then it will open based on the default View settings for the user.

What if you would want to check the activities that were earlier available in left nav links on the form? Add them as a sub-grid on your form and the RO view would list them out

You can open the activities to view the details and then these would also open in RO mode. But you are not allowed to create new activities. The buttons are missing.

If you notice the notes pane, it lists the notes but you cannot download the attachments or add new notes.

If you had Webresources that you wanted to include on the form even in RO mode? You include that instead as an IFRAME. In the example below... we have picked up the web resource URL and copied that in the IFRAME.

The URL to the Webresource should include the Organization name if you are providing relative url.

You can design multiple role based forms in CRM and the Read-Optimized mode will apply to all of the forms defined. If a user has access to more than one forms, just like before it would by default open the last viewed form by the user in RO view.

There might be probably more that comes up once we start looking into this deeper and we will make sure to come back and update this based on the new understanding of the RO concept...

Friday, March 23, 2012

IFD Configuration

While setting up IFD, we had issues in enabling the claims for CRM 2011. After trying to enable claims for CRM 2011 through Microsoft Dynamics CRM 2011 Deployment Manager when we trid to browse the URL: https://XYZ.com/FederationMetadata/2007-06/FederationMetadata.xml we were getting one of the following errors:

- HTTP 503 Service Unavailable error.
- HTTP 404 Not Found error.

When "FederationMetadata/2007-06/FederationMetadata.xml" is requested through the browser CRM website, it has the rule that rewrites the URL to handlers/Federation Metadata.ashx. So when one gets such types of error then it means IIS URL Rewrite module is not rewriting the URL correctly.

The solution for this issue is to re install the IIS URL Rewrite.

If the reinstallation of IIS URL Rewrite does not resolve the issue. The Issue could be due to Reserved URL. To find the Reserved URL follow the below given steps.

a) Open Command Prompt.
b) Type the Command NETSH HTTP SHOW URLACL.
c) This command will show all the reserved URL's.
d) If you get any reserved URL with error as given below.

Reserved URL : https://ABC:443/
Can't lookup sid, Error: 1332
SDDL: D:(A;;GA;;;S-1-5-80-2246541699-21809830-3603976364-117610243- 975697593)

e) Then we have to delete each URL for which we get such type of error as given above using the below command. Please provide the full URL for which you get the error in the command Prompt.

netsh http delete urlacl url=https://ABC:443/

f) After that again run the command to check if the reserved URL is still having an error message through command NETSH HTTP SHOW URLACL.

g) Repeat the step (e) for each URL for which you are getting the error.

h) After deleting all the Reserved URL through the Command,do IIS RESET on CRM server.

i) Configure CLAIMS again using Deployment Manager on CRM 2011.

j) Now try to access the federation Url “FederationMetadata/2007-06/FederationMetadata.xml"again.

We have refereed the blog http://blogs.msdn.com/b/emeadcrmsupport/archive/2011/05/13/we-receive-http-errors-while-accessing-the-crm-federationmetadata-url.aspx to resolve the issue.

The above listed steps should resolve the issue.

Tuesday, March 13, 2012

N:N association

When we have to associate the records we normally use AssociateRequest but while associating campaign with campaign related items such as Campaign, Marketing List, Product, or Salesliterature it doesn’t work.

For achieving this we have special Message made for Campaign called AddItemCampaignRequest.
Below we have provided the code that will associate the Campaign with Campaign Items.

//Add Item to Campaign
AddItemCampaignRequest req = new AddItemCampaignRequest();

// Specify the Campaign Id
req.CampaignId = new Guid(CampaignId)

// Specify the Logical name of the entity to which we want the Campaign to be associated
req.EntityName = entity.LogicalName;

// Specify the Id of the entity to which we want Campaign to be associated
req.EntityId = new Guid(EntityId)

// Execute the request
AddItemCampaignResponse resp = (AddItemCampaignResponse)_service.Execute(req);

We can associate Campaign, Marketing List, Product,
or Salesliterature with the Campaign through the AddItemCampaignRequest message.

To use this message, pass an instance of the AddItemCampaignRequest class as the request parameter in the Execute method. To perform this action, the caller must have access rights on the campaign entity instance.

Same we can associate the Campaign Activities with the Marketing Lists through the AddItemCampaignActivityRequest as given in the below code.

// Create the request object.
AddItemCampaignActivityRequest add = new AddItemCampaignActivityRequest();

// Set the properties of the request object.
add.CampaignActivityId = new Guid(CampaignActivityId);

// Specify the List Id to which we want Campaign Activity to be associated
add.ItemId = new Guid(listId);

// Specify the Logical name of the entity to which we want the Campaign Activity to be associated
add.EntityName = EntityName.list;

// Execute the request.
AddItemCampaignActivityResponse added = (AddItemCampaignActivityResponse) service.Execute(add);

The Marketing List being added must have already been added to the campaign otherwise error will be thrown and Marketing List will not be associated with Campaign Activities.

Hope this helps!!!

Monday, March 5, 2012

Experiences from the MVP Summit!

Well, this was one travel that I had not planned for. But today I am happy that I did not skip it. This was my first MVP summit after being awarded MVP in January this year and it was an enriching experience.

I was one of the 41 CRM MVPeeps that were present at the summit and I was the only one from India in the CRM Group. The group had representation from most parts of the world and it was great to see the reach and adoption of CRM across the world.

There were many sessions revolving in and around CRM and unfortunately not much can be shared here to due to the NDA. All that can be said though is CRM is heading the right direction and we are in safe hands :)

It was a pleasure to hear the product team speak about the future of the product and thier vision for the product. It was good to know we could share our concerns and they would be addressed and that we were not just there to hear them talk but the product team was listening to us as well and that as MVP we were really a valuable community for them.

Amy did a really great job at organizing the sessions and many thanks to her to make sure we are all well looked after :)

Besides the sessions which were by the way not all work but actually a lot of fun, there were also other parties organized in the evenings. The closing ceremony was held at Centurylink fields. There was a fireworks show and we had a chance at the ball on the fields.

A very big thanks to all MVP's to make us first timers feel welcome. Looking forward to Convergence that starts 18th March and I expect that to be an equally enriching experience and I really look forward to meeting all my friends back again!