Using JavaScript in a custom button in CRM 2011


Now let us built on our existing example of adding custom button.

https://nishantrana.wordpress.com/2010/11/04/adding-my-first-custom-button-in-crm-2011/

Now on click of the button I want to show alert message “Hello World” i.e. call JavaScript.

This is our existing Button Definition

<Button
Id=B_MyFirstButton
LabelText=My First Button
ToolTipTitle=My First Button Tool Tip Title
ToolTipDescription=My First Button Tool Tip Description
TemplateAlias=o1
Image16by16=/_imgs/ribbon/saveandclose16.png
Image32by32=/_imgs/ribbon/saveandclose32.png/>

(Add a new Jscript web resource to the solution named MyJavaScript)

function HelloWorld() {

alert(‘Hello World’);

}

Now add a Command attribute to Button

    <Button Id=”B_MyFirstButton


Command=”Cmd_JavaScript


                            LabelText=”My First Button ToolTipTitle=”My First Button Tool Tip Title ToolTipDescription=”My First Button Tool Tip Description TemplateAlias=”o1 Image16by16=”/_imgs/ribbon/saveandclose16.png Image32by32=”/_imgs/ribbon/saveandclose32.png“/>

Now we need to define this Command.

This is how we can define it

<CommandDefinitions>

<CommandDefinition
Id=Cmd_JavaScript>

<EnableRules/>

<DisplayRules/>

<Actions>


<JavaScriptFunction
Library=$webresource:new_MyJavaScript
FunctionName=HelloWorld>

</JavaScriptFunction>

</Actions>

</CommandDefinition>

</CommandDefinitions>

However if we zip and import this solution, the button would appear disabled.

To enable it we need to add EnableRule to it.

<CommandDefinitions>

<CommandDefinition
Id=Cmd_JavaScript>


<EnableRules>

<EnableRule
Id=Mscrm.Enabled/>

</EnableRules>

<DisplayRules/>

<Actions>

<JavaScriptFunction
Library=$webresource:new_MyJavaScript
FunctionName=HelloWorld>

</JavaScriptFunction>

</Actions>

</CommandDefinition>

</CommandDefinitions>

Now after importing and publishing it

The final RibbonDiffXml looks like this

<RibbonDiffXml>
<CustomActions>
<CustomAction
Id="CA_MyFirstButton"
Location="Mscrm.Form.account.MainTab.Save.Controls._children"
Sequence="31">
<CommandUIDefinition>
<Button
Id="B_MyFirstButton"
Command="Cmd_JavaScript"
LabelText="My First Button"
ToolTipTitle="My First Button Tool Tip Title"
ToolTipDescription="My First Button Tool Tip Description"
TemplateAlias="o1"
Image16by16="/_imgs/ribbon/saveandclose16.png"
Image32by32="/_imgs/ribbon/saveandclose32.png"/>
</CommandUIDefinition>
</CustomAction>
</CustomActions><Templates>
<RibbonTemplates
Id="Mscrm.Templates"/>
</Templates>
<CommandDefinitions>
<CommandDefinition
Id="Cmd_JavaScript">
<EnableRules>
<EnableRule
Id="Mscrm.Enabled"/>
</EnableRules>
<DisplayRules/>
<Actions>
<JavaScriptFunction
Library="$webresource:new_MyJavaScript"
FunctionName="HelloWorld">
</JavaScriptFunction>
</Actions>
</CommandDefinition>
</CommandDefinitions>
<RuleDefinitions>
<TabDisplayRules/>
<DisplayRules/>
<EnableRules/>
</RuleDefinitions>
<LocLabels/>
</RibbonDiffXml>

Hope it helps!

Adding my first custom button in CRM 2011


Suppose we want to add a button next to “Save & Close” button in Account Entity’s form.

To do that we need to define a CustomAction child element to CustomActions element within RibbonDiffXml.

Export the solution containing the account entity.

Attributes for CustomAction are

ID– Give it any unique id.

Location– For defining location we first need to find out the id for Save group within the MainTab of the form and then append _children to it.

_children needs to be defined to add a custom button to an existing group.

Open the accountribbon.xml file within

.. sdk\samplecode\cs\client\ribbon\exportribbonxml\exportedribbonxml\

There we can find the following info.


<Groups Id=”Mscrm.Form.account.MainTab.Groups“>


<Group Id=”
Mscrm.Form.account.MainTab.Save Command=”Mscrm.Enabled Sequence=”10 Title=”$Resources:Ribbon.Form.MainTab.Save Image32by32Popup=”/_imgs/ribbon/save32.png Template=”Mscrm.Templates.Flexible2“>


<Controls Id=”
Mscrm.Form.account.MainTab.Save.Controls“>


<Button Id=”Mscrm.Form.account.SaveAsComplete ToolTipTitle=”$Resources:Ribbon.Form.MainTab.Save.SaveAsComplete ToolTipDescription=”$Resources(EntityDisplayName):Ribbon.Tooltip.SaveAsComplete Command=”Mscrm.SavePrimaryActivityAsComplete Sequence=”10 LabelText=”$Resources:Ribbon.Form.MainTab.Save.SaveAsComplete Alt=”$Resources:Ribbon.Form.MainTab.Save.SaveAsComplete Image16by16=”/_imgs/ribbon/SaveAsCompleted_16.png Image32by32=”/_imgs/ribbon/SaveAsCompleted_32.png TemplateAlias=”o1
/>

Sequence : For sequence first find out the sequence defined for Save & Close button.

<Button Id=”Mscrm.Form.account.SaveAndClose ToolTipTitle=”$Resources:Mscrm_Form_Other_MainTab_Save_SaveAndClose_ToolTipTitle ToolTipDescription=”$Resources(EntityDisplayName):Ribbon.Tooltip.SaveAndClose Command=”Mscrm.SaveAndClosePrimary
Sequence=”30″
LabelText=”$Resources:Ribbon.Form.MainTab.Save.SaveAndClose Alt=”$Resources:Ribbon.Form.MainTab.Save.SaveAndClose Image16by16=”/_imgs/ribbon/saveandclose16.png Image32by32=”/_imgs/ribbon/saveandclose32.png TemplateAlias=”o1
/>

So now our CustomAction should look like this

<CustomAction Id=”CA_MyFirstButton Location=”Mscrm.Form.account.MainTab.Save.Controls._children Sequence=”31“>

Now we next need to define CommandUIDefinition and Button child element to our CustomAction

<CommandUIDefinition>

<Button
Id=B_MyFirstButton


LabelText=My First Button


ToolTipTitle=My First Button Tool Tip Title


ToolTipDescription=My First Button Tool Tip Description


TemplateAlias=o1


Image16by16=/_imgs/ribbon/saveandclose16.png


Image32by32=/_imgs/ribbon/saveandclose32.png

/>

</CommandUIDefinition>

Here we are using the existing icon of Save and Close button.

Save the file, zip it as a part of the solution and import and publish it.

Final definition should look something like this. 

<RibbonDiffXml>
<CustomActions>
<CustomAction
 Id="CA_MyFirstButton"
 Location="Mscrm.Form.account.MainTab.Save.Controls._children"
 Sequence="31">
<CommandUIDefinition>
<Button
 Id="B_MyFirstButton"
 LabelText="My First Button"
 ToolTipTitle="My First Button Tool Tip Title"
 ToolTipDescription="My First Button Tool Tip Description"
 TemplateAlias="o1"
 Image16by16="/_imgs/ribbon/saveandclose16.png"
 Image32by32="/_imgs/ribbon/saveandclose32.png"/>
</CommandUIDefinition>
</CustomAction>
</CustomActions>
<Templates>
<RibbonTemplates
 Id="Mscrm.Templates"/>
</Templates>
<CommandDefinitions/>
<RuleDefinitions>
<TabDisplayRules/>
<DisplayRules/>
<EnableRules/>
</RuleDefinitions>
<LocLabels/>
</RibbonDiffXml>

Hope it helps !

New Types in CRM 2011


CRM 4.0 Type CRM 2011 Type
   
CrmBoolean Boolean
DynamicEntity[] EntityCollection
CrmDateTime DateTime
CrmDecimal Decimal
CrmFloat Double
CrmNumber Integer
Lookup, Owner, Customer EntityReference
CrmMoney Money
Activityparty[] ActivityParty[]
Key, UniqueIdentifier Guid
String String
Status ,Picklist OptionSetValue

Sample Code for using IOrganizationService in CRM 2011


Just a sample code for quick reference !

Uri organizationUri = new Uri("http://crmservername/orgname/XRMServices/2011/Organization.svc");
Uri homeRealmUri = null;
ClientCredentials credentials = new ClientCredentials();
// set default credentials for OrganizationService
credentials.Windows.ClientCredential = (NetworkCredential)CredentialCache.DefaultCredentials;
// or
credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
OrganizationServiceProxy orgProxy = new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null);
IOrganizationService _service = (IOrganizationService)orgProxy;
try
{
    Entity myAccount = new Entity("account");
    myAccount["name"] = "Test Account";
    _service.Create(myAccount);
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
}

In case of early-bound, don’t forget to add the following line of code

 OrganizationServiceProxy _serviceProxy = new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null);
 // This statement is required to enable early-bound type support.
  _serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
 

For Office 365 check this post
https://nishantrana.wordpress.com/2012/12/06/sample-code-to-connect-office-365-users-to-crm-2011-online/
Bye.


			

Url to edit Connection Role in CRM 2011


Hi,

I had to disable some of the existing connection role and had to define new one.  Was not able to find a page(grid view) from which i could do that easily.So used the following url to edit the Connection Role

http://servser:port/orgname/_root/homepage.aspx?etc=3231

Please let me know from where we can do it easily within CRM UI  itself.

Hiding Collaborate,Process and Data group from Contact Entity in CRM 2011


Hi,

 we could make use of following xml definition for that

Hides from Grid

<HideCustomAction Location=”Mscrm.HomepageGrid.contact.MainTab.ExportData” HideActionId=”Sample.HomepageGrid.contact.MainTab.ExportData.HideAction”/>
<HideCustomAction Location=”Mscrm.HomepageGrid.contact.MainTab.Collaborate” HideActionId=”Sample.HomepageGrid.contact.MainTab.Collaborate.HideAction”/>
<HideCustomAction Location=”Mscrm.HomepageGrid.contact.MainTab.Workflow” HideActionId=”Sample.HomepageGrid.contact.MainTab.Workflow.HideAction”/>

Hides from form
<HideCustomAction Location=”Mscrm.Form.contact.MainTab.ExportData” HideActionId=”Mscrm.Form.contact.MainTab.ExportData.HideAction”/>
<HideCustomAction Location=”Mscrm.Form.contact.MainTab.Collaborate” HideActionId=”Mscrm.Form.contact.MainTab.Collaborate.HideAction”/>
<HideCustomAction Location=”Mscrm.Form.contact.MainTab.Workflow” HideActionId=”Mscrm.Form.contact.MainTab.Workflow.HideAction”/>

We can get the Location value from the following sample code of sdk

…….\sdk\samplecode\cs\client\ribbon\exportribbonxml\exportedribbonxml

Hope it helps !