Charts in CRM 2011


Only a few days back I realized that it is so easy to convert our 2-d charts to 3-d in CRM 2011.

Steps are as following:-

Open the chart we want to convert to 3-d.

Suppose this is our chart

Select the Export Chart button from the Ribbon

In the exported xml for the chart add the following line (Area3DStyle), before the closing tag of ChartArea.

</AxisX>

<Area3DStyle Enable3D=”True” />

</ChartArea>

</ChartAreas>

Using Import Chart option import it back, this is how now it is gonna look like

One more thing we  can also add filter criteria to the fetch used in Chart’s xml.

Do check out these wonderful posts

http://niiranen.eu/crm/2010/10/turn-the-flat-dynamics-crm-2011-charts-into-3d/

http://blogs.msdn.com/b/crm/archive/2011/01/04/crm-2011-charts-know-the-real-potential-part-i.aspx

http://blogs.msdn.com/b/crm/archive/2011/05/02/crm-2011-charts-know-the-real-potential-part-deux.aspx

http://gtcrm.wordpress.com/2011/03/22/quick-reference-for-common-crm-2011-chart-customisations/

Hope it helps.

Send mail to a custom entity in CRM 2011


In CRM 4, to send a mail to a custom entity we used to create a new email attribute for that entity and then had to write a custom workflow activity or plugin for sending mail or some complex logic.

http://social.microsoft.com/Forums/en/crmdevelopment/thread/634aa49d-d8fc-4a8c-b3af-6c00b72f8df9

http://blogs.inetium.com/blogs/azimmer/archive/2009/08/08/crm-4-0-using-unresolved-email-addresses.aspx

Good news is that in CRM 2011 we have a new feature to Send e-mail for custom entities.

http://www.avanadeblog.com/xrm/2010/11/crm-2011-feature-of-the-week-11222010-new-entity-creation-flexibility.html

Just need to enable that option in Entity Customization form. It will create a new email field for that entity or will use an existing email field if it is already there.

Bye.

Fxied – Reporting error. Report cannot be displayed. (rsProcessingAborted)


I was getting the above error while running one of the custom SSRS report inside CRM 2011.


To resolve this issue I had to follow these steps

  1. Start SQL Server Management Studio
  2. Expand Security, then expand Logins
  3. Select and right click the account under which the SQL Server Reporting Services is running.
  4. Select User Mapping and select YouOrg_MSCRM database and specify following role membership
  • CRMReaderRole,
  • db_owner
  • public.


Hope it helps.

Advertisements

Data Audit in CRM 2011 (while updating record programmatically)


Suppose we have enabled (out of the box) data audit feature for a particular entity and then we are updating its record programmatically in the following manner (the way we usually do)

myEntityRecord.new_addressname = txtAddressName.Text;

myEntityRecord.new_street2 = txtStreet2.Text;

myEntityRecord.new_city = txtCity.Text;

myEntityRecord.new_state = txtState.Text;

myEntityRecord.new_zip = txtZipCode.Text;

service.Update(serviceMember);

Now what happens over here is that all of these fields will appear as “changed field” in Audit History even if we haven’t changed its value.

Here in the above screen shot we can see the same value for fields in old value and new value column. This is something we should be aware of while updating records programmatically in CRM.

Bye.

Plugin for Resolve Case action against Incident Entity. (CRM 4.0)


We had a requirement wherein we wanted to update one of the fields in the incident record when we are resolving it through (Actionà Resolve Case).

Here we had to write a Pre-Update plugin registered on Child Pipeline against incident entity.

More on that

http://roman20007.wordpress.com/2010/04/25/resolve-case-event-in-plugin/

http://social.microsoft.com/Forums/en-HK/crmdevelopment/thread/ef1e594f-f50b-484e-a166-285429df8e4d

Hope it helps.

Calling On Demand Workflow through a Button in Ribbon (launchOnDemandWorkflow) in CRM 2011


I had to call an on demand workflow through a custom button click inside the ribbon. I thought of using launchOnDemandWorkflow function.

http://inogic.blogspot.com/2009/06/call-workflow-from-isv-button.html

But couldn’t really find a way of calling that function.

So thought of calling it through its url, which would be something like this

http://servername/orgname/_grid/cmds/dlg_runworkflow.aspx?


iObjType=10004

&iTotal=1

&sIds=%7b4BEBDCAF-8F66-E011-A475-00155D045711%7d%3b

&wfId=%7bF0ED25C7-5129-4297-8515-69DFFA0739FF%7d


function CallOnDemandWorkflow() {


var recordID = crmForm.ObjectId;


var url = “http://server/org/_grid/cmds/dlg_runworkflow.aspx?iObjType=10004&iTotal=1&sIds={“ + recordID + “}&wfId={F0ED25C7-5129-4297-8515-69DFFA0739FF}”;

window.open(url);

}

However I keep getting some JavaScript Error.

Finally found out the correct way of doing so.

function CallOnDemandWF() {

var a = new Array(crmFormSubmit.crmFormSubmitId.value);

var sIds = crmFormSubmit.crmFormSubmitId.value+“;”;

var sEntityTypeCode = “10004”; //Replace this with your entity type code

var sWorkflowId = “{F0ED25C7-5129-4297-8515-69DFFA0739FF}”; //Replace this with your actual workflow ID

var iWindowPosX = 500; //Modal dialog position X

var iWindowPosY = 200; //Modal dialog position Y

var oResult = openStdDlg(prependOrgName(“/_grid/cmds/dlg_runworkflow.aspx”)+“?iObjType=” + CrmEncodeDecode.CrmUrlEncode(sEntityTypeCode) + “&iTotal=” +

CrmEncodeDecode.CrmUrlEncode(a.length) + “&wfId=” + CrmEncodeDecode.CrmUrlEncode(sWorkflowId)+ “&sIds=” + CrmEncodeDecode.CrmUrlEncode(sIds) , a, iWindowPosX, iWindowPosY);

}

Check out the thread

http://axforum.info/forums/showthread.php?t=29333

Final Output

The ribbondiffxml used is following

    <RibbonDiffXml>

            <CustomActions>

                <CustomAction

                Id=“CA_MyFirstButton”

                Location=“Mscrm.Form.new_rip.MainTab.Workflow.Controls._children”

                Sequence=“31“>

                    <CommandUIDefinition>

                        <Button

                        Id=“B_MyFirstButton”

                        Command=“Cmd_JavaScript”

                        LabelText=“Invite Service Member”

                        ToolTipTitle=“Invite User”

                        ToolTipDescription=“Use this workflow to invite Service Member to the portal”

                        TemplateAlias=“o1”

                        Image16by16=“/_imgs/ribbon/startdialog_16.png”

                        Image32by32=“/_imgs/ribbon/startdialog_32.png“></Button>

                    </CommandUIDefinition>

                </CustomAction>

            </CustomActions>

            <Templates>

                <RibbonTemplates

                Id=“Mscrm.Templates“/>

            </Templates>

            <CommandDefinitions>

                <CommandDefinition
Id=“Cmd_JavaScript“>

                    <EnableRules>

                        <EnableRule
Id=“Mscrm.Enabled“></EnableRule>

                    </EnableRules>

                    <DisplayRules></DisplayRules>

                    <Actions>

                        <JavaScriptFunction

                            Library=“$webresource:new_InOut”

                            FunctionName=“CallOnDemandWF”

                    >

                        </JavaScriptFunction>

                    </Actions>

                </CommandDefinition>

            </CommandDefinitions>

            <RuleDefinitions>

                <TabDisplayRules/>

                <DisplayRules/>

                <EnableRules/>

            </RuleDefinitions>

            <LocLabels/>

        </RibbonDiffXml>

Bye.