test2

On April 27, 2009, in Misc, by Mitch Milam
 

I’ve had better ideas…

On April 27, 2009, in Meanderings, by Mitch Milam

100_0143

 

One of my customers started having huge performance issues related to the database.  We were also seeing SQL Timeout errors in the Application Event log and sometimes within the CRM client ( web or Outlook ).

After verifying that the database checked out without errors, we traced down the problem to the Microsoft CRM Asynchronous Processing Service ( Async Service, for short ).

I turns out that the AsyncOperationsBase table was huge:

Data space was 944,789 MB

Index space is 90,258 MB

Some digging produced the following Microsoft KB Article:

The AsyncOperationBase and WorkflowLogBase tables grow very large and performance issues occur when you use many workflows in Microsoft Dynamics CRM 4.0

It describes a hotfix, which is included in Hotfix Rollup 3 for CRM 4.0, that allows you to add a registry key to the CRM server to remove old, successfully completed bulk operations.

Within that article, another article is mentioned:

Performance is slow if the AsyncOperationBase table becomes too large in Microsoft Dynamics CRM 4.0

Which gives you a SQL script to removed these old records.  After running the script in the development environment to make sure it ran correctly we ran it in production.  This resulted in the size of the AsyncOperationsBase table:

Data space was 182.063 MB

Index space is 29.813 MB

Quite a difference, huh?

Anyway, if your server starts slowing down, you may wish to give these two articles a good read-through.

 

CRM Web Service and DNS

On April 21, 2009, in Dynamics CRM, by Mitch Milam

I was reminded of something today as I was helping a custom reconfigure a utility I wrote that was moved to a new server.

When you are using the CRM web services an specifying the server's name, you must use the actual name of the server.

If you attempt to access the web service by using the server's DNS address ( if it is different than the server's physical address ).  For example, here is how you would correctly access a CRM server using the web service:

Server Name: crmserver
Web Service Address: http://crmserver:5555/MSCRMServices

 

If, the server happens to have a DNS address of CRM, you could access the server using a web browser using the following URL:

http://crm

However, attempting to access the CRM web services using:

http://crm/MSCRMServices

will fail with an 401: unauthorized error.

 

The world continues to amaze me (4/21/09)

On April 21, 2009, in Meanderings, by Mitch Milam

Does anyone besides me find this to be more than just a little funny?

IMG_0275

 

I’m teaching Dynamics CRM in May

On April 20, 2009, in Dynamics CRM, by Mitch Milam

Business IT Professionals is conducting a certification boot camp the weeks of May 11th and May 18th.

The first week will cover:

  • 8911: Implementation and Deployment in Microsoft Dynamics CRM 4.0
  • 8912: Customization and Configuration for Microsoft CRM 4.0
  • 8913: Microsoft Dynamics CRM 4.0 Applications

While the second week will cover:

  • 80003A: Workflow in Microsoft Dynamics CRM 4.0 (NEW!) on May 18
  • 8969: Extending Microsoft Dynamics CRM 4.0 for .Net developers from May 19 to May 21

I’ll be the instructor for week two. 

To get more information on the class and to register, visit the BizITPro site.

 

Each CRM Form field has an OnChange event associated with it that allows you ( the developer ) to execute JavaScript when the user changes the value of the attribute.  This event is fired when you change the attribute’s value and you leave the field – by clicking or using the Tab key.

In certain instances, I have had bit attributes on the CRM Form which are formatted to display as a Checkbox.

I would like the JavaScript added to the OnChange event to be executed immediately upon the user clicking the checkbox and changing the value. NOT when the user leaves the field.

Using the following code, you can add that functionality:

function ClickMe()
{
  crmForm.all.new_checkboxfield.FireOnChange();
}
 
crmForm.all.new_checkboxfield.attachEvent('onclick',ClickMe, false);

How It Works

In the Form’s OnLoad event:

1)I create a small JavaScript function called ClickMe that does nothing more than call the OnChange event for the bit attribute we’re working with.

2) I use the JavaScript function attachEvent to attach the ClickMe function to the onclick event of the attribute.

Once this code is published, any time the user clicks the checkbox, it will execute the OnChange code for the attribute.

If you need to add this functionality to additional attributes, just duplicate the above code.

 

I am curious what you think about on-line video training.  What I am describing is viewing a “screen castâ€? of a procedure, step, or process as a user is performing it.

I am curious if you find that more valuable than standard documentation.

 

Dallas/Ft. Worth CRM User’s Group

On April 8, 2009, in Dynamics CRM, by Mitch Milam

I attended the 3rd meeting of the D/FW user’s group today and had a really good time, saw some interesting presentations, and met some great people.

If you’re in the D/FW area and are using CRM or thinking about using CRM, please join us next time.

Send me an email at:

mitch at crmaccelerators dot net

and I’ll get you added to the mailing list.

 

Off Topic: CRM Find of the Day

On April 8, 2009, in Misc, by Mitch Milam

 

So I’m wandering around a custom CRM entity’s form this morning looking for ways to improve the user experience on one of the associated Entities, which is linked to the parent via a N:N relationship.

On the More Actions menu button on the associated entity grid, there is a Remove option.  Here is the ID for that that menu item ( dashes were added by me for formatting purposes):

_MIdoActionExcrmGrid10012topcrmFormSubmitcrmFormSubmitId-valuedisassociatetopcrmFormSubmitcrmFormSubmitObjectType-valuetabareaaccproducttypetohcpcscodeassociationNameaccproducttype-tohcpcscoderoleOrd1

Microsoft word tells me there are 197 characters in that name.  Holy cow Batman.  That’s a long name for an ID.