I posted a blog article about CRM 4.0 Plug-In on our company blog, hope to give CRM developers some ideas on what CRM plug-in is, etc...
click the link below to view the article.
http://crowechizek.typepad.com/crm/2007/10/microsoft-dyn-2.html
I posted a blog article about CRM 4.0 Plug-In on our company blog, hope to give CRM developers some ideas on what CRM plug-in is, etc...
click the link below to view the article.
http://crowechizek.typepad.com/crm/2007/10/microsoft-dyn-2.html
CRM 4.0 is available for partners to download, you can download the image from the link below:
https://mbs.microsoft.com/partnersource/products/mscrm/
The CRM application expire 11/20/2007 and the VPC image itself expire 11/30/2008.
The new CRM Titan data import tool has been improved from the previous version and it's also easier to import data into CRM. The data migration tool contains the following new features:
The migration tool for Titan can do more than the Data import tool of course. You can :
CRM Data Migration tool is a separate install and it didn't install by the default CRM installation. Both Data Migration and Import tool will first go through creating/updating the metadata first, then import the data to CRM.
There's a lot more you can do with the data import and migration tool now, I am still digging the tool to see what it can do. :)
When you trying to create a view or do an advance find in CRM, you are restricted in CRM version 3.0 to only display the fields of the entity you are currently working with. The ability to show related entity data, although often requested, was not possible. With Titan (CRM 4.0), you can now display the fields from the primary entity and related entities. For example, you may want to return opportunity records with columns related to the estimated opportunity amounts and close dates but also see the account name and state in the view (or resulting Excel export), with Titan, this is now possible.
I will provide a more detailed example later this week, but for the moment I wanted to show off a new feature in the next CRM release that I think will make many users (and implementers) very happy. Take a look at the screen shot for a quick preview (click on image thumbnail to get a full size image).
From the CRM blogs, many people asked how to add a secondary lookup to the Account and Contact form? Due to CRM 3.0's limitation, we are not able to create another relationship between account to contact or contact to account.
To add another lookup, we need to use JavaScript to inject some codes to the CRM form. The way that I am showing here will not create a relationship between the entities. Instead, it will store the Name and the GUID with the record. I used JavaScript to add a lookup fied to the form. In this sample, I will add a secondary contact lookup to an Account.
Pro: You will able to create the lookup field and also able to use the CRM lookup box. You can create as many as you wanted. :=)
Con: If the Name changed for the contact, it will not update the name that store in the account entity. If you want to upda the name, you need to write a postcallout to update the name in the account record.
Here are the steps to create a secondary lookup:
Step 1: Create two custom attributes in the Account Entity.
Display Name: Secondary Contact
Schema Name: new_secondarycontactname
Type: String
Description: Stores the Contact name
Display Name: Secondary Contact Value
Schema Name: new_secondarycontactvalue
Type: String
Description: Stores the GUID for the Contact
Step 2: Add two newly created attributes to the account form.
Take out the label for "Secondary Contact Value" field. We will use JavaScript to hide the "Secondary Contact Value" field later.
Step 3: Insert the following code to the Account form onLoad event.
The code below will replace the Secondary Contact text field with a Lookup box.
--------------------------------------------------------------------------------
crmForm.all.new_secondarycontactvalue.style.visibility="hidden";
customSecondaryLookup("new_secondarycontactname");}
catch(e) {alert(e.description);
}
}
}
function customSecondaryLookup(displayFieldName){ { try { var fld = crmForm.elements[displayFieldName]; var temp = fld.value; if (temp.length == 0){fld.insertAdjacentHTML("afterEnd","<table class='lu' cellpadding='0' cellspacing='0' width='100%' style='table-layout:fixed;'><tr><td><div class='lu'> </div></td><td width='25' style='text-align: right;'><img src='/_imgs/btn_off_lookup.gif' id='" + displayFieldName + "' class='lu' lookuptypes='2' lookuptypenames='contact:2' lookuptypeIcons='/_imgs/ico_16_2.gif' lookupclass='BasicCustomer' lookupbrowse='0' lookupstyle='single' defaulttype='0' req='0'></td></tr></table>");
}
else {fld.insertAdjacentHTML("afterEnd","<table class='lu' cellpadding='0' cellspacing='0' width='100%' style='table-layout:fixed;'><tr><td><div class='lu'><span class='lui' onclick='openlui()' oid='" + temp + "' otype='2' otypename='contact'><img class='lui' src='/_imgs/ico_16_2.gif'>" + crmForm.all.new_secondarycontactvalue.value +"</span></div></td><td width='25' style='text-align: right;'><img src='/_imgs/btn_off_lookup.gif' id='"+ displayFieldName +"' class='lu' lookuptypes='2' lookuptypenames='contact:2' lookuptypeIcons='/_imgs/ico_16_2.gif' lookupclass='BasicCustomer' lookupbrowse='0' lookupstyle='single' defaulttype='0' req='0'></td></tr></table>");
}
fld.parentNode.removeChild(fld);
fld = crmForm.elements[displayFieldName];
fld.value = temp;
---------------------------------------------------------------------------------
Step 4: Insert the following code to the Account form onSave event.
The code below will stripe out the GUID for the Contact from the return lookup HTML and save it to the Secondary Lookup Value field.
---------------------------------------------------------------------------------
var S_CONTACT_NAME = crmForm.all.new_secondarycontactname.parentElement.parentElement.firstChild.innerText;crmForm.all.new_secondarycontactvalue.value = S_CONTACT_NAME;
---------------------------------------------------------------------------------
Step 5: Save the Account Form.
Step 6: Publish the Account Form.
Happy Programming!
For those who would like to get GP and CRM integrated, I am highly recommend using Scribe. Scribe provides a template for the integration. All of the standard fields are pre-mapped, what you needed to do is to modify the template for any custom fields that you created in CRM or GP that you would like them to integrated.
In order to do the integration, you need eConnect for getting data out of GP which eConnect is provided to you for free. You also need Scribe Workbench (Tool to define the mappings), Scribe Insight (Like a job scheduler), CRM Adapter and GP Adapter. The cost of the Scribe pakage is around $4,000, which can save you a lot of time and effort comparing to other integration methods. The other benefit of using Scribe is that you can use Scribe for other data integration and migration.
If you wonder how the number is generated for access certain records in CRM. Here's a reference for you.
Access Right Values:
Read = 1
Write = 2
Append = 4
AppendTo = 16
Create = 16
Delete = 65536
Share = 262144
Assign = 524288
So if you want to grant read and write access, then just add up the read and write value. (e.g. Read (1) + Write (2) = ReadWrite (3) )