Tuesday, January 27, 2015

Resolve Circular Reference in CRM data import

Generally when importing data into CRM.. most of the time we will struggle when there is a circular reference between entities.

Suppose if we want to import Account (Company) and contact information into CRM. and want to update company's primary contact which is in contact and Contact's company information which is in Account.

In this case easiest way to import and update circular reference is import both entities data together as zip.

Compress contact.csv and account.csv file into one .zip file, and then using CRM Data Import import zip file.
CRM is supporting for .zip, xml, text and csv file.

Once you uploaded zip file in import wizard, you can select individual file and create mapping for
each file





Map your fields properly and import.. 

You can load only 8 MB of file (xml, csv, text) or 32 mb of zip file for data import. 





  

Thursday, January 22, 2015

Disable HTML web resource control from CRM Form events

Call below function on CRM form event to access HTML web resource control by tag or Id



function DisableHTMLWebresouceControl()
{
//Get HTML web resource control
 var webRefCtrl = Xrm.Page.getControl('Your web resource ID from form').getObject();

 //web resource HTML document
 var htmlDoc=webRefCtrl.contentDocument;

 //get list of controls by tag name
 var ctrlList = htmlDoc.getElementsByTagName('select');

 //get list of controls by Id
 var ctrlById= doc.getElementById('textCtrl');

 //If web resource is not loaded yet, then call same function after some time.
  if(ctrlList[0]==null)
  {
     setTimeout(DisableHTMLWebresouceControl,1000)
     return;
  }
 
 // disable control in HTML web resource.
 ctrlList[0].disabled =true;
}


Wednesday, January 21, 2015

View Sorting more than two columns

In CRM when creating view, CRM UI is allowing to sort view by only two columns.



User can sort views by multiple columns when it views opens and by using [SHIFT + click] on multiple columns.



 When we want to sort view by multiple columns when it opens, then need to export customization and need to made changes in customization xml.

Step 1:  Export customization of entity whose view want to sort by more than two columns.
Step 2: Extract and open customization.xml file in Visual studio or XML editor.
Step 3: In the Customization.xml look for Savedquery section for your entity.
Step 4: Find Savedquery of view which you want to sort by more than two columns.
  Saved Query has LocalizedName tag which gives view name.  
Step 5: To sort by more column we need to modify fetchxml of saved query.
General saved query fetch xml will be like

<fetchxml>
              <fetch version="1.0" mapping="logical">
                <entity name="edm_test">
                  <attribute name="edm_name" />
                  <attribute name="createdon" />
                  <order attribute="edm_name" descending="false" />
                  <order attribute="new_age" descending="false" />
                  <filter type="and">
                    <condition attribute="statecode" operator="eq" value="0" />
                  </filter>
                  <attribute name="new_phone" />
                  <attribute name="new_email" />
                  <attribute name="new_date" />
                  <attribute name="new_age" />
                  <attribute name="edm_testid" />
                </entity>
              </fetch>
         </fetchxml>

To sort by more columns add order tag as
             


Final fetchxml will be
<fetchxml>
              <fetch version="1.0" mapping="logical">
                <entity name="edm_test">
                  <attribute name="edm_name" />
                  <attribute name="createdon" />
                  <order attribute="edm_name" descending="false" />
                  <order attribute="new_age" descending="false" />
    <order attribute="new_phone" descending="false" />
                  <filter type="and">
                    <condition attribute="statecode" operator="eq" value="0" />
                  </filter>
                  <attribute name="new_phone" />
                  <attribute name="new_email" />
                  <attribute name="new_date" />
                  <attribute name="new_age" />
                  <attribute name="edm_testid" />
                </entity>
              </fetch>
         </fetchxml>

Step 6: Save customization.xml file, import and publish.