Quantcast
Channel: Hosk's Dynamic CRM Blog : crm 2011
Viewing all 469 articles
Browse latest View live

CRM 2013 – What is the WRPC Token and resolving INVALID_WRPC_TOKEN errors

$
0
0

Program testing can be used to show the presence of bugs, but never to show their absence!

 

I was tasked with load testing Microsoft Dynamics CRM 2013 and I quickly ran into some problems getting INVALID_WRPC_TOKEN error

Performance Testing

We tried to use Telerik for performance testing but this ended in failure because we couldn’t get the encoded guids from the responses.

So I am now trying Visual Studio Web Performance and Load tests, which you need Visual studio 2013 Ultimate or Visual studio 2015 Enterprise editions.

Visual studio – Web Performance and Load Test Project

token error 0

I won’t go into performance testing in this post but focus on the pesky token error.  Please take into account when I do mention performance testing I might get things completely wrong, this is because I’m learning about it, using the tried and tested way of trying it and making lots of mistakes (feel free to correct me in the comments)

How did I get the error

When you do performance testing you go through this process

  1. you click start recording
  2. this brings up an Internet Explorer browser
  3. Run through the process you want to test
  4. Stop recording

This captures all the HTTP traffic (looks like a fiddler trace).  If you haven’t used Fiddler I would recommend these two links to get started

When I ran the test of my recording I got an INVALID_WRPC_TOKEN error

token error

Which leads me to the question, what is an WRPC token?

What is a WRPC token

The first place to start the search should be the CRM SDK – Why CRM Developers should always start with the CRM SDK

It took quite a lot of searching but I finally got to this page

Key management in Microsoft Dynamics CRM

Microsoft Dynamics CRM uses two kinds of private encryption keys for deployments accessed over the Internet:

Web remote procedure call (WRPC) token key. This key is used to generate a security token, which helps make sure that the request originated from the user who made the request. This security token decreases the likelihood of certain attacks, such as a cross-site request forgery (one-click) attack.

 

The WRPC key’s purpose is to stop people using programs to send requests to CRM and trick it into return data.

The WRPC token is embedded into each request.  You maybe thinking once you work out the token you can use it every time time.

Back to the Microsoft page Key management in Microsoft Dynamics CRM for another quote

Key Regeneration and renewal

CRM ticket keys are automatically generated and renewed and then distributed, or deployed, to all computers running Microsoft Dynamics CRM or running a specific Microsoft Dynamics CRM Server 2013 role. These keys are regenerated periodically and, in turn, replace the previous keys. By default, key regeneration occurs every 24 hours.

 

I have bolded the key part, key regeneration occurs every 24 hours.  This is great for stopping bad people making naughty requests but it’s not so good for my load testing script which has the WRPC token embedded into it’s recording.

Other WRPC Token errors

Whilst I was searching for information about the WRPC token I found a few more errors I have listed below

An old CRM 4 error by the awesome David Jennaway, who sadly never writes about CRM on his blog any more, he used to be an awesome source of CRM developer information.  The first link is a discussion about it.

INVALID_WRPC_TOKEN: Validate WRPC Token: WRPCTokenState=Invalid, TOKEN_EXPIRY=4320, IGNORE_TOKEN=False, MS CRM 2011

It seems you can get a token error if you open CRM in two different browsers!

Access denied error on closing of Appointment in CRM 2011

The blog was getting an error when they changed to HTTPS binding.

INVALID_WRPC_TOKEN at associating records thru CRM 2011 UI

Unexpected error while bulk edit

Work around for token errors

The only workaround I have found with regards to WRPC token is to disable the token being used.

I found the answer on this blog page

You can add a registry key which will disable the CRM token check.

On the CRM Server, open REGEDIT

Go to

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM

Create a DWORD registry key with the name IgnoreTokenCheck

Set the value to 1

Restart IIS or Recycle App pool

 

As with a lot of workaround this does mean your CRM is more open to cross site scripting attacks.

I wouldn’t recommend this for a production environment, unless it’s only a short term fix.

Back to my Web performance testing

I disable the check and my recordings were working without error.

Talking about Performance testing, Microsoft have released the CRM Peformance Toolkit for CRM 2015 but which is compatible with CRM 2013 (for free)

CRM-Performance-Toolkit for CRM 2013/CRM2015 is released

The tests will test all default entities and will provide a good starting point for creating your own tests.

Hopefully these tests will provide a way to get the WRPC token and save it as a parameter because turning off the WRPC token will only work for on premise CRM organisation because you cannot turn off this setting for CRM Online (you don’t have access to the server).

Hopefully with a bit of digging around I can work out how Microsoft have got round this WRPC token problem I was experiencing.

 

 


Filed under: CRM 2011, CRM 2013, CRM 2015, Performance Testing

How to create realistic Test Data for your CRM Project and why you should

$
0
0

True happiness comes from the joy of deeds well done, the zest of creating things new.

 

Poor quality and inconsistent data in your CRM database = bugs and odd behaviour out of CRM customizations and CRM demo’s – Hosk

 

Test data which doesn’t replicate live data in your CRM environment can cause bugs and create havoc in demo’s but few CRM developers or companies have realistic dummy data available to import.

Have you been in these situations

Whilst showing new functionality, unexplained errors disrupt the demo

or

Setting up a new CRM environment, finding the process is bottle necked by bad data (which always takes longer than you think to import and get right)

Create good data once and import many times

Being able to import dummy data into different CRM organisations and different CRM projects is a valuable resource, making it worth the effort to create your dummy data files.

Useful  and reusable data is contacts, accounts, tasks, phone calls, emails, Address, Text

Developers and Data

All CRM systems need data to use it. without data your beautiful CRM solution is like a car without petrol, it won’t do anything. – Hosk

CRM developers don’t like dealing with data requirements for a project (because it’s a task which isn’t coding).

Getting your data in a format which can be imported into a CRM organisation is great because often during CRM projects you will need to setup and move data between lots of different CRM environments e.g.

  • Dev
  • Test
  • Customer Test
  • Pre-Production
  • Production

Characteristics of good CRM project are well structured, organised and all aspects are planned and prepared.  Data preparation and importing between environments should be easy with minimal effort required by the developers.

Avoid data technical debt by ensuring data files are kept up to date and stored in source control, all developers should no the location and the steps to import the data.  Don’t burden one developer with importing the data, it’s not pleasurable for the developer and the project can become dependent on the developer, which can cause problems.

On a chaotic CRM project the data import/export process will be ad hoc, not defined and a confusing and time consuming process, prone to missing chunks of data.

The time spent on creating and updating the data to move between CRM organisations is time well spent.  In the long term it will make a unpopular tasks manageable and will save you time (particular with bugs caused by bad data)

Importing data is simple

Microsoft Dynamics CRM comes with an easy to use Data Import Wizard for import small to medium amounts of data.  Below is a guide how to use the Data import wizard.

CRM 2013 – Importing users using the Data Import Wizard

The data import wizard is a great tool for importing small amounts of data quickly.   The data enrich functionality when used with the advanced find is a great way to bulk edit

  • Select records
  • Update records (could be a non CRM user)
  • Import and update those records

The enrichment process is explained in my blog post Why the advanced find is a CRM Developers best friend.

CRM 2016 may has some new functionality called  the Bulk Data loader, which might offer an alternative for importing data. You can read about the new CRM 2016 features in the blog post – What’s new in CRM 2016 and why you should read the preview guide

Sample data in CRM

Microsoft includes sample data and you can add and remove it by going into

Settings –> Data Management — Sample Data

sample data

Click on the Sample data you can install\uninstall the data.

Step by step instructions can be found here

Adding and Removing Sample Data in Dynamics CRM 2013

before you can import data you need to create some.

Why create realistic dummy data?

Good data in CRM database can help find bugs, bad data can help create bugs – Hosk

Setting up environments and data importing are often unpopular jobs for CRM developers (Developers favourite activity is coding and any other activities get in the way!)

In most projects you will need to create accounts, contacts and maybe some records.  Consider it’s likely you will need to set-up lots of different environments so you want to get on top of your data requirements.

What is developer/test data?

If I use the term bad data I am referring to what I call developer data.  Developer data is data created by developers or testers which doesn’t accurately replicate the data created in production or the data which will exist in the production environment.

You could create lots of data with Test e.g Test1, Test2, Test3, perhaps with a number counter appended.  The problems I have found with poor test data

  • Not testing your customization’s with realistic data, can delay finding bugs until you hit the live system with real data
  • Test data can make understanding and using the system confusing
  • It can give a bad impression to the customer (similar to the broken window theory)
  • https://en.wikipedia.org/wiki/Broken_windows_theory
  • Bad data can cause bugs
  • Good data can find bugs

Realistic data or random data can help find bugs in your system.  Developers will put simple data into a system (usually as fast as they can), this allows bugs to not found.  This is one cause of bugs being uncovered in the live system, when real data is imported into the system you can find errors appearing

  • The code doesn’t like comma’s, hyphens or quotes
  • length or size errors
  • null errors
  • unexpected types of data

Data imported into a CRM organisation stretches, pushes and pulls the system to see if it brakes.

Why do developers create developer data

Developers do not and often don’t need to know how the end users will use a feature.  In many situations developers will be given a technical specification document with a list of required features to implement.  A developer will learn enough about the customization to create it but will lack the detailed knowledge of the business analyst who captured the requirements and wrote the functional specification.

If a developer isn’t clear how the functionality will be used it’s difficult for the developer to put in realistic data, instead developers input data in the correct format (e.g. string, number).

A developers goal when developing is to test the code navigates through the various paths of code, read my blog post to learn more about this – Don’t just test the happy path

  • Happy path (when it works)
  • Alternative path (other routes through the code/customization)
  • Exception path (when things go wrong)

The developers goal is to put in as small amount of data to be able to test the different code/customization paths.

The unrealistic data used by developers and developers use of System Administrator security role highlight why companies should test functionality with testers in a different CRM environment from the developers CRM environment.

Don’t let bugs get into production environments

 

Benefits of realistic data

The benefits of creating realistic dummy data is the ability to import data into your existing CRM project and future projects.

  • Contacts and Account data are reusable
  • You do the effort once, reap the rewards of your efforts many times over
  • Customer safe data ready to important
  • Save time and effort creating the data for every project
  • Ease of use

I found contact data import data I created for a project using the the website Mockaroo.  I got the files and imported them into my test system, first go without problems.

boom 500 contacts with realistic names, phone numbers and email addresses which imported straight into CRM.

Make sure you import the data and fix all the errors.

Good data should import with out errors.

Tools to create Test data

I have found three websites to create test data, please leave other good sites in the comments.  I looked at free websites to create the data

Database Test Data

A basic website with an easy to use interface.   It’s not as complex as the other two does have a lot of useful functions.  The biggest plus for this site is there is no limit on records created.

  • Auto-increment
  • Username
  • Create words, sentences and paragraphs
  • Email, Phone Number, Address
  • DataTime, Date, Time

link – Database Test Data

Pro’s

  • Easy and quick to use
  • Export file in JSON, CSV, XML
  • No Limit on data exported
  • You can save recipe (columns and data structure)

Con’s

  • 3 export choices
  • Smaller choice of columns

Mockeroo

Url – Mockaroo

Mockaroo is a great site with a lot of functionality to create common columns in data import.  The preview function is handy.  The is a limit of 1000 rows of data unless you would like to sign up for a data plan which starts at $50 dollars a year.

Mockaroo organises the fields you can add into various section, the location field creation functionality has the options below

Mockaroo

The IT has useful fields

Mockaroo 2

Mockaroo 3

Pro’s

  • Easy to use
  • Export file in CSV, JSON, SQL, and Excel formats.
  • You can save recipe (columns and data structure)

Con’s

Generate Data

Generate Data

Generate Data

I am using it to create sample data for demos and internal testing.

It’s also a great tool to validate your entity model early in the process. When entering loads of data, you can quickly see holes in the model when data sets do not align!

http://www.generatedata.com/#t1

Generate Data.jpg

https://www.mockaroo.com/

Lets you create 1000 rows of data

http://www.databasetestdata.com/

 


Filed under: CRM 2011

CRM 2013 – Why wasn’t an updated Custom workflow used by CRM?

$
0
0

You mustbethe change you wish toseeintheworld.

A custom workflow was published, but CRM continued to use the old custom workflow.  This error frustrated the developer for a while before diagnosing the problem.

CRM developers must understand the CRM architecture and CRM SDK, the alternative is fixing problems using trial and error.

trial-and-error method of find solutions is a lottery, sometimes you find the solution quickly, other times you try many alternatives.

The CRM SDK is a map showing boundaries and location of major CRM SDK landmarks.  Developers navigate the CRM landscape creating suitable customizations for customer requirements.  CRM developers who don’t consult the CRM SDK (map) can get lost and not know how to get back on course.

The Problem

A CRM developer updated a Custom workflow, published the custom workflow, but the old custom workflow was still running.

Experienced CRM developers will nod their head at this rite of passage.

The quick answer

Recycling the CRM app pool refreshed the custom workflow, doing an IISRESET resolve the problem.

Be careful recycling the CRM app pool or doing an IISRESET on production systems, it will disrupt users sessions.  IISRESETS and CRM app pool recycle should be done out of hours where possible.

The reason this worked is the custom workflow had changed the parameters passed in.

Detailed explanation

Thinking isthe hardest workthereis, whichisprobablythereason whysofew engage in it.

Learning how the CRM works, helps diagnose future problems and avoid making similar mistakes.  The CRM developer centre is a great resource to help navigate the CRM SDK.

CRM developers benefit from learning the CRM SDK and CRM Developers should always start with the CRM SDK, understanding how it works and its quirks.

The better you understand how CRM works the fewer error/mistakes and dead ends you will make.  Dead ends can waste time because

  • Create a customization
  • find it doesn’t work
  • Remove customization
  • Have to create another customization

CRM is the framework sitting on top of languages JavaScript and .NET,  you need to learn CRM as well the programming languages.  This explains why .NET developers struggle with CRM development

Custom workflows and developer fear

CRM developers can fear custom workflows if they have never created one.  Custom workflows share many characteristics of plugins but have some fundamental differences.

One of the main differences is how the Custom Workflow variables are passed in but the key difference is plugins must run within 2 minutes or the plugin times out, throws an error and rolls back any changes.

Custom workflows are often used for long running process.

Here is an example of linking a dialog and a custom workflow

The blog below is common Custom Workflow question

CRM 2013 – How to get guid of initiating record in CustomWorkflow

Before you have created a customization, there is a doubt you can successfully create the customization.  The developer often has theoretical knowledge but not the practical experience.

The best method to remove this developer fear is to do it, it’s often not as difficult as your mind tells you it MIGHT be.

Why didn’t the Custom Workflow seem to publish

I remember this topic from a previous blog post

A Custom workflow is Asynchronous, running after the plugin execution pipeline has finished.  Async processes (System Jobs) are managed by the Async Queue Manager which decides what System job runs next.

The Async processes can never guarantee when they will run because the Async Queue manager decides what is run. It could be 3 seconds or it could be 2 days (unlikely but possible).

Microsoft have a great page – Asynchronous service in Microsoft Dynamics CRM, all CRM developers should be made to read this.

To refresh my knowledge on Async plugins blog posts

Async process are

  • Async plugins
  • Custom Workflows
  • Workflows
  • Bulk Delete jobs
  • System Jobs
  • Bulk Import

The CRM Asynchronous Service runs on the CRM server services (it could be on the back end server)

Recycling the app pool/doing an IISRESET resolved the problem but why?.  I looked towards the effects of IISRESET’s on plugins.

If you deploy plugins to the CRM database you should not need to restart the CRM async services or do an IISRESET.

To understand the effects of an IISREST read this post and the section What can you restart and how does it affect plugins.

In my example, I needed to to recycle the app pool/IISRESET, I found the answer article

Do we really need IIS Reset and Async Services restart when we deploy plug-in or custom workflow – CRM 2011

There is one other scenario when you need to recycle the CrmAppPool application pool. If you modify the parametersthat are available for a Custom Workflow Activity, then CRM will not make any new parameters available when editing the workflow until after recycling the application pool.

I think the reason the custom workflow wasn’t updating was because the parameter values might have changed.

Interesting facts on Custom Workflows

A great article on using versioning your Plugins and Custom Workflows

assembly versioning

If you use versioning you will need to select the new version because both versions will now be deployed.

Some best practices/gotcha here – Asynchronous service in Microsoft Dynamics CRM

You should stop the asynchronous service before you unregister a plug-in that was registered to execute asynchronously. Stopping the service prevents a situation where an asynchronous registered plug-in has been queued for execution but for which there is no plug-in assembly currently registered. For example, consider the situation in which a plug-in has been registered to execute asynchronously and the related event has fired. After the asynchronous operation has been queued by the queue manager, you then unregister (delete) the plug-in assembly from the Microsoft Dynamics CRM database. In this case, an error occurs when the asynchronous service tries to execute the queued asynchronous operation but the plug-in assembly no longer exists.

 


Filed under: CRM 2011, CRM 2013, CRM 2015

Hosk’s Top CRM Articles of the week – 13th October

$
0
0

I have been writing performance test scripts for Microsoft Dynamics CRM 2013 over the last week.  I now realise the reason for the lack of blogs posts and information on performance testing with Dynamics CRM.  I am using Visual Studio 2013 ultimate Web Performance and load tests and its frustrating, slow, difficult.

The main difficulties arise from the number of guids used in CRM.  To move the scripts from one CRM organisation to another, all guids need to be parameterised.

The CRM WRPC token stops scripts rerunning.  I took the easy option and turned off the token, instead of parameterising the token.  Read more here – What is the WRPC Token?

Microsoft released the CRM Performance toolkit, backwards compatible with CRM 2013.  The performance toolkit tests the default entities in CRM.  The good news is its a free performance testing tool, the bad news is its complex, making it difficult to change it to test your custom entities

CRM-Performance-Toolkit for CRM 2013/CRM2015 is released

CRM professional for hire

Hosk CRM Blog reader and CRM Professional Zsolt Zömbik is available for work now.

Why you should Zsolt

  • He reads Hosk’s Dynamic CRM blog
  • His name score extremely highly in scrabble
  • He has beaten Chuck Norris in an arm wrestle
  • When he runs over puddles, it doesn’t even ripple
  • He aims to be the first Microsoft Dynamics CRM professional to do a CRM deployment on Mars!

 One final point, he is ace at CRM.

Quote(s) of the week

The problem with troubleshooting is that trouble shoots back.”– Author Unknown
“Everything is theoretically impossible, until it is done.” – Robert A. Heinlein

People are born; leaders are made.
General Stanley McChrystal

Hosk Wisdom

People are born, CRM developers are made through knowledge of the CRM SDK and CRM project experience – Hosk

Article the week

become a CRM master 

Great concise blog with good advice to improve your CRM developers skills

Best of the Rest

How to create realistic Test Data for your CRM Project and why you should

Creating realistic test data for you project is great.  Create once, use many times.

Bad data can cause bugs

Good data can find bugs

XRM Strikes Back

Good article from CRM MPV Jukka about XRM

CRM Dialog and Custom Workflow example

An example of with a Dialog working with a Custom Workflow

Real time workflow or plugins

Scott Durow explains how Real time workflows work, comparing them to plugin performance

CRM 2013 – Why wasn’t an updated Custom workflow used by CRM?

I deployed a Custom Workflow but CRM wasn’t using it, find out why

How to remove dependencies to CRM Developer Toolkit

How to extract your customizations from the steel ninja grip of the CRM developer toolkit

Upgrading to Microsoft Dynamics CRM 2015? Here’s What You Should Consider

Things not to miss when deciding to upgrade to CRM 2015, things like, has your CRM become a beast!

Dynamics CRM How to access a QuickForm component via Jscript in Turbo Forms

I’m not sure why you would but here’s how

CRM 2013 – What is the WRPC Token and resolving INVALID_WRPC_TOKEN errors

WRPC token is generated every 24 hours to stop cross-site scripting, I bet you didn’t know that.

Using Actions in Microsoft Dynamics CRM 2015

I’m still not convinced by Actions in CRM. I keep reading articles thinking this time it will make sense

Read why Microsoft brought Adxstudio and why it’s good news

CRM 2013 – Understanding Solutions and how they work

Solutions in Microsoft Dynamics CRM give with one hand and bash you over the head with the other

Microsoft Social Engagement 2015 Update 1.2 is ready!

Social engagement continues to improve (which it needed to), check out the new functionality

Don’t just test the happy path

Developers should test the happy path, alternative path and the exception path otherwise you are giving bugs a place to hide

Case study featuring Unified Service Desk

The Unified Service Desk is awesome, why don’t more companies use it?

CRM-Performance-Toolkit for CRM 2013/CRM2015 is released

How to find Javascript files used in Microsoft Dynamics Forms

Find those pesky Javascript files

Get next case functionality for Dynamics CRM

Interesting read

Programming

how to be awesome part 1

Document integration – part 1: some ideas…

A Toolbox of Software Architecture Review Techniques. Part 1: The simplest thing you can do

What Led Amazon to its Own Microservices Architecture

other

morning pages – how to write them

Why you should write morning pages

How Con Artists Exploit Human Behaviour

16 Great Quotes For Software Testers

Shut Up, Sit Down, and Type

Previous top picks

Hosk’s Top CRM Articles of the week – 28th September

Useful Hosk Links

Hosk list Of CRM 2013 Tools

A list and review of CRM 2013 tools, this will probably work in CRM 2015 as well

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

MB2-703 – CRM 2013 Customization and Configuration Certification Information

All the CRM 2013 content to help you pass the exam

HoskWisdom – Hosk Developer Quotes

 Words of Wisdom from the Hosk.  I have written over 900 articles, surely I should have said a few memorable things


Filed under: CRM 2011, CRM 2013, CRM 2015, Hosk’s Top CRM articles of the week

Visual Studio 2013 Intellisense stopped working

$
0
0

I just installed Visual Studio 2013 and annoying the IntelliSense wasn’t working.

Initially I found this slightly annoying, after 5 minutes of not having IntelliSense this became a big issue.

I knew an answer couldn’t be too far away but where because what developer can survive without IntelliSense

IntelliSense worked if I pressed

CTRL + SPACE

Long 20 minutes

It was a long 20 minutes without IntelliSense but I finally found the solution.

Options –> Text Editor –> All Languages

intellisenes

You need to make sure Auto List Members and Parameter information are selected.

They were ticked, but I unticked/ticked the options and hey presto Intellisense was working again.

Useful links

http://www.dirkstrauss.com/coderush-stops-intellisense-working-for-visual-studio-2013/#.VgzwG4VVikr

http://stackoverflow.com/questions/8420303/visual-studio-c-sharp-intellisense-not-automatically-displaying

 

 

 


Filed under: CRM 2011

The pain of setting up CRM Dev environments

$
0
0

“To see what is in front of one’s nose needs a constant struggle.”

George Orwell

Whilst creating a console app to create email records in CRM I find my CRM dev environment working against me rather than assisting me.

Setting up a CRM environment tasks

  • Restore a copy of a CRM organisation
  • Configure the custom project data
  • Configure CRM settings
  • Setting up web service’s (web.config, copying dll‘s)
  • Import data (How to create realistic Test Data for your CRM Project and why you should)
  • setting up users + security
  • testing everything is working

Configuring the data involves having both systems side by side and ensuring environment-specific settings are setup correctly.

Setting up environments is done in copying mode and not thinking mode, which can lead to mistakes.

The frustrating part is I’m not testing but spending time on creating my environment to enable me to test.

Copying and changing data canbe done withnoneedtothink.

Create a plan

You were born to win, but to be a winner, you must plan to win, prepare to win, and expect to win.

When creating a test environment, get a piece of paper and create a list of all the items you need to create/import/setup in order for your new Dev environment to be created successfully.

If you don’t create a list, it’s easy to miss important steps.  Not having a plan is trying to get to a destination without having a map, you will end up wandering around not knowing how near or far you are.

A common scenario is developers end up, installing and setting up lots of different parts of a new DEV system, not keeping track of what they have done.  When the new CRM dev environment doesn’t work they are not sure of the cause because they have changed numerousvariables.

If you don’t create a new Dev organization systematically on creation, you will need to work systematically when trying to diagnose the problems.

It will be less frustrating to set up the Dev organisation systematically.

What if it still isn’t working?

Don’t Assume, Know

The above line is a mantra I use when diagnosing problems, which I discuss in this blog post

CRM 2015 – How to diagnose plugin errors

Make a list of the common problems with setting up your CRM system, check them and tick them off the list.

In this example I found a web service wasn’t working.  I tried checking lots of things, before finding the password for the web service app pool user had expired!

I would have found this problem sooner if I hadn’t assumed it was working

As I mention in Sherlock Hosk and the case of the annoying bug you need to work through potential causes, tick them off and narrow the list of potential problems

When debugging, eliminate what isn’t causing the problem and whatever code or customization is left must be the culprit.  – Sherlock Hosk

Be a finisher

Don’t give up. Every problem you fix is a step nearer to having a new working Dev environment.

Step backfromthe task andhavea break.  This allows you to view problems from a different perspective, giving fresh insights, providing new solutions.

It’s amazing how an impossible problem late one day, is obvious when you start with a fresh mind the next day.

Problems are often solved with clear thinking and not brute force and continued bashing away.  It’s easy to get involved in setting up an environment/instance,  using effort instead of brains.

Difficult tasks is like navigating a maze, sometimes you need to stop, refocus and realise you have gone down a wrong path.

Don’t suffer in silence

Some developers suffer in silence, other suffer loudly with plenty of swear words :)

If you get stuck and can’t resolve the problems then try explaining them to a cardboard developer.

This works by explaining the problem to yourself/cardboard developer you are analysing and thinking logically.  You are giving your brain time and space to think about the problem.

If you are not making progress then it’s time to ask for help.

Most developers don’t mind helping a fellow developer if they can see the developer has tried lots of solutions but is still stuck.  Developers are not so willing to help a lazy developer.

Suffering in silence helps no one, you get frustrated, and the task doesn’t get done.

Part of the job

Setting up new instances or dev environments is a task which isn’t fun or exciting but it has to be done.

It’s in the list with importing solutions to different environments.

It’s better to leave these more manual, less creative tasks to the afternoon when you have depleted your energy, enthusiasm and will power levels.


Filed under: CRM 2011, CRM 2013, CRM 2015

Oi Hosk, Why the lack of blog posts

$
0
0

Be grateful for what you have and stop complaining – it bores everybody else, does you no good, and doesn’t solve any problems.

Zig Ziglar

 

Some blog readers have complained (in a nice way) about the lack of blog posts from the Hosk.

One person said, why don’t you write a blog about not writing blog posts, which would help fix the lack of blog posts.

My first reaction was to say

  • I have been busy
  • I haven’t had time
  • I was ill

Often my instinctive reaction to a question is often defensive and a justification to myself.

Defensive answers are not useful because they don’t tackle the true cause deflect the question from being answered.

The truth is, I haven’t prioritised writing my Hosk CRM blog.  If you reallywanttodosomething you maketimetodo it.  

Quality not Quantity

When writing the blog post Tips on how to become a CRM MVP from CRM MVP’S, which summarises CRM MVP Q&A

I have been trying to increase the quality of posts, by spending more time constructing blog posts (this one excluded) by

  • Make notes on the subject
  • Design the subheadings
  • Write
  • Edit (abouttimemany readers willbe saying)

The goal of writing better quality posts is to create posts with more Hosk thoughts and insights (I do have a page of quotes!).  Do create posts with deeper insights you need to spend more time thinking about a subject.

The Hosk blog grows

I have been blogging for 5 years and have written over 1000 posts on CRM.  The early posts were quiet basic often involving linking to other good blog posts.  In the early blog days what I lacked in skill and original thought I made up for in number of posts.

The early blog posts I viewed the blog as a tool to help share great content on CRM 2011.

As my knowledge and expertease in Microsoft Dynamics CRM grew so has the length, detail and insight in my blog posts.

The Hosk CRM blog has grown in numbers over and this year has already had 50000 more views than last year and for the first time I have clocked up over 500000 views in a year.

CRM MVP – Failed

An initial goal of the blog was to help me achieve CRM MVP status, I learnt like many others, it’s extremely difficult to become a CRM MVP.

A general rule of thumb with regards to becoming a CRM MVP (which I have been told many times)

Thosewhoreallywantto become a CRM MVP, seldom do

 

After 10 nominations (2 and half years)  I believe you can’t become a CRM MVP by just writing a blog.   If you think who are the thought leaders in the Microsoft Dynamics CRM community, the currentlynominated CRM MVP’s offer great advice, insights and best practices for Microsoft Dynamics CRM.

My motivation has changed to focus on creating quality blog posts.  A goal which I stated in New Year Hosk CRM Resolutions

Everyone should write a CRM blog

I believe everyone should write a CRM blog, for these reasons

  • To help others in the CRM community
  • To learn more about CRM
  • Social media content is your professional brand
  • A place to store your CRM knowledge

Writing the Hosk Dynamics CRM blog has been great and I have referred to it as my online CRM Brain in this blog post CRM 2015 – How to diagnose plugin errors.  If I have a CRM error, I usually search the Hosk CRM blog for answers (or google which usually takes me to the Hosk CRM blog).

Writing the blog has created a Hosk CRM brand and most CRM developers I meet have read my blog, which is cool.  It’s useful when going for interviews and in one situation someone went was asking me questions featured on my blog


Filed under: CRM, Hosk Stuff

Hosk’s Top CRM Articles of the week – 26th October

$
0
0

One day you go into work, the work is difficult and boring.

The next day you can go into work and continue working on the same piece of work and it’s interesting, exciting and enjoyable.

The work stayed the same the difference was you and your approach to work.

This lead me to watch , a small pale blue dot from Carl Sagan

Quotes of the week

that IS the question: whether to float with the tide, or to swim for a goal. It is a choice we must all make consciously or unconsciously at one time in our lives.

Hunter S Thompson featured on Farnam Street blog

You can’t change the CRM SDK, you must change to use the CRM SDK to develop suitable customizations for the customers requirements – Hosk Quotes

“Drama is anticipation mingled with uncertainty.”

― William Archer

 

Article of the week

Getting started with CRM development

A great list of resources to get started with CRM development.  There is a wealth of information available for CRM developers and this blog rounds up the Microsoft offerings.

I would add the list of top 25 CRM blogs to the list and the Microsoft Dynamic CRM forums

Not forgetting Hosk’s CRM Developer Articles

CRM

Why Should You Always Debug with the Plugin Registration Tool

I agree developers should use the plugin registration tool because it doesn’t stop any other developers on the system.  There are other reason, read the article to find out

CRM Implementation and Deployment Best Practices

Interesting list of deployment best practices

Calculated and Rollup field limitation

A classic CRM gotcha you need to know about regarding calculated and rollup fields.

CRM Deployment Best Practices

Technet outline for further articles,  provides a good framework for things you should have already thought about.

New Knowledge Management in Microsoft Dynamics CRM 2016 release

Good new features, why has it taken so long?

Data Loader Service: Preview Feature for Microsoft Dynamics CRM Online

Getting data into your CRM online instance can be pain.  You should also read How to create realistic Test Data for your CRM Project and why you should

How to Integrate Microsoft Dynamics CRM

At the heart of CRM is data but what’s the best tool to use to import it

A Classic CRM debate – To use leads or not to use leads, that is the questions

I have had many a discussion with customers about leads, don’t discuss it

The pains of setting up a new CRM dev environment

Setting up CRM dev environments is something which has to be done

Dynamics CRM 2015 Workflow Tools

Useful free tools

CRM 2013 – using Entity.GetAttributeValue instead of Entity.Contains

Get rid of your if (entity.field != null) and use Entity.contains

A record count tool

counting records can be useful in scenarios of counting records.

Business Rules – Your Key to Programming Knowledge in MS Dynamics CRM

A great tool for non coders to create JavaScript like actions on your CRM forms.

Getting the CRM Developer toolkit working with Visual Studio 2013

With a few edits here and there you can get CRM Dev toolkit working with visual studio 2013 whilst we wait for Microsoft to make an official version

Javascript to set the current date and time

Set the current data and time using JavaScript.

{Customization and Scripting Tip} Workaround for showing some number fields without comma in Dynamics CRM

Good tip

Programmatically create folders and upload files in SharePoint Server 2013 through Plug-in/Workflow

Useful to have an example, SharePoint code needs a different way of thinking

programming

Javascript goes async

Satya Nadella Explains Why Microsoft Still Makes Hardware

An Ex-Microsoft Engineer’s Advice to Programmers: Learn How to Write

other

9 Learnings from 9 Years of Brain Pickings

How to tell a great story, visualized

The 8 causes of Plateaus

Tesla’s batteries to power two dozen Calif. office buildings

Hunter S. Thompson on Living versus Existing

Previous top picks

Hosk’s Top CRM Articles of the week – 13th October

Useful Hosk Links

Hosk list Of CRM 2013 Tools

A list and review of CRM 2013 tools, this will probably work in CRM 2015 as well

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

MB2-703 – CRM 2013 Customization and Configuration Certification Information

All the CRM 2013 content to help you pass the exam

HoskWisdom – Hosk Developer Quotes

 Words of Wisdom from the Hosk.  I have written over 900 articles, surely I should have said a few memorable things


Filed under: CRM 2011, Hosk’s Top CRM articles of the week

CRM 2015/2013 – All you need to know about Database Encryption

$
0
0

There are two types of encryption: one that will prevent your sister from reading your diary and one that will prevent your government.

Bruce Schneier

 

Encryption problems don’t occur because Microsoft Dynamics CRM encrypts password fields. Problem’s occur if you don’t realise CRM 2013/2015 database are encrypted and encryption keys need to be looked after.

CRM 2013/2015 and future versions automatically creates a default encryption key and encrypts data in CRM.

Understand how database encryption works to ensure they don’t lose the encryption key or create a situation where they don’t know where the original encryption key came from.  Retrieving encrypted data isn’t possible with the encryption key, deletion and recreation will be your available options.

Along came an SQL Encryption error

In a CRM 2013 dev organisations clicking on mailboxes would bring up an SQL encryption error

No one turned on database encryption, so this raised questions

  1. Why were SQL encryption errors appearing?
  2. Why in one of our dev organisations?

Database encryption was introduced in CRM 2013, automatically enabled and encrypts email password fields.

Developers won’t notice database encryption in a new CRM organization because an encryption key is created for you, all functionality works and mailbox passwords encrypted.

It wasn’t until we created a DEV environments from a copy of a CRM 2013 org and restored it, SQL encryption errors appeared.

If you attempt to look at the database encryption settings on an http on-premise organisation you will get an SSL error.

Data encyption - no https

It’s not uncommon to find the CRM developer bashing head on desk whilst pulling out his hair.

When you work out how to turn the SSL check,  you then get presented with a blank certification field with a helpful place to past the encryption key? Erm……what, where, who is the encryption key (repeat head banging).

If you are lucky the encryption key is in the original database, Other scenarios could be the original database is deleted or you can’t remember what CRM org was the original.

Why it’s important for Developers to know

Database Encryption gets turned on automatically, if you backup/copy and restore a CRM organisation the copy database won’t have database encryption key.  It’s easy to copy the database encryption key once you know where to look, it’s important to plan because encryption keys can change or get lost.

What won’t work if you don’t have your database encryption key?

  • Server side Sync
  • Mailboxes (opening)
  • Cannot update user email addresses
  • Cannot update mailbox emails

If server side sync doesn’t work workflows sending emails might not work

You cannot change emails of users and mailboxes.

The biggest problem I experienced was the loss of time.  Time investigating the problem and understanding database encryption.  The investigation stopped development on areas which needed email functionality using server side sync.

The forum title below captures the feeling

HELP! My data is encrypted and I didn’t do it!

It’s important for CRM developers to understand database encryption in Microsoft Dynamics CRM is because it’s automatically turned on and cannot be disabled.

If you restore a CRM database the database encryption won’t be activated, encrypted data isn’t available to your CRM instance, certain email functionality won’t work, throwing SQL encryption errors.

Restoring databases can happen when creating new development environments, QA, TEST, PREPROD environments.

If you create a new CRM organisations for each environment, each CRM database is automatically encrypted with its own key.

If you copy and restore CRM organisations you MUST copy the database encryption key from the original CRM database and activate the database encryption.  CRM developers need to be proactive and mange the encryption keys, to avoid ending up in a mess.

Why doesn’t the encryption key copy

The data encryption key is stored in the MSCRM config database and not in the instance CRM database.  So when the bak file is imported into a new CRM org it doesn’t know how to get the key because the key isn’t in the bak file.

It can’t get it from the MSCRM_config because by creating a new org you will create new /different data in the MSCRM_config.  Each CRM database will have its own encryption key.

What is Data encryption

Always start with the CRM SDK

The CRM SDK has two articles on database encryption, The first describes what SQL field level encryption is and does.

Field-level data encryption

Microsoft Dynamics CRM uses standard Microsoft SQL Server cell level encryption for a set of default entity attributes that contain sensitive information, such as user names and email passwords. This feature can help organizations meet FIPS 140-2 compliance.

 

This article explains changing and copying your encryption key.

Data encryption 

A 5 minute video to explain the basics of database encryption

Microsoft Dynamics CRM 2013 Setup and Upgrade New Features – Data Encryption

The video states Yammer tokens are encrypted, I’m not sure what this means or if Yammer won’t work on a database which isn’t encrypted,

What is encrypted?

Passwords for email are encrypted but what does this mean?

The article describes what is encrypted

EntityAttribute
EmailServerProfileIncomingPassword
EmailServerProfileOutgoingPassword
MailboxPassword
QueueEmailPassword
UserSettingsEmailPassword

I found the answer on this page, If you lost your encryption key

Entities

  • Mailbox
  • Email Server Profile

If you do an advanced find and use the entity of Mailbox.

You will get a list of mailboxes, if you click on one, on an encrypted database where you have lost the encryption key you will get this message

Data encyption 2

If you are wondering where the mailboxes are used, each user has a queue and each queue has an Emailbox

Why is data encrypted

Understanding the purpose of functionality, makes it easier to comprehend the logic driving the functionality.

The purpose of encrypting user and password fields in CRM is to hide this information from CRM developers/CRM Admins.

Data encrypted is around email functionality is because Microsoft Dynamics CRM has no email functionality.  Email functionality is outsourced to

  • Email Router
  • Server side sync
  • CRM users Outlook

To use external email services, it passes credentials to the other services, to make things secure CRM encrypts this data.

CRM Encryption Facts

Is database encryption is automatically turned on?

YES!

Whilst writing this article I get confused whether database encryption was turned on on or not

This paragraph in Field-level data encryption confused me

The encryption key is required to activate data encryption when you import an organization database into a new deployment or into a deployment that has had the configuration database (MSCRM_CONFIG) recreated after the organization was encrypted.

The paragraph is saying (and the cause of problems I experienced) selected fields are encrypted, its turned on but not activated on imported databases.  You will need to activate encryption by copying the correct encryption key, which you can find on original database.

Database encryption facts

  • When doing a retrieve on an encrypted field value, a null is returned
  • Encrypted fields cannot be indexed
  • Database encryption is automatically turned on for any CRM versions of CRM 2013 and higher.
  • You cannot turn database encryption off
  • You can set and retrieve the database encryption key using the CRM SDK see here
  • The SSL check is automatically turned on but can be turned off by updating the field on the mscrm_config database
  • Users with the Microsoft Administrator role can change the CRM encryption key
  • All the encrypted fields are password fields
  • Default encryption key setup during setup
  • All new and upgraded (which means all) CRM version will have data encryption enabled
  • You can’t audit or customize the encrypted fields

Common Database Encryption questions

Database encryption is likely to interest CRM developers when things have gone and you have restored a CRM database.  I will cover the common scenario’s and give  links to the answers

Can you change the database encryption key?

Yes, but you have activate database encryption.  If the database encryption key field is blank you need to copy a the key from the original database.

I can’t check the database encryption because of the SSL check?

Microsoft turned on the SSL check by default, all on-premise CRM installations which are not SSL enabled cannot open the data encryption screen.

Data encyption - no https

To view the data encryption details you need to disable the SSL check

Go to Settings –> Data –> Database

Data encyption

You cannot check the Data encryption key on a database if CRM is not SSL (HTTPS).  This is because the Microsoft config database MSCRM has a field to stop CRM

You need to connect via SQL manager to view and change the database field on the MSCRM_Config database DisableSSLCheckForEncryption

I don’t recommend changing a CRM database,  particularly the MSCRM_CONFIG because this is unsupported by Microsoft

Why you shouldn’t put unsupported customizations in Microsoft Dynamics CRM

The only time you can access the database is when Microsoft say you can on this page

When the Microsoft Dynamics CRM (on-premises) website is not configured for HTTPS/SSL, the Data Encryption dialog box will not be displayed. For a more secure deployment, we recommend that you configure the website for HTTPS/SSL. However, if the website is not configured for HTTPS/SSL, use a tool that can be used to modify CRM database tables, such as Microsoft SQL Server Management Studio or the Deployment Web Service, open the configuration database (MSCRM_CONFIG), and in the DeploymentProperties table, set DisableSSLCheckForEncryption to 1.

We have permission, here is the SQL

This views the data

SELECT [ColumnName], [BitColumn]

FROM [MSCRM_CONFIG]. [dbo].[DeploymentProperties]

WHERE ColumnName= 'DisableSSLCheckForEncryption'

This updates it

UPDATE [MSCRM_CONFIG].[dbo].[DeploymentProperties]
                SET [BitColumn]=1

                WHERE ColumnName='DisableSSLCheckForEncryption'

You need to do an IISReset after changing the database value, until you do you won’t be able to access the database encryption screen.

You can set the field back after you have got the database encryption key if you wish.

Set by step instructions here

My Database has no encryption key

If you have turned off the SSL check and there is no database encryption key, it means you have a restored database.  You need to find the original database and copy the database encryption key

This article will help

Data encryption errors after restoring CRM database

Best practices – Backup your key

Microsoft recommends changing the database key once a year, the article below describes how to backup your encryption key

What if you lose your key

You are in a pickle!

I read this blog post – Tip of the day if you lost your encryption key

It states you can add a new encryption key if you delete the encrypted data.  Deleting the data is difficult because mailboxes are linked to User and Queues, which means they are Dependant.

You cannot delete the data using the UI, I tried using the CRM SDK but got the same dependency errors.

This forum post suggests you can null but I’m not sure this would work (make sure you backup the DB)

HELP! My data is encrypted and I didn’t do it!

One solution is to create a new CRM organization and import your solution files.  This works because the a new database is automatically encrypted, so you don’t need to recover the database encryption key.

Good articles on CRM and database encryption

CRM 2013 and SQL encryption

 

 


Filed under: CRM 2013, CRM 2015

CRM 2015 – The benefits of Access Teams

$
0
0
Access teams are an underused feature in Microsoft Dynamics CRM because the benefits of access teams are not clearly understood by many CRM professionals.  
When I have asked fellow CRM professionals about Access teams most had only heard of Access team and none had ever used them.
This post will explain
  • What are Access Teams
  • The benefits of Access Teams
  • When to use Access Teams
This week a new plugin was added to the XrmToolbox to XrmToolBoxplugin for moving access team templates, which prompted me to investigate Access teams.

What are Access Teams?

I learnt about Access teams because it’s on the CRM 2013 customization exam.  Study for certifications are a good method to learn new functionality added to Microsoft Dynamics CRM.
Here is some information to help study for Microsoft Dynamics CRM customization certification and this post explains the benefits of acquiring Microsoft Dynamics CRM certifications 
To get an introduction to Access teams read
The purpose of access teams is a dynamic way to share records with users without using the default sharing functionality in CRM or security roles.
Access teams are enabled on an entity basis.  When Access teams are enabled for an entity, a grid will appear on the record.  Any user record you add to the grid will have permissions (controlled by a template) to the record.
Access teams are a quick way to share records to an ad hoc team, an example is people working on an opportunity record.  Instead of using security roles/teams/business units to give access or sharing the record you can add the users to the access team.
A key fact to remember is Access teams don’t have security roles.  Because Access teams don’t have security roles this prohibits them from owning records because they cannot be granted the privilege to own a record.
Team confusion
Confusion understanding the purpose of Access teams is because team functionality exists in CRM, users aren’t clear how Access teams are different.
The table compares Access Teams and Owner Teams.
 Access TeamOwner Team
Can own recordsNoYes
Team can be assigned security recordsNoYes
Manually created and managedNoYes
Displayed in Team viewsNoYes
Cached by CRM Server when user logs onNoYes
Use Team template to define security priviledgesYesNo
Access teams remind me of field level security (how to setup field level security) because the template specifies a simple security permissions
Access teams share record permissions without the overhead of using the full CRM security model, avoiding the sharing overhead which can occur with a complex security model.
 

The benefits of access teams

A benefit of studying for the CRM customization certification is learning how Access teams work, it doesn’t teach you how and why you when you should use them
reminds me of this quote
Somemen learn all they knowfrom books; others from life.  both kinds are narrow.  The first are all theory; the second are all practice.

It’s the fellow who knows enough about practice to test his theories for blow-holes that gives the world a shove a head, and finds a fair margin of profit in shoving it.

George Lorimer, Letters from a Self-Made Merchant to His Son
Two great resources for learning the benefits of Access Teams
Reduced sharing overhead
Sharing records in CRM can cause the POA table to grow in size.  A large POA table can affect the performance of your CRM system.  Access teams offer a way to share permissions to records.  Access teams offer a method of sharing records which doesn’t impact the POA table
Quick and ad hoc
If your need is to share records to groups or individuals, not in teams, Access teams is great for sharing permissions to unrelated individuals quickly and easily.
Manage sharing
Managing shared records in Microsoft Dynamics CRM can be difficult (can you remember how to see what records are shared with whom?).  Using Access teams it’s easy to see who the record is shared with and add/remove users.
Improved performance
Read Adam Vero‘s section on Performance Improvements
because he explains it better than me.

Access team facts

  • When records are deactivated, access team permissions are not effected
  • Access teams don’t have security roles
  • Access teams can’t own records
  • Access teams are created and managed by CRM
  • An access team is created when you have added the first user
  • Access teams are not visible in default team views
  • Sharing records via access teams isn’t displaying in the sharing screen
  • Access teams can’t be used in resource scheduling
  • Multiple access teams can be linked to a single record

Understanding Access Teams

We understand Access teams,  how they work and the benefits but when should you use Access teams?
If you are sharing lots of records, investigate an alternative method of sharing records which does not grow the POA table.  Sharing records are difficult to manage to individuals, you should use teams.

When to use Access teams

When you need to grant permissions on individual records.  Access teams are great if you need to grant permissions to different individuals and not teams.  A good example is granting permission on an opportunity to users from different areas, sales, marketing, support who are creating a proposal/demo.
If the group of people who need to access a record will change often, Access teams offer a way to add/remove users who can access the record.
Access teams are great for quick/ad hoc sharing

When not to use Access Teams

If security is important it’s better to use the default CRM security model.  Access team members can add/remove other users which might compromise the security of the record. Default security is more powerful and nuanced, Access teams have 5 levels of permission.
When teams are static it’s better to use Owner teams to manage access to records.
If the volume of records being shared/view is high, managing permissions through Access teams will take too long.

The problem with access teams

Microsoft added Access teams into CRM 2013 but then forgot to add any functionality to export/import Access team templates between CRM instances.
This topic is explained CRM 2013 – Why are access teams marooned?
With Access teams not included in the CRM solution it means Access team templates need to be manually recreated in all your CRM environments, this massive overhead, almost makes Access teams unusable.
Access teams have a connect request Access Team Template in CRM Solution
This request is active, created on 11/27/2014, it has 68 votes but as yet Microsoft have not responded.  Is Microsoft Listening to the Dynamics CRM Community?
I understand Microsoft are working on updating the connect platform, this will be a welcome change but I wouldlike to see more responses from Microsoft.  The most disappointing part of the Microsoft Connect experience isn’t the poor user interface its the fact Microsoft doesn’t seem to be listening to the suggestions of the CRM community.

Access Team templates tool

The CRM community is awesome and Lucas Alexander has created a plugin for the XrmToolbox to move Access team templates.
The tool allows you to easily export and import Access team templates between CRM organisations

Try Access Teams

If you haven’t used Access teams, open a CRM trial and try them out.  Access teams are  a great way to share individual records to individuals without impacting the POA table.
Now you understand how Access teams work, the benefits and when to use them.   You can see where it might be appropriate to use them or advise your customers the functionality Access teams provide.

Filed under: CRM 2013, CRM 2015

CRM 2015 – Tips on passing MB2-707 customization and config exam

$
0
0

This blog post gives tips on passing the MB2-707 certification, the real value of the certification isn’t the certification itself but what you learn to get it.

I created this blog post for the CRM 2013 customization and config certification

Tips on passing MB2-703 – CRM 2013 Customization and Configuration Certification

I recommend you read the blog post above, this post will concentrate on CRM 2015 version.

Why should you take the certification

I have written about why you should get Microsoft Dynamics CRM certifications before

Here are a few points

  • It’s a great method to learn the out of the box/inbuilt functionality in Microsoft Dynamics CRM.  The first tool a CRM developer should use to deliver request features is out of the box Dynamics CRM functionality.  Theoutofthe box functionality works andhasbeenthoroughly testedby Microsoft (mostofthetime).
  • Out of the box functionality is quicker to create and is easier to maintain.
  • Study for customization and config certification is a great way to learn new functionality added in the Microsoft Dynamics CRM
  • Certification gives you a deadline to motivate you to learn
  • MONEY, a certification is something to take into your yearly review.

Understand the new functionality

I have taken the Microsoft Dynamics CRM customization and config certification for

  • CRM 4
  • CRM 2011
  • CRM 2013
  • CRM 2015

The exams historically have many questions on the new functionality added in each release.  The major new features added into CRM 2015 are

  • Rollup and calculated fields
  • Business Process flows
  • Business Rules (enhanced)
  • Hierarchy Visualization
  • Search multiple entities
  • Enhanced Mobile

This blog Dynamics CRM 2015 / 2013 New Feature Summary has a quick list of new features

This doesn’t mean you should ignore older functionality, you need to study all the areas in the certification criteria

MB2-707 – Microsoft Dynamics CRM Customization and Configuration

Study Material

If you work for a company who has PartnerSource I would recommend you use the study material provided by Microsoft which is free for PartnerSource members.  I found a link here

Course 80665: Customization and Configuration in Microsoft Dynamics CRM Online and On Premise [eLearning]

The eLearning provided by Microsoft is the best study resource because it’s focused on the customization and config certification.

I created  articles, questions and videos I have created for the CRM 2013 customization and configuration certification

MB2-703 – CRM 2013 Customization and Configuration Certification Information

MB2-703 – CRM 2013 Customization and Configuration Hosk study notes

Most of the content is still relevant for CRM 2015 – MB2-707 exam, you will need to make notes on the new functionality added into CRM 2015.

Make notes and use Microsoft Dynamics CRM

Don’t just read information for the exam, make notes and use a free CRM trial to try out the new functionality.

  • This helps you learn how the functionality works.  It will help you remember it for the exam.
  • My trying the functionality you get practical knowledge, not just theoretical

When I study for CRM certifications I make bullet point lists of what the functionality can do. I use the list to revise and create YES/NO questions and multiple choice to help me study.

Here are my security exam cram notes

CRM 2013 – MB2-703 – Security Exam Cram Notes

A different method is to go through the skills measured in the certification criteria and highlight the functionality you need to study.  Find blogs, articles and white papers and make notes.  I did this but got bored

The Free MB2-703 Study Guide

Other Blogs information

Thereisn’t much information buthereareafew blogs

Good luck to anybody taking the exam

 


Filed under: Certifications, CRM 2015

Hosk’s Top CRM Articles of the week – 2nd November

$
0
0

 

A great list of articles and blog posts this week, enjoy.

Quotes

Some men learn all they know from books; others from life. both kinds are narrow. The first are all theory; the second are all practice.

It’s the fellow who knows enough about practice to test his theories for blow-holes that gives the world a shove a head, and finds a fair margin of profit in shoving it.

George Lorimer, Letters from a Self-Made Merchant to His Son

The kernel of a strategy contains three elements: a diagnosis, a guiding policy, and coherent action. The guiding policy specifies the approach to dealing with the obstacles called out in the diagnosis. It is like a signpost, marking the direction forward but not defining the details of the trip. Coherent actions are feasible coordinated policies, resource commitments, and actions designed to carry out the guiding policy.

Good Strategy/Bad Strategy: The difference and why it matters by Richard Rumelt.

To get an overview of the book read A primer on strategy from the excellent Farnam Street blog

Article of the week

CRM Chart guy says Funnel Charts Suck and You Shouldn’t Use Them.

If you have tried to wrestle, persuade, force, shout at, plead, or trick the charts in Microsoft Dynamics to show something useful, you will realise it’s a difficult job.

For this reason you have to admire the awesome blog posts from CRM chart guy

Best of the Rest

CRM 2015 – The benefits of Access Teams

Understand the benefits of Access teams and start using them

A free customizable Editable Grid for Dynamics CRM 2013/2015!

A free editable grid

CRM 2015/2013 – All you need to know about Database Encryption

Database encryption can cause problems if you restore a backup of a CRM database because the encryption won’t work.  This article will help you understand what is encrypted and how to add the encryption key

Your Interaction Network in Dynamics CRM

Great post from CRM MVP Jukka explaining Activity Party and how data interacting with you is held and can be displayed in CRM

Meet the 7 major improvements of the new MS Dynamics CRM 2016

The highlights of CRM 2016, it’s coming soon

Microsoft Cloud Certification could allow complex CRM solutions to go online 

There’s a different choice between on-line or on-premise

Using Full-Text Search to improve Dynamics CRM search experience

Shows how you can search full text in CRM

Querying with no table lock

FetchXML has no table lock, who knew

CRM MVP Daniel Cai shows you how to get data into CRM faster

Great Slidedeck showing you how to import data in CRM

How to find the number of users connected to a SQL Server database

An SQL query to tell you how many users are connected to your CRM database

CRM 2011/2013 – Understanding and adding the deployment administrator role

Do you understand the Deployment Admin roleChanging a Custom Entity Icon in Dynamics CRM

whitepaper – Deploying Microsoft Dynamics CRM in Microsoft Azure Virtual Machines

Four Acquisitions To Make Dynamics CRM Awesome

Leon Tribe informs Microsoft of the next businesses they should buy, Listen up Microsoft

Microsoft Dynamics CRM not working? check these common causes 

If Microsoft Dynamics CRM on premise has stopped working, check out these common causes

Bulk Delete

Answers to common bulk delete questions

Microsoft Dynamics CRM and Salesforce.com: Sandbox to Production Revisited

Comparing the sandboxes of CRM and Saleforce

Upgrading CRM: How to Move from a Data-driven CRM to a Process-driven CRM

Do you need to change your thinking and processes when moving to from CRM 2011 to CRM 2013/2015

CRM Performance: Nothing is Gained by Running

Why rushed projects/code doesn’t save time and reduces quality

Running faster doesn’t always get you there quicker.

Eight ways to ensure the failure of a CRM project management (Part 1)

13 signs your CRM project is doomed

If you’re having CRM problems I feel bad for you son

I got 99 problems but my CRM Project ain’t one.

Programming

Moore’s Law Turns 50

Coding by the Book: The 7 Books Every Software Developer Should Read

SQL Server 2016: Everything built-in

Please, don’t commit commented out code

Why coding skills are not enough for a developer to get hired

Other

What Book has the Most Page-for-Page Wisdom?

First, interact

The Multitasking Virus and the End of Learning? Part 2

A Primer on Strategy

Previous top picks

Hosk’s Top CRM Articles of the week – 13th October

Useful Hosk Links

Hosk list Of CRM 2013 Tools

A list and review of CRM 2013 tools, this will probably work in CRM 2015 as well

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

MB2-703 – CRM 2013 Customization and Configuration Certification Information

All the CRM 2013 content to help you pass the exam

HoskWisdom – Hosk Developer Quotes

 Words of Wisdom from the Hosk.  I have written over 900 articles, surely I should have said a few memorable things


Filed under: CRM 2011, CRM 2013, CRM 2015, Hosk’s Top CRM articles of the week

CRM 2015 – Quick way to navigate to your User record

$
0
0

 

The happiness of most people is not ruined by great catastrophes or fatal errors, but by the repetition of slowly destructive little things.

I often need to navigate to my user record, usually to check my security roles, doing this using the standard navigation can take lots of clicks.

If you have to something often then it’s worth investigating the quickest way to do it.

CRM insanity is doing the same thing over and over again, when there is a quicker way –Hosk

An example of a common task is retrieving the GUID of a record, CRM 2013 – quick way to get the guid on a form but there is a quicker way using a bookmark with Javascript, which automates the Javascript I used in my blog post.

This blog has an example of Javascript book to get the guid –  Get Guid of an Entity Record in CRM 2013/2015

Below are quick ways to get to your CRM User record

Option 1 – Personal settings

There are a few ways
Click on the Cog –> Personal Options
Scroll down and you can click on my user information
Find your user settings

Option 2 – Bookmark

CRM 2013/2015 shows dynamic Urls instead of direct urls.

e.g.

http://CRMServer/CRMOrg/main.aspx#583987404

The last number is a dynamic number which you can’t bookmark.

If you navigate to the your user record by going through Settings –> Administration –> User Record.  The url won’t change but once you are on this page you can click the three dots

… Email Link

This will open Outlook with a url, linking directly to your User Record, e.g

http://CRMServer/CRMOrg/main.aspx?etc=8&extraqs=formid%3dc2cd9e55-d4b4-4b55-9951-16ead79643e5&id=%7b4586544B-9BCC-E411-80C7-000C292122BE%7d&pagetype=entityrecord

Paste the url into your Internet browser, you can bookmark this and it will take you directly to your user record.

You can navigate to your User record with one click instead of 5 or 6.

Bookmarks rock

Links to individual records are useful if you often need to go to the same record, it’s worth bookmarking them.  You can have project records such as Custom Configuration record or a popular account/contact record.

When using CRM 2013/2015 I create a folder which contains useful bookmarks, such as

  • User
  • Main Dev Solution
  • Solutions
  • Security
  • God Mode (awesome, it makes all fields editable)
  • Get Guid

These two blogs will show you how to setup the Bookmarklets

Bookmarklets Updated

CRM Navigation Hacking with Bookmarks


Filed under: CRM 2015

CRM 2013 – When using FetchXML is better than OData

$
0
0

“Ordinary people think merely how they will spend their time, a man of intellect tries to use it.” – Schopenhauer

I had a tricky problem where I need to select a lot of fields from an entity which was riddled with duplicates.

The oData query was bringing 1525 rows but after getting rid of the duplicates I was left with 25 rows!

OData  has no distinct

So why was the OData query bringing back so many rows because there is no distinct.  So the code was retrieving lots of data, it was then removing the duplicates.  It was a lose/lose scenerio

  • longer retrieve with more data
  • more time spent on getting rid of the extra data we didn’t need

I needed to clarify is there is no way to retrieve a distinct set using OData.  I looked on the internet and SDK but there is no distinct function with OData

FetchXML

A Developer mentioned FetchXML has a distinct field, I could change the query from OData to FetchXML and be able to filter the records returned.

I checked with Advanced find and you can’t set the distinct field attribute.

FetchXML has a number of aggregrate functions which are listed on this page – Use FetchXML aggregation

The following aggregate functions are supported:

  • sum
  • avg
  • min
  • max
  • count(*)
  • count(attribute name)
FetchXML also has some Groupby functionality, which can be very useful

How to Generate the FetchXML

So I did an Advanced find, copied the xml and found in Tanguy Toolbox XRMToolBox there is a fetchXML Tester.

fetchxml

I recommend the FetchXML Builder, which you can download and then will work with the XRMToolBox

FetchXMLBuilder can be downloaded here

The FetchXML Tester will run any fetchXML you have generated from an Advanced find, once you have the core FetchXML you can then edit and change it but it’s quicker to use Advanced Find to get something to start with.

The FetchXMLBuilder is better for creating new FetchXML queries because it has a great UI to allow you to build up a query.

It’s a bit like the Dynamics CRM OData Query Designer but for FetchXML.  I used it recently to query when a certain Plugin assemblies had been uploaded

fetchxml 1

 

This is an example of the FetchXML tester with the Distinct set to true

<fetch distinct='true' mapping='logical' aggregate='false'> <entity name='account'> <attribute name='attribute name' alias='alias name'/> </entity> </fetch>"

Here is the example I created

Tools can help

I was lecturing/Advising a junior developer who had a similar requirement.  He was about to manually create a big soap command to run the fetchXML.

Instead of doing it yourself, see if there is a framework or tool to help you.  Find a framework first, which will do all the nasty donkey work for you of creating the soap messages.

Microsoft Dynamics CRM has lots of tools, solution and frameworks created by the CRM community, it’s often worth looking for a tool/framework to see if someone has resolved the problem.

I have reviewed lot of tools here

Hosk’s CRM 2013 Tools List

For this problem I needed a framework instead of a tool, I narrowed it down to two

XrmServiceToolkit – A Microsoft Dynamics CRM 2015/2013/2011 JavaScript Library

CrmFetchKit.js – Script Library for Dynamics CRM (SOAP)

Both could have done the job but I chose XRMServiceToolkit because it had more followers on CodePlex and seemed easier to use.  I had experience using it before, it’s always easier to do something when you have got it working before.

The XRMServiceToolkit looked a more complete solution.

Solution

So instead of doing an OData call, retrieve thousands of rows and then removing the duplicates, I changed to use a FetchXML from JavaScript using the XrmServiceToolkit which returned just the rows I needed and was much quicker.

There are lots of alternatives in Microsoft Dynamics CRM and the skill of a good CRM Developer is choosing the right customization for the job.  Choosing the right customizations is often understanding the limitations of each type of customization.

 


Filed under: CRM 2011, CRM 2013

Microsoft Dynamics CRM Developer Interview Questions

$
0
0

I found questions I used interviewing a CRM developer, The questions will give CRM developers an idea of the questions you might get asked in a CRM developer interview.

This article will help you prepare for a CRM developer interview.  The article will investigate the purpose of interview and discuss common topics with sample CRM developer questions

Interviews can be interesting experiences,  a time to reflect on your experiences and knowledge, but don’t be too good Should you hire a Rockstar developer for your CRM project?

Interviews are scary

Many people find interviews are scary because they contain the unknown.  When your mind thinks about unknowns it exaggerates things, focusing on worst case scenarios

  • Forgetting a technical detail
  • Not understanding the questions asked
  • You can’t remember any of your technical skills
  • The interviewer asking for skills and experience you don’t have
  • Turning up without trousers on
 I refer to this as the Stephen King television series concept.  The story IT is a great example
Stephen King television series start great, the monster is hidden in the shadows, mystery and unknown let people imagine something terrible as people disappear.
Interview are similar, you imagine how bad it could go.  It’s like the Stephen King series IT, the early stages and the clown is scary, when the final scary monster appears it isn’t scary (a big spider)

What is the purpose of the CRM Developer interview

Whilst preparing for the interview, consider the interviewer’s perspective and goals of the interview

  • What are the objectives of the interview?
  • Identify skills and experience for the role?
  • The interviewers context (e.g. developer, management, director)?
  • Will the interviewee work well with existing staff members?

People can exaggerate their CV’s, part of the interview process is validate what skills and experience the interviewee has.  You can assist in the process by giving as many examples of your experience and skills as possible.

Describe significant projects and your role in those projects, interviews are short so present the highlights of your recent experience.

The interviewer will see how truthful you have been on your CV and estimate your CRM knowledge and experience.

Key areas

CRM knowledge

  • Knowledge of CRM SDK
  • Understanding of CRM out of the box functionality
  • CRM certifications held

Experience

  • Projects
  • Your Roles on those projects (looking for role exaggeration is common)
  • Experience of CRM customizations
  • Size of project
  • Integrating external applications with CRM
  • Project style (Agile, Waterfall, others)

Career

  • Where are you now?
  • Where are you going?
  • Why are you moving?

CRM certifications

I am a big fan of CRM developers getting certified (read why you should get certified and the benefits).  Studying for a CRM certification gives developers a good knowledge of out of the box functionality and its limitations.

Here are links to resources to help you pass the Customization and Config CRM certification

but…

Certifications show knowledge of Microsoft Dynamics CRM, it gives no sign the person can create effective CRM solutions.  Certifications don’t show character, or how they will work with other team members.

Learn new CRM features and functionality

Learning new CRM features, understanding new functionality, keeping up with latest version of CRM shows a person is self-motivated learner.

If you haven’t worked with the latest version, having knowledge on new features is the next best thing.  Staying up to date with new versions of CRM and new functionality is being prepared for using it.

Experience and knowledge of CRM

Experience is an important commodity, you can’t buy it or learn it, only gain it.

I have seen .NET developers new CRM, struggle with CRM development due to the lack of CRM experience.

Why .NET developers struggle with CRM development

Whilst getting experience, CRM developers make and learn from mistakes and mistakes cost time and effort.  Those with experience are less likely to make the same mistakes.  Experience increases the chances of a successful CRM project.

Give examples of your experience in as many answers as possible, experience is one of your most valuable assets.

Career

There will be questions on your career ambitions where do you see your career now? where do you see your career going?

Think about your career, you should have a destination in mind and a route to getting there.

The CRM world is small.  If unsuccessful in this job, you might work with the interviewee in this company or a different company.

Don’t criticise

NEVER be negative or critical about your colleagues. This wastes interview time on negative things, instead talk about your skills and experience.

No one likes to work with someone who criticises and blames their colleagues.  If you criticise your current colleagues, it’s likely you will criticise people in your new company.

Build your brand

Building your brand is preparing for an interview before you get an interview, it is not a quick process but a continuous process.

Build your brand by

  • Write a CRM blog
  • Create Youtube videos on Microsoft Dynamics CRM
  • Answer forum questions
  • Tweet about CRM
  • Create CRM tools
  • Slideshows/presentations
  • Attend CRMUG or other live CRM events
  • Interact with CRM community

Contribute to the CRM community, this could lead to you knowing and being recommended by employees of the company.  You can make a good impression before you make your first impression in the interview.

Creating content gives examples of your CRM ability, knowledge and experience, which can be found by the interviewers.

The Hosk CRM blog interviewers can see my CRM knowledge and experience and get an idea of who the Hosk is (yes the Hosk does like talking in the 3rd person!)

  • Your brand is you
  • Your point of view
  • Your experience
  • Your voice

Embrace your individuality, don’t copy other content but create your own unique content.  Creating a brand isn’t just selling yourself to people, you want to create a compelling interesting brand like the Apple iPhone compared to many android phones you can’t distinguish between.

CV and Project experience

You be asked to walk through your CV and explain it in detail, particularly the projects

  • Projects you worked on
  • Different customizations you created with problems/benefits
  • Different roles worked on projects
  • Project problems and how you overcame them

Practise Relentlessly

Interviewing is a skill, the more you practise a skill the better you get.  For an interview you are giving a presentation on yourself.

In the book Talk Like TED: The 9 Public Speaking Secrets of the World’s Top Minds, it has a great quote on practising your presentation

Practice relentlessly and internalize your content so that you can deliver the presentation as comfortably as having a conversation with a close friend.

Carmine Gallo

There is no excuse for not being prepared for a presentation where the topic is yourself.

Practice talking about your CRM experience so you can explain the projects, roles and the positive skills and experiences you got from them.

Practising helps you give a great interview because instead of thinking what to say, you are familiar with the content and are focusing on delivery.

Information to help prepare

Read Hosk Developer articles

These articles offer insights into understanding the CRM, CRM SDK and CRM developer processes and best practices.

Your approach to CRM development, diagnosing problems and best practices are key parts of a CRM developer.  Knowledge and skills can be learnt, but character and processes take longer.

Final Hosk tip

Skills and experience are important, but character is the vital.

Be confident and enjoy the experience if you don’t get this job it will have been an opportunity for you to practise your interview technique.

Enjoy the interview, you have nothing to lose and a job to gain.

Other CRM interview questions

This site has some great interview questions and answers

https://crmtipsbyprm.wordpress.com/category/interview-questions/

A collection of CRM interview questions for CRM 2011

CRM 2011 – Common CRM interview questions but what do they tell you?

Hosk‘s CRM Interview questions

I’m not going to give the answers to the questions because they would be my answers.  The questions are ones you might get asked, so if you are going to an interview think about the answers to show case your experience and thoughts on CRM development.

Q.  What is your CRM experience?

Question Purpose – A summary of CRM experience, your CRM career journey.

Mention – Role and experience, concentrate on the most relevant experience for the role

Q.  Tell me about your last CRM project?

  • Size
  • Complexity
  • Customizations
  • Integration

Question Purpose – The question aims to find out the experience of the

Mention- Mention different customizations, difficulties experienced and how you overcame them.  Show what skills you used and will bring to the role.

Q.  What development tools do you use for CRM development?

Question Purpose – CRM developers can answer this question if they have done CRM development.

Mention – CRM Developer toolkit, XrmToolkit, Ribbon Workbench, Plugin Registration. Tools used in CRM development which you use.

Q.  When do you use managed and unmanaged solutions?

Question Purpose – Does the developer the differences between managed and unmanaged solutions, whichcanbea pain.

Mention – Discuss your experiences with Solutions, how you used them.  How would you use solutions.

CRM 2013 – Understanding Solutions and how they work

Q.  What are the disadvantages of managed and unmanaged solutions?

Question Purpose – Explain when to use managed solutions and when to use unmanaged solutions.  Solutions are key part of releasing the customizations to the customer, if done badly can cause problems and waste time.

CRM 2013 – Managed solution problems with out of sync solutions

Q.  How do you set up your CRM solutions?

Question Purpose – You can package the CRM solutions in lots of different ways, releases/sprints/phases, splitting up the customizations by type (e.g. plugins, javascript) or creating solutions with different functionality in.

Mention – Your experiences or ideas of how you think solutions should be created.  There is no right or wrong way

Q.  What are the potential problems with multiple developers working on a project?

Question Purpose – What development environments have you worked in, with how many developers, problems and solutions.

Mention – How you have developed solutions with a team of developers and what problems can arise.

Q.  How do you debug a plugin?

Question Purpose – Lots of CRM Developers debug in different ways but it’s an important skill because CRM developers must test be able to test and debug their code.

Mention – How you debug, e.g. Unit Test, console app, Remote Debugging or plugin registration tool

Q.  How do you debug Javascript?

Question Purpose – Debugging Javascript is a necessary skill for a CRM developer

Mention – Pressing the F12 key and getting your breakpoints setup and hit. If you haven’t done this, try it out, it’s awesome.

Video CRM 2013 – JavaScript tutorial using CRM 2013 Developer Toolkit

Dynamics CRM 2011 JavaScript debugging in Internet Explorer 11

Q.  Have you integrated CRM with other systems, what was it and did you have any problems?

Purpose – Integrating CRM with 3rd party application or other Microsoft products is common.  It’s great if CRM developers have experience of this..

Mention – Any experience you have, problems you experienced and how you overcame them.

Q.  How to you estimate CRM customizations?

Question Purpose – Developers have to estimate work.  The greater accuracy you can estimate the better.

Mention – explain how you estimate customizations.  e.g. breaking up the work into smaller chunks, taking into account risks and experience.

Q.  Tell me about a project which went wrong, what were the reasons for the problems, how did you cope?

Question Purpose –  Projects can go wrong, problems will happen.  Showing the character to overcome problems and obstacles is an important skill.  Identifying the cause of problems, taking steps to avoid them will be useful to your prospective employer.

Mention – The lessons learnt and how you avoid potential problems.

Q.  How do you test your code?

Question Purpose – Unit testing code is great.  if you have experience mention it.  This question is asking how you test the logic of your code, which might not be unit testing.  You might debug your code or write a console app to run your code.

Mention – Unit testing knowledge and experience if you have it.  Your process of testing code.

Q.  Explain how pre-validate, pre and post are different plugins?

Question Purpose –  Specify how running a plugin in a different stage changes the purpose of the plugin e.g. pre before data is written to the database, post is after the changes have been written to the database.

Mention – Plugin stages, images and when you use each .

Q.  How are Asynchronous and synchronous plugins different?

Question Purpose –  Does the CRM developers understand the difference? Explain when to use an Async plugin instead of synchronus plugin.

Mention – Time.  Synchronus plugins must run straight away, async plugins can be delayed.

Q.  What is a common cause of plugin bugs?

Question Purpose – To find out if the developer has experience developing, if they have they will have experienced common errors.

Mention – The most common error is an infinite loop caused by updating fields, which triggers the plugin to run again and again

Q.  What is early binding, what are the benefits and the drawbacks?

Question Purpose – To understand if you the CRM developer understands the benefits of early binding.

Mention – Early binding creates strongly typed code which is easier to read and moves the errors to compile time and not runtime.  Early binding stops syntax errors which can occur with late bound code.

Q.  Should you keep up with the latest release of Microsoft Dynamics CRM?

Question Purpose – Does the CRM developer understand the benefits and disadvantages of keeping your version of CRM to the latest release.

Mention – Whenever you upgrade your CRM your customizations might stop working but you get the new features and fixes.  If you delay you have more versions to catch up to.

Should you keep up with Microsoft Dynamics CRM release cycle?

Q.  How do you keep up with Microsoft Dynamics CRM news?

Question Purpose – Does the CRM developer keep up to date with CRM, if so, how?

Mention – Blogs, certifications, Microsoft Dynamics community page

Q.  What is the effect of making a pluginsandboxed?

Question Purpose – CRM online can only deploy sandboxedplugins, so it’s important for a CRM developer to realise the limitations the sandbox can have.

Mention – CRM online can only deploy Sandboxedplugins and  Limitations such as

  • Access to the file system (C Drive)
  • systemevent log
  • certain network protocols
  • registry
  • You cannot access any other DLL’s
  • IP addresses cannot be used
  •  Only the HTTP and HTTPS protocols are allowed.
  • In isolated mode you cannot call any external DLL’s\DLL’s in the GAC

This blog hadsomegood restrictions ina bitmore detail

  • Attempting to use the AppDomain.CurrentDomain.AssemblyResolveevent
  • IO.Path.GetTempPath() [System.Security.Permissions.EnvironmentPermissionException]
  • Any filesystem access code [System.Security.Permissions.FileIOPermissionException]
  • Attempting to use the EventLog [System.Diagnostics.EventLogPermissionException]
  • Attempting to use IsolatedStorage [System.Security.Permissions.IsolatedStoragePermissionException]
  • Any references to Thread.CurrentThread caused a security failure.

Read this blog Understanding Plugin sandbox mode for more information

Q.  When do you use OData?

Question Purpose – To test if the user has written many JavaScript customizations

Mention – OData is the primary method to retrieve information from related records

Q.  What Access teams and why would you use them?

Question Purpose – Access teams are not widely used, does the developer know what Access team are and how they work.

Mention – The purpose of access teams are to easily share records with a team of people where the members of the team are not static.

CRM 2015 – The benefits of Access Teams

Q.  What is Metadata and how is it used in CRM?

Question Purpose – Does the CRM developer know what Metadata is and how it works with CRM

Mention – Metadata is the data about data.  CRM has lots of Metadata, types of field, optionset value, auditing etc.  To retrieve Metadata you need use webservices, RetrieveEntityRequest for entity Metadata and RetrieveAttributeRequest

CRM 2015 – Understanding CRM Metadata

Q.   What things should you consider when choosing between CRM online or on Premise?

Question Purpose – CRM online has several limitations compared to CRM on premise, a CRM developer should understand them.

Mention – The big difference is you can’t see or modify the CRM server and SQL server.  CRM Online limitations, such as Sandbox plugins, workflow limit of 200, custom entities 300, storage is a monthly fee.

Q.  Why is code readability important?

Question Purpose – To find out if the developer designs code, codes to best practices

Mention – Reading and understanding code is important because code spends most of its time in a maintenance state.  Developers will need to read and understand code to extend the code, debug the code.

Why Code Readability is important

Q. If a user complained a particular CRM form is loading slowly, how to investigate, what to look for?

CRM 2011/2013 Investigating CRM Form Performance issues

Q.  If CRM stopped working, what would you check?

Question Purpose – This test experience.  CRM will stop working on production systems is good to know a CRM developer will know what to check.  To understand what to check the CRM Developer will need to understand the architecture of Microsoftt Dynamics CRM.

Mention – CRM Async services stopped, APP Pool service account password, SQL Server services, Disk space, Active Directory

Microsoft Dynamics CRM not working?check these common causes

Q.  What is the POA table and how can it affect performance?

Question Purpose – The POA table is used for security and sharing.  A large POA can cause performance problems

Mention – security, sharing problems.

PrincipalObjectAccess–Performance Recommendations

How would you questions?

Q.  validate a phone number on a form

Q.  Add a sequential counter to a custom entity

Q.  Automatically fill in an address field when a user selected a contact lookup field on a custom entity.

Q.  Send an email on the creation of an account record.

Q.  Update a status with a plugin


Filed under: CRM 2011

Hosk’s Top CRM Articles of the week – 10th November

$
0
0

 

quotes

You can’t avoid the forces of change on your code, you can prepare for it by decoupling and reducing dependancies – Hosk

”Dirty code slows you down as well. If the code is clean, the next features go in smoothly.” – Ron Jeffries

You never know what worse luck your bad luck has saved you from.

—  Cormac McCarthy

What I learnt this week

Multiple online instances or tenants

You can delete CRM online instances or switch an instance of CRM online

I didn’t realise you could have multiple instances of CRM online or you can delete or switch instances.

Article of the week

Microsoft Dynamics CRM Developer Interview Questions

I have chosen my own article, outrageous!  It’s a whopper

Read Committed Snapshot Isolation (RCSI)–Know before you use it for your Dynamics CRM Database

An overview of Read Committed Snapshot isolation, a popular way to speed up your CRM DB.

Great old Post of the week

CRM 2011 Early Binding vs Late Binding Performance

Early-Binding-vs-Late-Binding-Performance-Revisited

Best of the Rest

A new developer Tool Bench, which does

  • Build URLs to open MSCRM forms.
  • Build URLs to open MSCRM views.
  • Finds the Guids hidden in MSCRM URLs.
  • Encoding and decoding of text.

API functions to control Subgrid behavior starting Dynamics CRM 2015 Update 1

New subgrid JavaScript functions in latest update

Scott Durow Visualisation

Who knew CRM data could look so good without putting on some silly space holo glasses

CRM 2011/2013 – What security roles do you to need to run a dialog

Do you know you need certain security roles to run a dialog!

Microsoft Dynamics Timeline

The history of Microsoft Dynamics CRM in a few minutes

CRM 2015 – Understanding impersonation in plugins and knowing when to use it

CRM Online 7.1.1 – Service Update

what’s been fixed in CRM online 7.1.1 – Service Update 1 for Microsoft Dynamics CRM Online 7.1.1

CRM 2013 – When using FetchXML is better than OData

There are some things FetchXML can do, which OData can’t

Boost sales with social selling

Social selling is shuffling into CRM 2016

MS CRM Custom WCF with Dual Encryption

Dual Encryption!

A good blog for Microsoft Dynamics CRM and Unified Service Desk

JSON Data Type Web Resource in Microsoft Dynamics CRM

It’s possible but why would you

CRM 2011 – how to update read only fields with Javascript

To update read only fields you need to change the setsubmit mode.  Read

CRM 2011/2013 – What does setSubmitMode do? and how does it work?

CRM 2015 – Quick way to navigate to your User record

How to quickly get to your user record

Yammer’s current state and why a CRM’er should take note of it 

Microsoft should update Yammer or replace it.  It’s still there so take note.

How to prepare Microsoft Dynamics CRM Data for Azure Machine Learning using SSIS and CData’s Dynamics CRM SSIS Components

Machine learning is coming, get ready

Microsoft Dynamics CRM Trust Center

CRM online trust credential, a great resource to answer potential customer questions

CRM 2015 – Why filtered views are useful

Filtered views are awesome, find out why

Bubble Charts in Dynamics CRM

A bubble chart in CRM, I never thought I would see the day

Programming

clean coder – future proof

Original Future Proof discussion

4 Easy Ways to Infuriate a Developer

other

A dozen things learned from Charlie Munger

The Statute of Limitations on Faulty Code

Simple way to do business writing

The remarkable Neal Stephenson interview

Interesting Videos

Atul Gawande talks

https://www.youtube.com/watch?v=MbNu6LY5sMY

https://www.youtube.com/watch?v=L3QkaS249Bc

Previous top picks

Hosk’s Top CRM Articles of the week – 13th October

Useful Hosk Links

Hosk list Of CRM 2013 Tools

A list and review of CRM 2013 tools, this will probably work in CRM 2015 as well

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

MB2-703 – CRM 2013 Customization and Configuration Certification Information

All the CRM 2013 content to help you pass the exam

HoskWisdom – Hosk Developer Quotes

 Words of Wisdom from the Hosk.  I have written over 900 articles, surely I should have said a few memorable things


Filed under: Hosk’s Top CRM articles of the week

CRM 2015 – What developers need to know about the activity entity

$
0
0

Microsoft Dynamics CRM has different Activity entities, showing actions from the CRM users.  ActivityPointer records are automatically created when an Activity record is created, enabling developer to retrieve different Activity types with one request.

If you don’t understand how to use the ActivityPointer record you can quickly get bogged down trying to retrieve individual Activity types.

CRM developers should think in entities when designing CRM solutions, activities track the activity and effort of the people using the CRM Solution.

Activities are the actions users do in CRM, often tracking the interaction between users and customers.

CRM has lots of different activities

  • PhoneCall
  • Task
  • Letter
  • Email
  • Appointment
  • Fax
  • Custom Activities

Tracking the activity of users/customers, records the time spent on CRM records. For cases, you can see activities associated with the case.   Tracking activities allows different people to work a record with a full knowledge of the status of the case.

Activity facts

  1. Activity is an entity in CRM, you can look at it in the custom solution
  2. The activity entity is non-editable.
  3. Activity schema name is ActivityPointer e.g ActivityPointer = Activity
  4. ActivityPointer is not the same as Activity Party

Microsoft ActivityPointer description

“Task performed, or to be performed, by a user. An activity is any action for which an entry can be made on a calendar.”

What’s the purpose of the Activity Entity?

If you can’t explain it simply, you don’t understand it well enough.

Albert Einstein

To understand a CRM functionality, you need to understand its purpose.   Once you understand what it’s used for, how it works and why it works in that way.

CRM developers should Start with the CRM SDK and then explain it to yourself in your own words.

The purpose of the Activity entity is in the schema name – ActivityPointer.  Developers can retrieve all activities with one request, instead of multiple retrieves using the different activity types.

The activity views allow you to show all activities for a record, despite the activities being different types (e.g. Email, PhoneCall, Task)

The CRM SDK has a great page on Activity entities.

The diagram shows why understanding Activities is important, Activities are linked to the primary entities in CRM.  Activity entity acts like an interface between primary entities and individual activities.

Why do you need to know ActivityPointer?

ActivityPointer is a generic, it holds links to all activities.  You gain the ability to retrieve all Activities but lose the ability to retrieve individual fields or custom fields on the different Activities.

The alternative would be to have a Sub-grid for each different activity type!

activitypointer views

The ActivityPointer is a wrapper or interface to all activities, it includes the generic fields found on all activities.  Microsoft ensures activities have common fields by making you tick the activity checkbox when creating an activity entity.

ActivityPointer.ActivityId

ActivityPointer.ActivityId will have the same value as the Activity its wrapping.  Using the example of an Email activity.

Email.ActivityId will have the same value as the ActivityPointer.ActivityId

activitypointer view

activity pointer email fetchxml

Doing an advanced find for Activities, when you click on an Activity record it will open the Activity, e.g. click on Activity record of type email, it will open the email.

ActivityId’s are the same because an Activity record is created by CRM when an activity record (Task/PhoneCall/Email/etc) is created.

Activity Types

Doing an advanced find, you can use the Activity Type field on the ActivityPointer entity to see what Activites types can be ActivityPointer records.  The Activity Type is a Global option set

activity type

Activity Type – activitypointer_activitytypecode

activity type 1

IsRegularActivity?

There are lots of activity types which don’t look like regular activities, such as

  • Bulk Operation
  • Case Resolution
  • Opportunity Close

CRM creates activities when a Case/Opportunity is closed but why don’t these activities appear in the Activity views?

The field IsRegularActivity on the ActivityPointer entity is set to no for CRM created Activities.

If you search for all Activities you can view the non-regular activities, I mainly had Case Resolutions

activitypointer

Custom Activities

When creating a custom entity you can specify if the entity is an activity by checking Define as an Activity entity

activity checkbox

I have discussed this in detail in this blog post below

CRM 2013 – When should you create a custom activity entity?

Think about the security limitations of creating Custom Activities, e.g. Any security settings will be applied to all activities. It’s unlikely you want any security on activities because most users need to read and create activities.

Important facts to remember when creating Custom Activities

  • Custom Entities when created by default are not viewable/usable to any users apart from System Administrator and System customizer roles. Other security roles will have to add the entity (don’t forget)
  • If an entity is selected as an Activity this cannot be undone
  • Custom Activity entities are available to users who have access to other Activity entities

I have worked on a project where security concerns meant the custom Activitywas converted to a standard entity. We created a custom entity (Which you can apply security too), copied the data into your new entity, deleting the custom Activity.

Activity and SQL

ActivityPointer entity has an SQL table and Filtered view () created on the CRM database.

  • Table – ActivityPointerBase
  • Filter – ActivityPointer

Tables in the CRM database allows you to create reports using Activities.  Best practise is to use the ActivityPointer filter, why filtered views are useful

The blog post does an excellent job explaining Activity entity with SQL.

AllAboutActivity Entity Query Full Guidance in CRM 2011/2013 : Basic–Complex (ActivityPointer, ActivityParty) Queries in One Post

Activity coding problem

I needed to reactivate a case and reactivate the last Activity for the case.

The existing code activated Tasks but now I needed to activate Tasks and PhoneCalls.

Developer assumptions cause many bugs.  Functionality should work how the user wants it to work, not the developer, remember You are not the end user

I needed to check all the activities for the case and reactivate the last PhoneCall or Task activity.  Task and PhoneCall had a custom field which indicated if the Activity should be reactivated.

The custom field increased the complexity, ActivityPointer record doesn’t contain the custom field because ActivityPointer contains generic fields common on allActivity records.

My plan

  • Retrieve all the Activities using ActivityPointer
  • Loop through Activities, checking if the Activity was of type PhoneCall or Task
  • Use Activity.ActivityId to retrieve the Activity

Here is Linq query I used to retrieve ActivityPointer


        public List&lt;ActivityPointer&gt; GetRecentActivityForIncident(Guid incidentId)
        {
            this.tracingService.Trace("Enter Method GetMostRecenActivityForIncident");
            using (OrganizationServiceContext crmContext = new OrganizationServiceContext(this.crmService))
            {
                var mostRecentWrappedTask = (from t in crmContext.CreateQuery&lt;ActivityPointer&gt;()
                    where
                        (t.RegardingObjectId != null &amp;&amp; t.RegardingObjectId.Id.Equals(incidentId))&amp;&amp; ((int) t.StateCode.Value == (int) TaskState.Completed)
                    orderby t.CreatedOn descending
                    select t);
                return mostRecentWrappedTask.ToList();
            }

        }

After writing this post, there is a simpler solution.  I retrieved all the Activities and had to loop through the list, discarding activities until I got to a Task or PhoneCall.

I could have used the ActivityType filter to retrieve the ActivityPointer records with an ActivityType of PhoneCall and Task.

 

 

 


Filed under: CRM 2013, CRM 2015

CRM 2013 – Step by step guide to Remote Debugging

$
0
0

Only those who dare to fail greatly can ever achieve greatly.”

― Robert F. Kennedy

Developer fear

When I was a junior CRM Developer I couldn’t get remote debugging working, Visual studio wouldn’t attach, port problems etc.  I gave up because I need to resolve the problem.

Until I have done something I’m not sure I can get it working.

The mind makes unknowns scarier; it exaggerates and focuses on worse case scenario’s. Like visiting somewhere you have never been before such as you first day at school/university.  The location seems bigger and shrinks in size with familiarity.

Remote debugging is frustrating because to find out why a customization is erroring you need to debug it.

One day I came to work determined to get remote debugging working and after half a day of trying I got it working.

When using a tool or functionality for the first time, you are outside of your comfort zone (How to cope when you are out of your Developer comfort zone)

Why we need a CRM Developer toolkit

It’s important the CRM developer toolkit is updated and works with CRM 2015/Visual studio 2015.  The CRM developer toolkit makes it easier new CRM developers to write, update and deploy plug-ins.  We don’t want barriers for new CRM developers we want to encourage them to join the CRM development community.

Remote debugging considerations

Remote debugging has some drawbacks, if the plugins has isolation mode = “none” you use the CRM async service, W3p.exe.  This stops the CRM server  processing system jobs, other users have to wait until you have finished debugging.  This is frustrating for other developers because it stops them using CRM.

A better alternative is to test your code using unit tests or console app if I want to call it with data in CRM, this has no effect on other developers and units tests can be rerun by any developer.

Most scenario’s you can test your logic without using the remote debugger, Why CRM Developers should unit test their code

I wrote about remote debugging for CRM 2011 before

CRM 2011 – how to set up Remote debugging for plugins

If you experience problems setting up the remote debugger, try this blog

Remote Debugging CRM 2011 Plugin

Learn Remote debugging before you need it

It’s better to learn a process, new functionality before you use it for the first time on a project,

Make mistakes in practice, it’s a less stressful place to learn than on a live project

Get experience remote debugging before you need to use it.

Remote debugging can be a frustrating due to difficulties in setup and configuration.

Remote debugging is on for On Premise CRM only

You cannot remote debug CRM online.

To debug plugins deployed on CRM Online, you have these choices

The purpose of remote debugging is to test the logic.  You can recreate the scenario from in dev by recreating the data.  Remote debugging shouldn’t be the first tool when diagnosing a problem, it can affect performance and other developers

  • Unit Test
  • Console app and Test plugin code
  • Plugin Registration tool

The debugging option work with CRM On Premise but you cannot use the remote debugger with CRM online.

You can unit test code and create a connection for IOrganisationService to your online CRM and pass and then run unit tests.

Console App

Create a console application, connect to your CRM online and test the code, mimicking the plugin.

Plugin Registration tool

The plugin registration tool can debug the code, it has the advantage of not freezing the whole server because it works with CRM on premise and CRM online.

This video has a good walkthrough of the process Debug CRM Online Plugins

CRM 2015 has added plugin tracing, read more about it here and here

Remote debugging steps

The process is the same for CRM 2011, CRM 2013 and CRM 2015 plugins.  Custom Workflows are different, this blog post walks through the process – Debugging Workflow Custom Activities with Plugin Registration Tool

In this blog post I focus on using the remote debugger and a plugin

I’m using CRM Developer toolkit and running the remote debugger, you can run it as a service which runs all the time (called Remote Debugger) or you can run it as application. which starts when you need it.

Running as a service is it’s always running and can be set to auto start on server reboots.

The downside is the remote debugger service will always be running and taking a bit of server memory/processing (although not much).  You can stop the service if you need.

Developers should use remote debugging in a development environment.

Build the plugin

Copy the plugin/custom workflow .dll and .PDB files to the CRM server directory

C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly

If you haven’t installed CRM on the C drive then you need to look for it on another drive

The DLL’s and PDB copied to the server must contain the code you want to debug in Visual Studio.  If the code on your local machine is different from the deployed plugin you won’t be able to debug

Important – Copy the .dll and .PDB files to C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly

Important 2 – Any dependencies in your plugins (dll‘swhich are not in the GAC need to be copied to the server as well.

I copied the PDB files here

C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly

What is a PDB file?

You may be wondering what a PDB file is, my knowledge of them is you need them for debugging and they contain the code you have written where as the DLL has the compiled code. 

Wiki describes PDB file as

http://en.wikipedia.org/wiki/Program_database

PDB stands for Program Database, a proprietary file format (developed by Microsoft) for storing debugging information about a program (or, commonly, program modules such as a DLL or EXE). PDB files commonly have a .pdb extension. A PDB file is typically created from source files during compilation. It stores a list of all symbols in a module with their addresses and possibly the name of the file and the line on which the symbol was declared. This symbol information is not stored in the module itself, because it takes up a lot of space.

A PDB is needed for debugging, it isn’t needed when you deploy your plugins or custom workflows.

recap of steps

  • Ensure the remote debugger is running as a service or application
  • Build the plugin
  • Deploy the plugin
  • copy the DLL and PDB to the CRM server folder
  • C:\Program Files\Microsoft Dynamics CRM\Server\bin\assembly

Attaching the process

You should be ready to attach Visual Studio to the process and wait for the code to be trigger and your visual studio breakpoint to be hit.

Set a breakpoint in the plugin, put the breakpoint at one of the first lines to avoid breakpoints not being hit because their code was either erroring or not being triggered.

Press the Attach button

remote debugger attach

Brings up this page, it will default to your local machine but you need to put in the name of the CRM server and the port used in the remote debugger.

If my port was 4016 and the CRM server was called CRM server.

CRM Server:4016

Remote Debugging 3

Make sure you tick Show Processes from all users, if you don’t you won’t be able to see the CRM services because  they are most likely run as a different user.

If you don’t know your port number, you can go to the CRM server, open the Remote Debugger to find the path of the application

Remote Debugging 1

click on msvsmon and it will error and tell you the port number you are using.

Remote Debugging 2

When you put in the correct CRM server and port number, the services running will be listed.

If you plugins are in the sandbox (Understanding Plugin sandbox mode) you need to attach the to the process Microsoft.CRM.Sandbox.WorkerProcess.

remote debugging

Usually there are multiple Microsoft.CRM.Sandbox.WorkerProcess. This is because you get one for each CRM web page.  It’s difficult to work out which process is the process you want to debug, so I usually select all of the Sandbox WorkerProcesses to ensure I debug my process.

The final stage is to trigger the plugin and debug your plugin.

Good luck


Filed under: CRM 2011, CRM 2013, CRM 2015, debug, Development

Hosk’s Top CRM Articles of the week – 20th November

$
0
0

I moved job this week and start my new role at KPMG Crimsonwing.  I noticed they are presenting at Convergence 2015, awesome.

Fasinating fact

What is the difference between raisins, currants and sultanas?

  • Raisins     = any dried white grapes
  • Currants  = dried Black Corinth (also known as Zante)  grapes
  • Sultanas  = dried white seedless grapes, originally from Turkey. Usually Thompson Seedless variety.

Quotes

The first principle is that you must not fool yourself and you are the easiest person to fool.

Richard P. Feynman

If you can’t explain it simply, you don’t understand it well enough.

Albert Einstein

Article of the week

There were 3 great tools released in the last week

XrmRichTextEditor component released

This tool adds a rich text editor, which is useful

Introducing the Alexander Development Dynamics CRM Configuration Data Mover

This tool is great, it allows you to move data between your CRM organisations and keep the same guid.  This is useful if you have workflows which use custom entity records.

D CRM Editable Grid

An editable grid, which a lot of end users like.

Best of the Rest

CRM 2015 – What developers need to know about the activity entity

In-depthh article on the Activity entity, otherwise known as ActivityPointer

Dynamics CRM as an xRM Development Platform

Great article discussing why CRM is a great XRM platform

CRM 2013 – Remote Debugging

How to remote debug CRM 2013 on premise plugins.

CRM Web API Using C#

A run through of the Web API using C# from CRM MVP Jason Lattimer

CRM 2011 – How to set an attribute label in Javascript

It’s possible to get the a field’s label using JavaScript

When to automatically change fields using Javascript

Some tips from Hosk about when to change fields using JavaScript.

All About Activity Entity Query Full Guidance in CRM 2011/2013 : Basic–Complex (ActivityPointer, ActivityParty) Queries in One Post

Indepth article on activity entity and SQL queries.

Video: 8 Great Techniques to Assure a Smooth Migration to Dynamics CRM 2015

8 tips delivered by a very happy sounding lady.

Get the Entity Type Code using JavaScript only (not using remote services)

Interesting but unsupported trick to get the entity type code

ExecuteMultiple & Workflow or Plugin Assemblies

Execute Multiple is useful if you plan to update lots of records but it does roll them all back if there is an error.

CRM 2013 – Understanding Auditing, Tips, Tricks and Gotchas

Microsoft unveils German data plan to tackle US internet spying

Microsoft Adds a new EU data centre.

Permissions Issues for CRM 2013/2015 Forms

form permissions

CRM 2013 – When using FetchXML is better than OData

FetchXML has useful functionality like distinct

Tip #517: Disabled user’s personal views

How to disable users personal views

NOTES FROM THE FIELD: WORKING WITH DYNAMICS CRM DIALOGS

Some advice about using Dialogs

Understanding Auditing in CRM 2013

Programming

Most developers have never seen a successful project

Great story of message flaky tests

Scrum is the new waterfall

other

Learn about Elon Musk

The Cook and the Chef: Musk’s Secret Sauce – Wait But Why

How Tesla Will Change The World – Wait But Why

Why Early Decisions Have the Greatest Impact and Why Growing too Much is a Bad Thing

Why you should read

Shane Snows reading list

5 Real-Life Salary Negotiations (And What You Can Learn From Them)

Previous top picks

Hosk’s Top CRM Articles of the week – 10th November

Useful Hosk Links

Hosk list Of CRM 2013 Tools

A list and review of CRM 2013 tools, this will probably work in CRM 2015 as well

Hosk’s CRM Developer Articles

A collection of my favourite CRM Developer articles I have written

MB2-703 – CRM 2013 Customization and Configuration Certification Information

All the CRM 2013 content to help you pass the exam

HoskWisdom – Hosk Developer Quotes

 Words of Wisdom from the Hosk.  I have written over 900 articles, surely I should have said a few memorable things


Filed under: CRM 2011, Hosk’s Top CRM articles of the week

CRM 2015 – How to set focus in Javascript

$
0
0

I wanted to set focus in Javascript after a user had changed a field to yes, this triggered an onchange event.  The onChange event set a new tab to be visible.

The new tab was below and the users didn’t always know it was there, so I wanted to nudge them in the right direction by setting focus on the tab.

Microsoft has added a great framework for manipulating the controls.  The Javascript for setting focus works on the Control level

Xrm.Page.getControl(arg).setFocus()

Xrm.Page.ui.tabs.get(“tab_schemaName”).setFocus();
Xrm.Page.getControl(“ntt_reviewteamid”).setFocus();

This blog post has a great page, it highlights the functionality available in the CRM SDK, displaying the logical structure of the JavaScript wrapper created for development

Microsoft Dynamics CRM 2013: Client API Enhancement

 

Different Versions

It’s important to check the CRM SDK XRM documentation because each release of CRM adds and removes functions.

Xrm.Page.ui control (client-side reference)

The CRM SDK documentation shows the functionality available for each release by selecting the CRM version in the drop down at the top of the page.

Javascript versions

When you select a different version it will change the methods available.  This enables you to see what functionality is available for each version and what new functionality has been added.


Filed under: CRM 2011, CRM 2013, CRM 2015, Javascript
Viewing all 469 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>