by Sandra
12. January 2012 17:33
by agarcia
6. September 2011 14:05
Here at Webfortis, we use a standardized and well documented methodology for our CRM Design to help maintain quality control in our CRM projects
[More]
by Alex Aquila - Technical Project Manager
5. August 2011 15:42
We recently encountered an issue where we needed to import a large data set from CRM 4.0 to CRM 2011. In CRM 2011, there are no methods available in the SDK that will allow you to modify the createdon, createdby, modifiedon, modifiedby fields.
The baton was passed to me to write a TSQL script that would loop through all the rows in a bridge table and find correlating records in a CRM 2011 target then update certain system protected fields before moving to the next row of data.
The first part of the solution was to have Scribe write this information to a temporary table. The second part is to read this information and populate the necessary fields in CRM.
Our bridge table had the following schema:
Scribe writes to this table whenever it performs an insert. So, when the scribe import is done running, you have all of the necessary information stored in this table. It is then just a matter of moving it from the temp table to CRM.
Here is the script we used to accomplish this. The idea is to cursor through the rows and update as necessary in CRM. The script was built to run in multiple different environments (development, QA, production) with having to change only the variables at the top.
After running this little gem, we were able to open any of the records and see verified historic data across the board! Win one for the good guys.
by agarcia
27. July 2011 09:48
…I got a call from one of our project team members regarding the Scribe packages that had been built for a client. Apparently, the client needed us to migrate over data from system protected fields to maintain valid historic values. Ok, I’m down with that.
Having been involved in the upgrade process and hurdles with this client at earlier stages, I was aware that they had issues with AD users. Having come from a history of CRM 1.0, I could feel the scars of the past tingling. My mind was racing… “deleted AD users = orphaned SystemUser GUIDs…orphaned GUIDs = ‘Object not set to an instance of an object’ errors…” Ughhh.
I quickly determined a default user to use in the case that the source user had been deleted, then proceeded to set variables using the cross reference key values stored in the Scribe Internal database from when the SystemUser entity rows were written originally to the target. As basic as it seems, the formula called XREFLOOKUPNOLOCK_BKEY([label]”SystemUser”, S[x]). Not so magically, the return value of the formula pulled the new CRM 2011 SystemUser GUID where it found the matching CRM 4 SystemUser GUID in the cross reference table. Bam!
Now that I had the GUID values that would either match to an active user lookup value or fail to the default system user, I had to find a way to write the data into the target. Remember, these are system protected fields, so we all knew the Scribe CRM Adapter would be a bust….
Understanding that the Scribe Adapters for CRM communicate through the presentation layer and not directly to the data layer, I knew that the CRM SDK (the foundation for the Scribe Adapter) would not allow an Update function against these system protected fields (hence they are system protected!). Thinking it would be easy to change my adapter to use the OLEDB connection to the CRM database (yes, I know it’s unsupported), I quickly pointed my source to the new target connection and Viola! all test rows passed successfully. Job done; go home, right? Not really.
While the rows all seemed to pass through the OLEDB connection fine, they didn’t get committed to the database completely. So, since we had already gone down the path of unsupported methods, we decided to go with a straight TSQL script. However, since we had already validated our lookups and defined what our static source data elements would be, we got a little creative. Rather than write a set of TSQL nested cursors to do lookups and validations, we added a secondary target to all of our Scribe packages which contained all the key value pairs between the CRM 4 and CRM 2011 records. We sent this master bridge information to a custom table we created in the Scribe Internal database and used that as our source for a single tiered cursor. Not only did we mitigate the execution time of a would-be hectic cursor in SQL, but we also created a veritable audit log for the migration effort by safely storing the migration mapping values!
Now that the stage was set, I passed my bridge table information along to our script master.
by Chris Driscoll
26. July 2011 13:14
In a recent project with one of our larger On Premise customers, we were tasked with an upgrade from CRM 4.0 x86 to CRM 2011. As most readers should know, there is no direct upgrade path for this scenario due to the 32-bit to 64-bit disparity. Using the Microsoft Implementation Guides for both CRM 4.0 as well as CRM 2011, we devised a plan to first migrate CRM 4.0 from x86 platform to x64. This was easy as expected. From there, we had expected to perform an in-place upgrade from CRM 4.0 to CRM 2011 but due to some inconsistent changes to the client’s Active Directory, this quickly became impossible!
Faced with a more traditional migration effort, we quickly chose to deploy Scribe as a part of our overall tactics. Our new plan was to take the x64 CRM environment, export the customizations, security roles, and workflows, then re-import them into a new empty CRM 4.0 organization. From there we were able to get through a semi-successful in-place upgrade from CRM 4.0 to CRM 2011. This was only semi-successful due to all the common and known issues with in-place upgrades. But at least we had a CRM 2011 Solution set we could now work with (regardless of how ugly the upgrade process left things)! We took the Solution and deployed it to our final target server and began to run the Scribe packages we had configured to port over all the data. Everything went perfectly!
So what’s the point of the blog then? While there were no errors produced by the Scribe packages, it was because the system protected fields cannot be mapped inside of the packages. When our client reviewed the data for validation, they quickly defined that they would need the static history values for system protected fields like CreatedOn, CreatedBy, ModifiedOn, ModifiedBy and so on. This is where we had to get creative…so I put a call into the Scribe guy….
by Madeline
30. June 2011 15:08
The Microsft Dynamics CRM Sustained Engineering Team released Update Rollup 18 for Microsoft Dynamics CRM 4.0 today. For more information about Update Rollup 18 go to: http://bit.ly/ipotky.
by Webfortis
20. December 2010 12:11
In a recent XRM project for a client who uses CRM to manage grants and grant distributions, we had created several custom entities with many relationships among them as well as with core system entities. After loading approximately a half million records across 6 custom entities, we discovered that we could no longer delete attributes or entities using the customization administration settings within the CRM client. The error we received was generic as indicated below.
After a bit of diagnostics, a handy-dandy SQL Trace, and some SQL Performance Monitoring we discovered that indexes needed to be rebuilt. The performance metrics of the data layer were too slow for the application layer, so the CRM interface was receiving a general timeout error and sending it back to the users in the form of this generic message!
This reminded us of a few very important factors to keep in mind for any CRM [On Premise] deployment.(CRM Online deployments won’t apply since the hosting data center proactively monitors and manages the data layer routinely – win one for the Cloud!)
First, it is important to remember that CRM automatically manages indexes for all system tables and custom entities. It will also create a core Primary Key/Foreign Key relationship between entity relationships; even when the relationships exist only between custom entities. However, in most cases system entities are optimized by containing several additional indexes that get created during the original installation (or Update Rollup application) of the CRM Server. This is what can be missing with custom entities and lend toward problems. Without this added level of initial optimization, custom entities can become corrupted after bulk loading and bulk deletions. Broken or missing indexes leads to slower performance, which in turn can lead to data layer timeouts and the error that we were seeing.
Second, in this day and age of advanced and enhanced Line of Business (LOB) applications, it is safe to assume that large sets of data could be continually loaded and unloaded from a system, thereby reproducing the issue just described. After all, CRM does natively expose 100% of the custom entities added to the out of the box Import Wizard, so for everyday users to bulk load and bulk delete is a very real (and business viable) prospect.
Third and final, taking into account these first two comments, it makes good sense to build out a SQL Maintenance plan that includes a nightly re-organization of all core entity, custom entity, and entity extension tables and a weekly rebuild of indexes for all tables in the organization database (including the metadataschema.[name] tables). It’s important to note that the recommended fragmentation threshold for reorganizing indexes is 30% and greater than that the recommendation is to rebuild the indexes. Identifying a table’s current fragmentation is as easy as using the DBCC SHOWCONTIG procedure or better yet, the new sys.dm_db_index_physical_stats object since dbcc showcontig is deprecated post SQL 2008 R2.) Also, be sure to note which licensing version of SQL is installed. All license versions except Enterprise will require the database to be put into Single-user mode during a rebuild of indexes, so if you plan to perform online indexing be sure you have the right license version first!!
ff4ad957-5952-4379-9a7b-cb16f5a5d13f|0|.0
Tags:
Categories: CRM 4.0
by Webfortis
5. August 2010 10:26
Google/Bing maps implementation
Integrating any mapping technology into CRM provides you with quick access to where you want to go. By following these steps, you'll be able to add Bing maps and/or Google maps to your system in no time. This works with Online as well as On Premise.
What are the benifits from this? Simple.
1) There's no need for a hosted page (.aspx or .htm)
2) You get current, real time address values from the Account (or Contact) page. In other words it will just pull from your entered data and the page and it checks it dynamically without having to hit save (the maps query the fields when they are selected on the tabs).
As you can see, this example uses the Account page, but you can apply this to any entity.
Here are the steps:
Note: Only type what is in between the quotation marks (except in the code)
Step 1: Go to Settings >> Customization >> Account >> Forms and Views >> Form.
Step 2: Click “Add a Tab” and type in a name. (In our case we are using “Map It!”)
FIGURE A
Step 3: You should see your new tab appear on the screen. Next, click “Add a Section” and type in a name. (In our case we are using “bMap”) Click OK.
Step 4: Click your bMap section and click “Add an IFRAME” and type in a name. (In our case we are using “bingMap”)
In the URL field type “about:blank” Note: be sure to uncheck “Restrict Cross Framing” (see FIGURE B); in the Formatting tab, check “Auto expand to use available space” (see FIGURE C).
FIGURE B
FIGURE C
Step 5: Next, hit OK and click “Form Properties”. Then, click “OnLoad” and press “Edit”.
Step 6: Note: make sure “Event is enabled” is checked.
Then insert the following into the white space (you do type in the quotation marks within this code--See FIGURE D):
crmForm.all.tab4Tab.attachEvent("onclick", doMap);function doMap()
{
if (crmForm.all.address1_line1.value != null)
{
crmForm.all.IFRAME_bingMap.src = ("http://www.bing.com/maps/default.aspx?where1=" + crmForm.all.address1_line1.value + ", " + crmForm.all.address1_city.value +", " + crmForm.all.address1_stateorprovince.value);}
else{
crmForm.all.IFRAME_bingMap.src = "about:blank";
}
}
FIGURE D
Note: You may need to change “tab4Tab” to wherever your respective tab is.
The tabs are numbered from left to right starting at zero. For instance, if you wanted to use the very first tab on the left, you would use “tab0Tab”.
Also: Replace “bingMap” with the name of your IFRAME. Finally, click OK >> OK >> Save To see your new map in action press Preview >> Create Form
FIGURE E
If you haven’t noticed, the address is being pulled from the General Tab (Street 1, City, and State/Province)
If you want to integrate Google Maps, simply do the following: In the OnLoad code, replace “http://www.bing.com/maps/default.aspx?where1=” with "http://www.maps.google.com/maps?q="
(you may also want to change the name of your IFRAME to googleMap)
FIGURE F
b85c2354-3c22-4635-89e1-396abc921806|0|.0
Tags:
Categories: CRM 4.0
by Webfortis
4. June 2010 16:41
As we all know, mobility provides access to data real-time, anywhere. We've found that the folks over at CWR Mobility have a great product (we're running it in-house), and their latest release is incredible!
It offers the following features and functions:
Fully-integrated Online and Offline clients for Microsoft Dynamics CRM 3.0 and 4.0
Certified for Microsoft Dynamics
Native Client Experience
Supports Wireless LAN, GPRS/EDGE, UMTS, HSPA
Device support for iPhones, Blackberries and Windows Mobile 5+
Role-based deployment
Default implementations for Field Service/Sales
Toolkit to build XRM/LOB apps
Easy to configure, rich SDK
Multi-currency, multi-tenancy, multi-lingual (10 languages)
Advanced entity relationships
Power of choice: on-premise, partner hosted or CRM Online
Here are some closeup screen shots of the various phones:
Webfortis Special: Through June, 2010, we will install, setup and configure the application for 50% off normal price. Just call or email us for further details!
fc204306-0e06-4937-bd96-08288c6e4f40|0|.0
Tags:
Categories: CRM 4.0
by Webfortis
19. March 2010 16:52
The Microsoft Dynamics CRM Data Migration Manager is a handy tool when importing large amounts of data or when importing related entities. The installation, however, can be something of a challenge. When attempting to install the Data Migration Manager on a Server 2008 machine running SQL 2005, you may receive the following error:
The issue here is that the initial installation of CRM has failed to add a particular key to the Window's registry and the data migration manager cannot retrieve this information. The following is a step-by-step solution to this issue.
1) Open the Windows Registry Editor:
From the Start Menu, select "Run". On the the line that says "Open:" type "regedit".
2) Find the "InstallLocation" Registry Entry:
The registry entry we're looking for is buried a ways down in the registry tree. Expand HKEY_LOCAL_MACHINE >> SOFTWARE >> Microsoft >> Windows >> CurrentVersion >> Installer >> UserData >> S-1-5-18 >> Products >> 059DD8CB00184F24E99A62CF4D6109FA >> InstallProperties. Now, select the "InstallLocation" entry.
If you are using a 64-bit version you may not be able to find the "059DD8CB00184F24E99A62CF4D6109FA" folder. There should instead be a folder with the name "C5D06E9536719E94DB7D0491EB205E22". Expand this and follow it to InstallProperties >> InstallLocation.
3) Change to the Current CRM Installation Path:
If this registry entry is blank change it to your current CRM Server installation path. The default (below) is "C:\Program Files\Microsoft Dynamics CRM\"
Go back to the installation and select next, the installation should continue successfully.
4c9e6b7f-28c0-401c-b555-640c7bd682b2|0|.0
Tags:
Categories: CRM 4.0
by Webfortis
1. March 2010 16:55
Webfortis has authored several books on Microsoft Dynamics CRM. We have exceeded our expectations with regard to these books and the first one has gone past 3rd printing - which means the appetite for our books is really great! (we've been informed that our books are recommended reading in several instructional classes and even prior to taking the certification exams on Microsoft Dynamics CRM 4.0).
Our link for these books is here:
Today we received word that our books is truly international - Check the link below for our first book translated 100% in German:
The interesting thing is that it's impossible to order this book from the Amazon.com site - instead, you have to navigate to the Amazon.de site directly...
e25c34f9-e8b6-4a11-8428-e924eeac274e|0|.0
Tags:
Categories: CRM 4.0
by Webfortis
1. February 2010 16:59
The folks over at the E2 team have prepared a great whitepaper titled "Outlook Synchronization in Microsoft Dynamics CRM Explained" describing the client synchronization process that is associated with Update Rollup 7 for Microsoft Dynamics CRM 4.0 or later (for on-premise deployments) and with Microsoft Dynamics CRM Online November 2009 Service Update or later (for online deployments).
In it, they cover the following items:
Overview of Dynamics CRM Client Synchronization
Outlook Synchronization in the Microsoft Dynamics CRM 4.0 Client
Synchronization Rules
Data Mapping
Deletion Rules
Overview of Dynamics CRM Client Synchronization
Microsoft Dynamics CRM 4.0 uses two processes to manage replication of information between the central Microsoft Dynamics CRM database and the local data store on a computer running Microsoft Dynamics CRM for Microsoft Office Outlook with Offline Access (the "offline client").
Outlook Synchronization
Both the online and offline versions of the CRM Outlook Client support synchronizing CRM contacts and CRM activities to Outlook folders, or Outlook synchronization. Outlook synchronization enables Outlook users to view Dynamics CRM information, including contacts, tasks, phone calls, letters, faxes, appointments, and e-mails, within the Outlook interface.
Online/Offline Synchronization
The online and offline synchronization process manages replication of data back and forth between the Microsoft Dynamics CRM database and the local database on a computer running the offline client.
The offline synchronization (GoOffline) process manages replication of information from the Microsoft Dynamics CRM database to the offline client. On the other hand, the online synchronization (GoOnline) process, manages replication of changes in the local data store from the offline client to the Microsoft Dynamics CRM database when the offline client reconnects to the network.
The entire whitepaper can be downloaded here
21bac8f3-0e42-4764-a8ca-a0f03a68f563|0|.0
Tags:
Categories: CRM 4.0
by Webfortis
24. December 2009 17:16
Microsoft recently introduced Microsoft Dynamics CRM Rollup 8 (it is available here). It has some nice fixes and updates over Rollup 7, which we detailed in our post located here called "Outlook Client - Improvements in Update Rollup 7".
Our friends over at the Microsoft Dynamics CRM Team Blog have this post about it:
Update Rollup 8 for Microsoft Dynamics CRM 4.0
The Microsoft Dynamics CRM Sustained Engineering team will release Microsoft Dynamics CRM 4.0 Update Rollup 8 on Thursday, December 17, 2009.
Once the release is available the links below will take you to the necessary information about Update Rollup 8.
Microsoft Download Center: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c53b2916-6b93-4092-bdd3-a394c96ca000
Microsoft Knowledge Base Article: http://support.microsoft.com/?kbid=975995
General Details about Update Rollup 8
Update Rollup 8 is cumulative. However, the Update Rollup 8 CRM Client and Data Migration Client packages require Update Rollup 7 to be installed. For all other CRM components you do not need to install any previous Update Rollups prior to Update Rollup 8
The Update Rollup 8 download contains updates for the 40 supported Language Packs. Prior to installing the Update Rollup 8 Language pack you must install the original Language pack.
If you have Language Packs installed, you should
Download the Update Rollup 8 Language Pack
Install the Update Rollup 8 Language Pack
De-provision the Language Pack
Re-provision the Language Pack
Information about how to avoid reboots when installing the CRM Outlook Client can be found in the Update Rollup 4 blog posting.
The Update Rollup 8 Client can be deployed before the server is upgraded to Update Rollup 8.
Steps to make the Update Rollup 8 Client available via AutoUpdate can be found in the Update Rollup 4 blog posting. The Link and Patch IDs can be found in kb article 975995.
Microsoft Dynamics CRM E-mail Router
Update Rollup 8 adds support for Exchange 2010. However, the Update Rollup 8 Rule Deployment Wizard does not yet support Exchange 2010. We are working to add that support in future Update Rollups.
How to get support for Update Rollup 8
To get support please contact Microsoft Product Support. For a complete list of Microsoft Product Support Services telephone numbers and information about support costs, visit the following Microsoft Web site: http://support.microsoft.com/default.aspx?scid=fh;%5bLN%5d;CNTACTMS
Note: In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.
UPDATE/WARNING: There is an issue associated with Enterprise deployments of Microsoft Dynamics CRM that the Rollups have not corrected yet. This issue appears to be related to the fact that while the Rollup remediates all existing databases/instances of Microsoft Dynamics CRM, when you go to redeploy a NEW instance (i.e. tenant) of Microsoft Dynamics CRM, the "SubscriptionManuallyTrackedObject" table is not there and you will get an error on all new instances unless this table is manually copied from a remediated database, or the most current Rollup version is applied to the server again after a new tenant is provisioned.
The specific error you might receive is this:
Generic error:
"A SQL Server error occurred. Try this action again."
This error will show in the Trace Log:
"Invalid object name 'SubscriptionManuallyTrackedObject'"
This issue and fix is documented at the EMEA Dynamics CRM Support blog located here.
a4d2a2be-323c-4c4e-ac1a-23d0f59c4b88|0|.0
Tags:
Categories: CRM 4.0
by Webfortis
23. December 2009 17:17
Microsoft Dynamics CRM has many great features and functions, however there is a LOT you can do with the application. From an open/downloadable SDK (located here and up to version 4.0.11, last updated 11/24/09 as of this post) to a free Developer toolkit from the Dynamics CRM Engineering for Enterprise (CRM E2) team located here.
Our page has several of these utilities and a few more. This page is located here: http://www.webfortis.com/crm/crm_utilities/:
There are a ton of other utilities out there that have some interesting functionality that is worthy of pointing out:
1. Mitch Milam's blog and postings on CRM utilities located here: http://blogs.infinite-x.net/free-utilities/. Mitch has the following utilities available:
CRM 4.0 CRMExportJavaScript - Extract all of the custom JavaScript found in a CRM organization and write the code for each event to a file. Enhancement Request - A customization that allows you to track enhancement requests for a CRM system from within CRM. CRM 4.0 Development Skeleton - Provides a CRM developer with Visual Studio solution that allows for quick prototyping and development of applications which use the CRM SDK. Plugin Settings - A customization that allows you to store settings for plugins inside of CRM itself. CRMExport - Is a command-line application that allows you to export all customizations from a CRM organization. Run CRM Deletion Service runs the CRM 4.0 deletion service which will physically delete any CRM records that have been marked for deletion. See this post for more detail.
Misc Description Version - ROI Calculator allows you to calculate the Return on Investment for a proposed CRM customization. Duplicate Email Detection SQL script. CRM 3.0 and 4.0 Description Version - CRM Tracer allows you to activate and deactivate diagnostic tracing without having to modify the required registry settings by hand. CRM 3.0 CRM StartStop starts and stops the CRM-related services and web site. CRM SMTP Settings configures the SMTP server settings required for the CRM Server to utilize a different SMTP Server than itself. CRM Scan Contacts Scans the CRM Contacts Entity to identify and correct possible data corruption issues in the Job Title Attribute. CRM Metadump exports a list of Entity Attributes to an XML file that can be easily imported into Microsoft Excel. Birthday Update utility. Change Request customization allows you to track change requests inside of CRM.
2. Michael Höhne over at Stunnware offers a couple of utilities, both paid (filtered lookups) and free. Of particular value is his Trace Log Viewer located here: http://www.stunnware.com/crm2/topic.aspx?id=TraceLogViewer. We use this viewer regularly and it makes searching for errors a lot easier:
3. Fiddler. This is the best and easiest diagnostic log when troubleshooting HTTP traffic. This is a free utility that can be downloaded from http://www.fiddler2.com/.
4. Benjamin Lecoq's Blog. Benjamin (or Benlec) is a Technical Support Escalation Engineer out of Madrid, Spain, and his resources are free and invaluable working with diagnostic tools. His blog is located here: http://blogs.msdn.com/benlec/, and the utilities are located here: http://www.box.net/shared/6oxfqi2ida. His utilities include the CRM Diagnostic Tool - a great tool for running diagnostics on the Server, Email and Reporting instance.
Additional tools include:
CrmDiagTool4
CrmKB968793FixIt
Crm4EmailConnectorLogger
CrmDiagToolTurbo.zip
MSCRM30OutgoingEmailConfigWizard
MSCRM30RetrieveBUHierarchy.zip
MSCRM30KB925780AdminTool.zip
We'll continue to update this blog post with more utilities, however if you have a favorite one that should be added, please let us know
b3e27ffd-8538-4d1a-9a03-aadedc17c00a|0|.0
Tags:
Categories: CRM 4.0
by Webfortis
13. July 2008 12:58
While reviewing the Microsoft site, we noticed that there is a new Implementation Guide (IG) available for Microsoft Dynamics CRM 4.0. This new version is available from the Microsoft website below:
This release has a release date of 7/7/08, and is version 4.2.0
http://www.microsoft.com/downloads/details.aspx?FamilyID=1ceb5e01-de9f-48c0-8ce2-51633ebf4714&DisplayLang=en
We'll be reviewing this document closely for updated information, as it undoubtably contains many expanded explanations in areas that needed better and/or deeper review.
For those of you unfamiliar with the Implementation Guide, it is a must read for anyone considering an implementation of Microsoft Dynamics CRM.
7b3d48da-1e35-4da4-8e88-b90807a9dd2a|0|.0
Tags:
Categories: CRM 4.0