Thursday, June 11, 2009

MS CRM 4.0 Exam Course Material

Finally I got what I wanted, Course Materials for MS CRM 4.0 certifiaction.

  • MB2-631: Microsoft Dynamics CRM 4.0 Customization and Configuration
    (Course 8912)
  • MB2-632: Microsoft Dynamics CRM 4.0 Applications
    (Course 8913)
Please email me to get it: crmaddict@gmail.com

Wednesday, December 17, 2008

MS CRM 5.0 new features

A look at MS CRM 5.0

Features for End Users:

Ribbon Menu – RibbonMenu as in Office 20007 will appear on top of the form in MS CRM 5.0. A customizer can still customize the toolbar and add user defined buttons to this menu by modifying ISV.Config file.

 

Modified Enity Forms - In CRM 4.0, tabs were used to display and group data but in MS CRM 5.0 there would be a navigation on the left hand side of the form.


Data Filtering – User would be able to filter data in Views forms by clicking and selectin the Grid Headers. 


Charts – Charting feature would be available. See below:

Team Ownership – In CRM 4.0, entities were either owned by User or Organization. But in MS CRM 5.0 there will be Team Owned entities with role-based security model.

Native SharePoint Integration – There is an integration support with Windows SharePoint Services for document management. It includes site & document library provisioning, document metadata, item security, and check-in/check-out capabilities.

New Features for Administrators

Flexible Form Layout - We now have much more flexibility in how forms are laid out, for example, we can position sections side-by-side, as well as field labels on top, left or right of each field. Best of all, we can now configure "In-Line Sub-Grids" for child records, so a combination of IFrames & JScript is no longer required to make this work. 

Filtered Lookups - One of the most requested features has finally made it into the product. Whilst customizing the form, you can choose a pre-defined view or better still you can filter by a related lookup on the same form. 

Form Headers & Footers - Now that all tabs, sections and fields appear on a single, scrolling form, it is quite possible the form will get become quite long and you will end up scrolling up and down more often to find the information you require. In order to make the most commonly required visible at all times, you can now place these fields in a header or footer so that they will always be displayed regardless of the scrolling.

Solution Management - With CRM 4.0, you had to implement a manual process when customizing your solution, to make sure that you didn't overwrite previous customizations, or disrupt any 3rd party ISV solutions. In CRM5 we had now added the concept of solutions. 

A solution is a defined set of entity customizations, workflows, e-mail templates, security roles, plug-ins etc. that can be managed as a single unit. Each solution is version controlled so presumably your can have multiple versions of the same solution installed, and roll-back to a previous version if necessary. 
You can also define solution dependencies where one solution can only be installed if another solution is also installed. For example, you might have a base solution for your whole organisation, with a departmental specific solution built on top of it. 

Namespace collision is avoided by defining publishers, with each publisher having a unique namespace. This avoids the common issue where the default namespace "new_" is used for all customizations, leading to potential namespace conflicts. 
One final plus point is that you can now specify which attributes will be exported as part of a solution, rather than having no choice but to export the whole entity.

Multiple Option Sets - Otherwise known as "Global Picklists", you can define these at the solution level, and re-use them across multiple entities.

Drag & Drop Form Editor - One of the most time consuming customization tasks in CRM 4.0 is the form design. Every time you want to add, remove or re-position tabs, sections and attributes, you have to go through a multi-click process. With CRM5, you can now drag and drop all elements of a form, speeding up the process considerably 

Audit - Although not explicitly mentioned during the sessions, I spotted an "auditing" setting on the attribute designer form, allowing you to turn auditing on or off. 

New Features for Developers:

Custom Code Sandbox - There is a new server role for running custom plug-in code and custom workflow activities without requiring full trust. This means that it will be possible to run custom code in the CRM Online environment and achieve true parity between On-Premise, Partner-Hosted and Microsoft-Hosted deployments.

Plug-In Transaction Support - In CRM 4.0 you could register a plug-in to run either before (pre-event) or after (post-event) the CRM platform operation. However, you were not able to run as part of the transaction itself, so you had to right your own compensation logic in the event the CRM platform operation failed. CRM5 addresses this limitation, and you can now choose to register you plug-in as part of the platform operation. The CRM5 plug-in registration tool has been modified to support this. 

Automatic Plug-In Profiling - CRM5 will keep track of how a plug-in is executing, what resources it consumes, if it is causing unexpected exceptions and whether or not it is violating security constraints. If a particular plug-in fails a number of times it is automatically disabled from executing, helping to maintain system integrity.

I want to add here only that also the CRM Workflow side will be improved a lot and the WF usage will be extended.

Do you remember how many times we've asked the Team to have filtered lookups? So natural request I think... In CRM 5.0 we'll have this feature!!

I have also a personal request: I hope on improvements regarding data import and data migration. CRM 4.0 helps a lot on data migration but it's not always so easy to migrate large amount of data from a custom system to CRM (due to the import processes that sometimes are "freezing").


Some time back I saw these feature listing on Simon Hutson's post on MS CRM 5.0. Also for complete list of features with screen shots refer here also.

Monday, December 15, 2008

How to delete records from CRM web forms using javascript in MS CRM 4.0

function DeleteEntityRecord(entityName, attributes, orgName)
{
      //attributes = #accountid> 92384923 #/accountid>#firstname>harry#/firstname> ...
  var xmlString = "#?sXml version='1.0' encoding='utf-8'?>";
      xmlString +="#soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>";
      xmlString +="#soap:Header>#CrmAuthenticationToken xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>";
      xmlString +="#AuthenticationType xmlns='http://schemas.microsoft.com/crm/2007/CoreTypes'>0#/AuthenticationType>";
      xmlString +="#OrganizationName xmlns='http://schemas.microsoft.com/crm/2007/CoreTypes'>" + orgName + "#/OrganizationName>";
      xmlString +="#CallerId xmlns='http://schemas.microsoft.com/crm/2007/CoreTypes'>00000000-0000-0000-0000-000000000000#/CallerId>";
      xmlString +="#/CrmAuthenticationToken>";
      xmlString +="#/soap:Header>";
      xmlString += " #soap:Body>" +
      xmlString +="   #Delete xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>";
      xmlString +="     #entity xsi:type='" + entityName + "'>";
      xmlString +=  attributes;
      xmlString +="     #/entity>";
      xmlString +="   #/Delete>";
      xmlString +=" #/soap:Body>";
      xmlString +="#/soap:Envelope>";


      oXmlHttp.open("POST", "http://localhost/mscrmservices/2007/crmservice.asmx",false);
      oXmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
      oXmlHttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Delete");
      oXmlHttp.send(sXml);
      
  var results = xmlHttpRequest.responseXML;
}

Please replace '#' with '<' after copying and before pasting..:)

How to update records from CRM web forms using javascript in MS CRM 4.0

function UpdateEntityRecord(entityName, attributes, orgName)
{
      //attributes = ?accountid> 92384923 ?/accountid>?firstname>harry?/firstname> ...
  var xmlString = "??sXml version='1.0' encoding='utf-8'?>";
      xmlString +="?soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>";
      xmlString +="?soap:Header>?CrmAuthenticationToken xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>";
      xmlString +="?AuthenticationType xmlns='http://schemas.microsoft.com/crm/2007/CoreTypes'>0?/AuthenticationType>";
      xmlString +="?OrganizationName xmlns='http://schemas.microsoft.com/crm/2007/CoreTypes'>" + orgName + "?/OrganizationName>";
      xmlString +="?CallerId xmlns='http://schemas.microsoft.com/crm/2007/CoreTypes'>00000000-0000-0000-0000-000000000000?/CallerId>";
      xmlString +="?/CrmAuthenticationToken>";
      xmlString +="?/soap:Header>";
      xmlString += " ?soap:Body>" +
      xmlString +="   ?Update xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>";
      xmlString +="     ?entity xsi:type='" + entityName + "'>";
      xmlString +=  attributes;
      xmlString +="     ?/entity>";
      xmlString +="   ?/Update>";
      xmlString +=" ?/soap:Body>";
      xmlString +="?/soap:Envelope>";


      oXmlHttp.open("POST", "http://localhost/mscrmservices/2007/crmservice.asmx",false);
      oXmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
      oXmlHttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Update");
      oXmlHttp.send(sXml);
      
  var results = xmlHttpRequest.responseXML;
}

Please replace '?' with '<' after copying and before pasting..:)

How to avoid Mouse 'Right Click' Paste feature


function Disable_RightClick()
{
    if(event.button == 2)
    { 
        window.clipboardData.clearData();
        return false;
    }
}

crmForm.all.firstname.attachEvent("onmousedown",Disable_RightClick);

How to avoid Copy Paste in input fields

Here is a code to avaoid 'Ctrl+V' use by the users on field that you want to enforce double validation on:

function KeyPressed(e) 
  { 
    var evt = typeof window.event != 'undefined' ? window.event : e; 
    var val = evt.keyCode == 86; 
    if (evt.ctrlKey && val) 
    { alert(evt.ctrlKey +", "+ val);
      if (evt.stopPropagation) 
      { 
        evt.preventDefault(); 
        evt.stopPropagation(); 
      }
      else 
      { 
        evt.cancleBubble = true; 
        evt.returnValue = false; 
      } 
  } 
crmForm.all.firstname.attachEvent("onkeydown",KeyPressed);

How to disable save buttons on MS CRM form

Disable 'Save':
document.all._MBcrmFormSave.style.display='none'; 

Diable 'Save and Close':
document.all._MBcrmFormSaveAndClose.style.display='none'; 

Disable 'Save and New':
document.all._MBcrmFormSubmitCrmForm59truetruefalse.style.display='none';