59 Thursday, December 22, 2016 |
Suresh Maurya
Dynamics CRM Consultant at IBM

What is difference between early and late binding?

Key difference between early and late binding involves type conversion. Whereas early binding provides compile-time checking of all types so that no implicit casts occur, late binding checks types only when the object is created or an action is performed on the type. The Entity class requires types to be explicitly specified to prevent implicit casts.

Microsoft Dynamics CRM 2011 - Strategy for Lowering CoGs

Microsoft Dynamics CRM Sales Process Management

Watch this 7 minute video demonstration to learn how Microsoft Dynamics CRM can streamline, drive and control the complete sales cycle of your business. Contact one of our experts for more information. W: www.pa.com.au E: microsoftinfo@pa.com.au T: 1800 126 499

Product : Pricing Methods

The available options are as follows:

  • Currency Amount: Use this to ignore a product's list price in the product catalog and to enter a different price manually for this price list.
  • Percent of List: Use this to calculate a product's price in the price list as a percentage of its list price.
  • Percent Markup: Current Cost: Use this to add a percent markup on top of the current cost entered in the product catalog. This is also available for the Standard Cost field.
  • Percent Margin: Current Cost: Use this for the price offered in the price list to yield a percentage margin of the current cost. This is also available for Standard Cost.

Customer self-service with Microsoft Dynamics CRM

Make it easy for customers to solve issues on their own. Provide a customizable online support portal that leverages an organized, searchable knowledge base to deliver real-time updates, consistent answers to service questions and product and service information and documentation. And, with the ability to submit cases directly from the self-service portal, brands can get the right case to the right agent for fast and effective service resolution.

What is Impersonation ?

Impersonation is used to execute business logic (custom code) on behalf of a Microsoft Dynamics CRM system user to provide a desired feature or service for that user.

Microsoft Dynamics CRM 2013 Processes New Features - Real Time Workflows

[Job] - Accenture: Microsoft Dynamics CRM, India

Accenture

Company: Accenture

Location: Pune, India

 

Job description

"Role:- Developer Years of experience:- 3 to 4 years

Must to have:-

• Experience with Microsoft CRM 2011 Modules and features related

• Experience with Microsoft CRM 2011 customizations and Configuration [Sitemap, Writing jScripts, Developing/Registering plug-ins, workflows and dialogs, SDK, importing data and CRM Deployment Manager

• Experience with developing and implementing web/windows applications with Microsoft Visual Studio .Net

• Experience with developing XML Web Services and Server components

• Experience in writing oData and Linq

• Identify build or development changes, code and peer reviews and unit testing

• Experienced working on development project Good to have:"


- Basic qualifications

Full Time Graduation

Email Router Demystified in MS CRM Part -2

Troubleshooting Outgoing email issues

To do this, we need to reference the mail flow diagrams shown in the Explanation post previously.  We’ll first cover the Outgoing portion of the Email Router.

Troubleshooting Outgoing email issues is the not a difficult part of the Email Router to troubleshoot.  The reason is that there are only two different configuration options, SMTP or Exchange Online.  Realistically, you troubleshoot these the same way.  Obviously we have some restrictions during the troubleshooting steps when working with Exchange Online but these should be pretty obvious.  Let’s go ahead and get into troubleshooting at this point.

 

The first thing to know about troubleshooting the Email Router is to remember the traffic flow.  This was shown in the second post of this series but I have included it here as well:

 

Each step represents a potential break point.  The key to troubleshooting is to understand where the error occurs and what the error is telling you.  So how can we determine where the issue lies?

 

The first step to this is to understand, what’s the state of the email within CRM?  There are three status the email can be when in CRM. 

  1. Pending Send
  2. Sending
  3. Sent

What’s an easy way of understanding what emails are in which state?  The typical recommendation I have made to our customers is to use Advanced Find on the E-mail Messages entity.  When building your Advanced Find, you will want to ensure you have, at minimum, the following columns: Subject, From, To, Status Reason, No of Delivery Attempts.

Note: The one thing I want to ensure is pointed out is the last column of No. Of Delivery Attempts.  This tells us how many times the Email Router has tried to send the email.  Anytime it goes from Pending Send to Sending, it increments this attempt by 1.  We delay sending emails that have higher Delivery Attempt counts.

Each of the email statuses signify a different step within the mail flow diagram above.  Let’s review each of these now:

  1. Pending Send: Pending Send means that the email router has not processed this email message yet or there was an error when it did process it and put it back into a pending send status to try to send it again at a different time.  The key to knowing how to differentiate these is to look at the Advanced Find.
     
    One Pending email with the Subject of “Failing Email” shows that the router has tried sending the email five times and it’s still unable to do so since the Status Reason is still Pending Send.  This tells me that there is an issue between the Email Router and the Outgoing service (SMTP or Exchange Online).  The email router was able to retrieve the message from the CRM server, validated the user information within CRM, and submitted it to the Outgoing service to be delivered.   For some reason, the outgoing attempt failed for this email and I can review the Event Viewer Application Logs for more information.   The other email in a Pending Send state, shows the delivery attempts as 0.  This means the router has not yet picked up this email for processing.  This could be due to quite a few reasons. 
    1. The User’s profile does not list E-mail Router in the Email Access Configuration for Outgoing:
    2. The user is not listed in the Email Router Configuration Manager after clicking on Load Data:

      This could be due to the Email Access Configuration for the user not set to Email Router for Outgoing or the user’s email address has not been approved.
    3. The user does have Email Access Configuration set to Outgoing and is in the Email Router Configuration Manager but the user’s GUID <UserId> is not present in the Microsoft.Crm.Tools.EmailAgent.xml file:

      In this case, the user’s GUID is B8DD579B-501D-E211-AA2E-00155D51F43.  The reason could be that after the user’s settings were changed to Email Router (Email Access Configuration) no one went back in the Email Router Configuration Manager and clicked on Load Data and Publish.
    4. The user’s Personal Options do not allow the Email Router to do processing on their behalf.

      CRM 2011:

      CRM 2013:

      The setting for “Allow other Microsoft Dynamics CRM users to send e-mail on your behalf” is needed for those that generate emails and change the from field to use your account.  

      The setting “Allow E-mail Router to use my credentials to send and receive e-mail on my behalf” is required when the Outgoing profile within the Email Router Configuration Manager is set to User Specified for Access Credentials.
  2. Sending: Sending means the Email Router is currently processing the message.  It has already accepted it from CRM and is currently waiting for the Outgoing service to accept the message.  A failure here would send the email back into a Pending Send status and then Delivery Attempts would have been incremented.  If the issue is occurring at this step, then you are going to need to use some additional tools suggested below in the “Outgoing Protocols” section.
  3. Sent: This means that the Outgoing service has accepted the email for delivery and now it is up to the Email service to get the email to the To and CC addresses. 

Outgoing Protocols

We also need to understand the protocols being used for the Outgoing profile.  Each scenario dictates different types of tools and troubleshooting:

SMTP:

The main troubleshooting tool we will use for troubleshooting SMTP issues is some sort of network sniffer such as Microsoft Network Monitor (NetMon) or WireShark.  Being the company man that I am, let’s take a look at what NetMon will show us. 

 

By adding a Filter of “ProtocolName == “SMTP”, I can easily see all of the SMTP traffic.  Now the error the
problem email is the following:

 

Looking through the traffic, I can see that the Exchange server, for “some reason” is throwing Reset packets:

 

By looking at the NetMon traffic, I knew the issue was coming from the Exchange server and there must be some sort of configuration problem on that particular server.  If the issue was intermittent, maybe it was one of the servers in the environment having problems.  After doing further troubleshooting, it was found that, the firewall on the Exchange server was blocking the traffic from the CRM server. 

Exchange Online:

Exchange Online is using Exchange Web Services (EWS) to send emails.  In this case, we can use Fiddler to see what the response coming back to CRM is.

Additionally, we can use a tool called EWSEditor found on CodePlex.  EWSEditor allows us to emulate the same requests as what is being done by the Email Router.  In the screenshot above, you can see that CRM is making an EWS call to GetFolder.  You’ll notice that the Email Router is going to use the schema version for Exchange 2007 SP1, just a tip when using EWS Editor.  We’ll get into the actual usage in a tools post here.

The next part of this post is to cover Troubleshooting Incoming email issues.

[Job] - Accenture: Microsoft Dynamics CRM, India

Accenture

Company: Accenture

Location: Mumbai, India

 

- Job description

"Role:- Developer
Years of experience:- 3 to 4 years
 
Must to have:-
• Experience with Microsoft CRM 2011 Modules and features related
• Experience with Microsoft CRM 2011 customizations and Configuration [Sitemap, Writing jScripts, Developing/Registering plug-ins, workflows and dialogs, SDK, importing data and CRM Deployment Manager
• Experience with developing and implementing web/windows applications with Microsoft Visual Studio .Net
• Experience with developing XML Web Services and Server components
• Experience in writing oData and Linq
• Identify build or development changes, code and peer reviews and unit testing
• Experienced working on development project Good to have:"

- Basic qualifications

Full Time Graduation

Generate early bound entity classes with the code generation tool (CrmSvcUtil.exe)

CrmSvcUtil.exe is a command line tool which can generate early bound classes for Microsoft Dynamics CRM. Output file can be C# or VB.Net file.

Generated file contains 

  • All entities, one partial class for each entity
  • All attributes
  • All relationships

These strongly typed classes provide early binding and Intellisense support in Microsoft Visual Studio.

Generated file can be referenced by projects that use Microsoft Dynamics CRM. Following assemblies must also be referenced in that project

  • Microsoft.Crm.Sdk.Proxy.dll
  • Microsoft.Xrm.Sdk.dll

These assemblies can be found in SDK\bin folder of the SDK.

Running code generation tool

Make sure Microsoft.Xrm.Sdk.dll  assembly is in same folder.

For On-premises

CrmSvcUtil.exe /url:http://<serverName>/<organizationName>/XRMServices/2011/Organization.svc    /out:<outputFilename>.cs /username:<username> /password:<password> /domain:<domainName>    /namespace:<outputNamespace> /serviceContextName:<serviceContextName>

 

For Microsoft Dynamics CRM Online

CrmSvcUtil.exe /url:https://<organizationUrlName>.api.crm.dynamics.com/XRMServices/2011/Organization.svc    /out:<outputFilename>.cs /username:<username> /password:<password>     /namespace:<outputNamespace> /serviceContextName:<serviceContextName>

 

Correct URL can be found at

Settings > Customization > Developer Resources

To list the supported command-line parameters, use the following command.

CrmSvcUtil.exe /?

 

Parameters

The following table lists the code generation tool parameters and a gives a brief description of their use.

Parameter

Shortcut

Description

Required

deviceid

di

Device ID used when you connect to the Online server for authentication. Only required if the device ID has not been stored on disk in the %USERPROFILE%\LiveDeviceID folder. Only used with the Microsoft account identity provider.

False

devicepassword

dp

Device password that is used when you connect to the Online server for authentication. Only required if the device password has not been stored on disk in the %USERPROFILE%\LiveDeviceID folder. Only used with the Microsoft account identity provider.

False

domain

d

The domain to authenticate against when you connect to the server.

False

url

 

The URL for the Organization service.

True

out

o

The file name for the generated code.

True

language

l

The language to generate the code in. This can be either “CS” or “VB”. The default value is “CS”.

False

namespace

n

The namespace for the generated code. The default is the global namespace.

False

username

u

The user name to use when you connect to the server for authentication.

False

password

p

The password to use when you connect to the server for authentication.

False

servicecontextname

 

The name of the generated organization service context class. If no value is supplied, no service context is created.

False

help

?

Show usage information.

False

nologo

 

Suppress the banner at runtime.

False

generateActions

 

Generate request and response classes for actions.

 

interactivelogin

il

When set to true, a dialog to log into the CRM service is displayed. All other connection related parameters specified on the command line are ignored.

False

connectionstring

connstr

Contains information, provided as a single string, for connecting to a CRM organization. All other connection related parameters specified on the command line are ignored. For more information see Use connection strings in XRM tooling to connect to CRM.

False

 

Usage Examples

On-Premises

CrmSvcUtil.exe /url:https://myport:555/MyOrg/XRMServices/2011/Organization.svc /out:GeneratedCode.cs /username:administrator /password:password

Microsoft Dynamics CRM Online -  Microsoft Identity Provider

CrmSvcUtil.exe /url:https://myorg.api.crm.dynamics.com/XRMServices/2011/Organization.svc /out:GeneratedCode.cs /username:"myname@live.com" /password:"myp@ssword!"


Microsoft Dynamics CRM Online -  Microsoft Office 365 

CrmSvcUtil.exe /url:https://myorg.api.crm.dynamics.com/XRMServices/2011/Organization.svc /out:GeneratedCode.cs /username:"myname@myorg.onmicrosoft.com" /password:"myp@ssword!"

Claims Authentication - IFD

CrmSvcUtil.exe /url:https://myorg.crm.com:555/XRMServices/2011/Organization.svc /out:GeneratedCode.cs /username:administrator /password:p@ssword! 

 

Use the Configuration File

The CrmSvcUtil.exe.config configuration file must be in the same folder as the CrmSvcUtil.exe tool.

If you enter a value at the command line, that value will be used instead of the one in the configuration file. 

Do not include the url and namespace parameters in the configuration file. These must be entered from the command line when the CrmSvcUtil.exe tool is being run.

The following sample shows how to configure the output file and the domain name parameters in the application configuration file using shortcut keys.

<appSettings> <add key="o" value="CrmProxy.cs"/> <add key="d" value="mydomain"/></appSettings>
 

Enable Tracing

To enable tracing when you run the tool, add the following lines to the configuration file:
<system.diagnostics> 
   <trace autoflush="false" indentsize="4"> 
      <listeners> 
         <add name="configConsoleListener" type="System.Diagnostics.ConsoleTraceListener"> 
            <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error" /> 
         </add> 
      </listeners> 
   </trace> 
</system.diagnostics>
 

Color Grid for Dynamics 365

Color Form for Dynamics 365