Pages

Thursday, 25 July 2013

CRM 2011: Signing the Plug-in Assembly

Only signed plug-in assemblies are allowed to be registered on Microsoft Dynamics CRM 2011.

To sign an assembly with a strong name, it must have a public/private key pair.

The assembly can be signed using
  • Microsoft Visual Studio, OR
  • Strong Name Tool (sn.exe)

Using Microsoft Visual Studio (UI)

Follow these steps to sign the assembly using Microsoft Visual Studio 2010
  1. Right-click the project and click "Properties".
  2. Select "Signing".
  3. Check "Sign the assembly".
  4. Select an existing key or create a new one.
  5. Save the properties.
  6. Rebuild the DLL.

Using Strong Name Tool (sn.exe)

  1. Open Visual Studio 2010 Command Prompt
  2. Run the command, sn -k [filename]

Refer to Microsoft's documentation for more information.

Monday, 22 July 2013

CRM 2011: Limited/reduced functionality of Sandboxed plug-ins

Microsoft recommends running plug-ins in a sandbox mode. The plug-ins running in a sandboxed environment have reduced functionality to ensure security.

The following network access restrictions apply to this sandbox capability.

  • Only HTTP and HTTPS protocols are allowed.
  • Access to localhost is not permitted.
  • Plug-ins must rely on DNS name resolution (using a named web address).
  • Anonymous authentication is recommended and supported by Microsoft.
  • .NET framework classes can be used in the plug-in code to access web resources considering previously outlined restrictions.
Refer to Microsoft's documentation for further information.

Monday, 15 July 2013

CRM 2011: Plug-in Isolation(Sandbox), Trusts and Statistics

Plug-in Isolation (Sandbox Mode)

Microsoft Dynamics CRM 2011 supports the execution of plug-ins in an isolated environment, also known as Sandbox.

A Sandbox plug-in can access
  •  Microsoft Dynamics CRM SDK web services
  • External endpoints just as Windows Azure cloud and other common web services
and CANNOT access the following
  • File system
  • System event log
  • Network and more 
The execution of plug-ins in a sandbox mode is recommended by Microsoft because 
  • It is more secure
  • It supports run-time monitoring and statistics reporting
  • It is supported for all Microsoft Dynamics CRM deployments

Full and Partial Trusts

Plug-ins can be registered
  • In the sandbox mode, known as partial trust
  • Outside the sandbox mode, known as full trust
The table illustrates the deployment types and the supported trust level.






Run-time Statistics  

The Microsoft Dynamics CRM platform collects run-time statistics and also monitors the plug-ins that execute in a sandbox mode. If sandbox worker process exceeds the threshold utilisation of resources or is unresponsive then the CRM platform ends the process, this won't impact the other organisations because each organisation has its own sandbox worker process. This information is stored in the database table "PluginTypeStatistic". 



Friday, 12 July 2013

CRM 2013: Orion - Screenshots

CRM 2013 - Orion (Application Screenshots)


CRM 2013 - Orion (Mobile Screenshots)


Credits: North52

CRM 2011: Workflow Activity Input and Output Parameters & Data Types

Microsoft Dynamics CRM supports two types of parameters for a workflow activity.
  • Input Parameters
  • Output Parameters

Input Parameters

The input parameter is annotated with the .NET attribute "Input".


DefaultAttribute

DefaultAttribute class can be used to specify a default value (using "Default" attribute) for an input parameter. 


Bool

[Input("Bool input")]
[Output("Bool output")]
[Default("True")]
public InOutArgument<bool> Bool { get; set; }


DateTime

[Input("DateTime input")]
[Output("DateTime output")]
[Default("2013-07-09T02:54:00Z")]
public InOutArgument<DateTime> DateTime { get; set; }


Decimal

[Input("Decimal input")]
[Output("Decimal output")]
[Default("20.75")]
public InOutArgument<decimal> Decimal { get; set; }


Double

[Input("Double input")]
[Output("Double output")]
[Default("200.2")]
public InOutArgument<double> Double { get; set; }


Integer

[Input("Int input")]
[Output("Int output")]
[Default("2322")]
public InOutArgument<int> Int { get; set; }


Money (Currency)

[Input("Money input")]
[Output("Money output")] 
[Default("232.3")]
public InOutArgument<Money> Money { get; set; }


OptionSetValue

[Input("OptionSetValue input")]
[Output("OptionSetValue output")]
[AttributeTarget("account", "industrycode")]
[Default("3")]
public InOutArgument<OptionSetValue> OptionSetValue { get; set; }
Attribute Target must specify the entity and attribute being referenced. 


String

[Input("String input")]
[Output("String output")]
[Default("string default")]
public InOutArgument<string> String { get; set; }


Entity Reference

[Input("EntityReference input")]
[Output("EntityReference output")]
[ReferenceTarget("account")]
[Default("3B036E3E-94F9-DE11-B508-00155DBA2902", "account")]
public InOutArgument<EntityReference> AccountReference { get; set; }
Reference Target attribute must specify the type of entity being referenced. 


Required Argument Attribute 

System.Activities.RequiredArgumentAttribute class can be used to specify that the input parameter is required.

[RequiredArgument]
[Input("Update next Anniversary date for")]
[ReferenceTarget("contact")]
public InArgument<EntityReference> Contact { get; set; }


Output Parameters

The output parameter is annotated with the .NET attribute "Output"

//this is the name of the parameter that will be returned back to the workflow
[Output("Credit Score")]
//this line identifies the specific attribute which will be passed back to the workflow
[AttributeTarget(CustomEntity, "new_creditscore")]
//this line declares the output parameter and declares the proper data type of the parameter being passed back.
public OutArgument<int> CreditScore {get;set;}

Refer to Microsoft documentation for more details

Tuesday, 9 July 2013