15 Oct 2009 @ 2:56 PM 

Hi,

I have a CRM client with the pockets to polish the applications to their needs. I, being the semi coder that I am and having little experience with plug-ins searched high and low for a tool to hide the annoying system views that cannot be removed from CRM 4.0. By pur chance I am certain the CRM team does not allow CRM 4.0 system views to be unshared as could be done in 3.0.

After locating a few other posts out there in the web I stumbled across the “lightly documented” Codeplex Plug-in by David Jennaway completed with source code and compiled code. After annoying the MS Forums (Even David himself jumped in) looking for help I finally got it working and decided to give back by giving some instructions as to the configuration of this Plug-in.

Let’s begin…

What makes David Jennaway’s plug-in simply amazing is that it can handle just about any system view you throw at it because a non coder doesn’t have to configure it with much more than the actual view name. From beginning to end here is how to to get this plug-in working on your CRM server.

  1. Download the following files from Codeplex:
    1. David Jennaway’s Compiled “Hide System Views in CRM 4.0″ Plug-in here. Alternate here.

    1. Download the Plug-in Registration Tool from Codeplex found here. Alternate version as of this writing here. Installation should be easy, I installed it on my CRM server however a walkthrough is available in the ReadMe file in the zip download.
  2. Install both parts items:
    1. Install the Plug-in registration tool
    2. Unzip the Plug-in (step 1a) into a folder, something like C:\(YOUR DESIRED PATH)\Plug-ins\HideSystemViews
  3. Register the “Hide System Views in CRM 4.0″ Plug-in
    1. Open the Plug-in registration tool and connect to your CRM server
    2. Once connected select the “Register” button which opens another box, select “Register New Assembly
    3. Within the registration tool select Step #1 and select the path to the “Hide System Views in CRM 4.0″ Plug-in you chose in my step 2b above.
    4. Within the registration tool Step #2 you should see the Plug-in with a check box to its left.
    5. Within the registration tool Step #3 I chose “Database” (not based on any reason other that I like databases)
    6. Within the registration tool click the button at the bottom “Register Selected Plug-ins”
    7. It should look like this

  1. If you noticed when you downloaded the compiled plug-in there is a XML files called SampleConfig.xml, this is the excellent method David J. used to tell the plug-in what Views to hide!
    1. The key here is that your specifying the entity otc number as in <entity otc=”1″>, the “1″ representing the “Account” entity. If you need to hide the view for other items you can get the otc# from your servers SDK by connecting to http:/<crmserver>/sdk/list.aspx and clicking the button for the entity in question. Adjust your xml as necessary then proceed.
  <?xml version="1.0" encoding="utf-8" ?>
<entities>
<!- Sample configuration data. Entities are identified by the otc attribute, and views by name
  -->
<entity otc="1">
  <view>Inactive Accounts</view>
  <view>Accounts: No Orders in Last 6 Months</view>
  </entity>
<entity otc="4">
  <view>Leads Opened Last Week</view>
  <view>Leads Opened This Week</view>
  </entity>
  </entities>
  1. Select/Highlight the (Assmbly) Plug-inHideSystemView node
  2. Select the “Register” button you used above in my step 3b.
  3. This time select “Register New Step”
  4. Fill out the form as follows:
    1. Message: RetreiveMultiple
    2. Primary Entity: savedquery
    3. Event Pipeline Stage of Execution: Post Stage
    4. Execution Mode: Synchronous

    Note: the other options can be changes per your wishes…

  5. Enter your adjusted XML into the top right pane “Unsecured Configuration (like the SampleConfig.xm file)
  6. Click Update
  7. It should look like this

  1. Add a step with that looks just like this screen shot:
  2. Now the magic, if you noticed when you downloaded the compiled plug-in there is a XML files called SampleConfig.xml, this is the excellent method David J. used to tell the plug-in what Views to hide!
    1. The key here is that your specifying the entity otc number as in <entity otc=”1″>, the “1″ representing the “Account” entity. If you need to hide the view for other items you can get the otc# from your servers SDK by connecting to http:/<crmserver>/sdk/list.aspx and clicking the button for the entity in question. You final Step should look something like this!

    2. Verify and your done, your client is happy and you are happier than I was when I needed to use this great plug-in!
  3. Alternate method below! I have not done this one!

An alternate method by Jeremy Hofmann with Crowe Horwath that does not even require any Plug-ins is updating the CRM SQL Database, this is obviously unsupported but details can be found here.

This post describes a customization to CRM 4.0 which is not a supported by Microsoft, Crowe or me but something I needed to find a solution to given a client request.  Please take this into account before attempting to make this change as in most situations you never want to update the CRM database tables directly.  This may cause problems with upgrades and future releases.  However, there are times when your users will demand a system change and you may be forced to take a bit of technical leap to make them happy.

Hiding system views in CRM 4.0 is one such area.  For example, your implementation may not use the Marketing Campaign entities, and you wish to hide the “Contacts: No Campaign Activities in Last 3 Months” system view.

While there isn’t a clean way to do this currently using the standard configuration UI, you can force a system view to become a private view through a bit of direct database magic:

1. Navigate to the system view.

2. Make a change to the view, such as switching the column order.  This will create a new record in the SavedQuery base table with the CustomizationLevel = 1.  Customization = 0 records should never be touched since these are shared across mult-tenant organizations.

3. Publish the entity.

4. Find the view in the SavedQueryBase table.  There may be several entries, so use the view with the CustomizationLevel equal to 1 that was created earlier.

5. Update the record and set the IsPrivate flag to 1.


UPDATE SavedQueryBase
SET IsPrivate = 1
WHERE [Name] = 'Contacts: No Campaign Activities in Last 3 Months'
AND CustomizationLevel = 1
Posted By: bradlaw
Last Edit: 20 Dec 2009 @ 03:55 PM

EmailPermalink
Tags
Categories: CRM 4.0


 

Responses to this post » (None)

 
Post a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


 Last 50 Posts
 Back
Change Theme...
  • Users » 1
  • Posts/Pages » 48
  • Comments » 4
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight

About



    No Child Pages.

Clients



    No Child Pages.

Home



    No Child Pages.

Recent Posts



    No Child Pages.

Visitor Locations



    No Child Pages.