Tag Archives: CRM 4.0

CRM : Rescheduling the Update Contract States job

Update Contract States job is CRM 2011 (also for CRM 4.0) system job which runs daily and change the contract status based on contract start date and end date (i.e. change contract from Invoiced to active and from Active to expired).

One of customer’s CRM organization has this job running 10 PM at night and wanted to change this job on particular time (very early in the morning) to make sure contract status are up to date when users starts using CRM system.

There is job editor provided by MS to reschedule CRM system jobs but this does not include this specific job.

so following are steps we undertook with the help of CRM parter/MS support to reschedule this particular job in CRM system.

Step 1: run the following query to find the current Jobs in the relevant CRM organization. (note down the AsyncOperationid returned from this query as we will be using this in next step)

select AsyncOperationid,RecurrenceStartTime,postponeuntil,StatusCode, RecurrencePattern from AsyncOperation WHERE
Name = 'Update Contract States job'
and
StatusCode =10
and RecurrencePattern is not null

following quick details regarding important columns in this table.

RecurrencePattern is used to describe frequency and interval of the system jobs and please refer this article for more information on regarding this.

Postponeuntil is datetime field and indicate when this job will run next time. And it is UTC date meaning if this field contains “2012-10-23 09:08:00.000” and if your time zone is GMT + 1 then this job will run next time on “2012-10-23 10:08:00.000”

RecurrenceStartTime is also UTC datetime field which will be used to set next runtime of job, date part of this field is not important as long as it is set in the past.

Step 2: so using noted down AsyncOperationid in step 1 run following query to update recurrencestarttime, postponeuntil for this Update Contract States job .


update AsyncOperation set
RecurrenceStartTime = '2012-10-22 09:08:00.000',
postponeuntil = '2012-10-23 09:08:00.000'
WHERE AsyncOperationid = '5EB24ECB-60ED-4F59-801D-A6C19465C4D8'

So as per above update, this job will run at 9:08 AM (GMT time) in the morning every day.after job run if you verify the details then it would look as follows. So as you can see system will update postponeuntil (next run time) to next day (24th October) after this job run today (on 23th October).

****Important Notes regarding above change****
above change is unsupported so make sure you apply this change to Dev, Test environment before applying this to Live environment. Also make sure you take back up of database before doing this change.

Hope this helps..

Cheers,
MayankP:)

How to find records created on weekends or created on after working hours

Recently one of our customer asked how to find cases or emails created on Saturday/Sunday or cases created after normal working hours (i.e. after 18 PM?).

Of course this CRM system had email router which were creating those email and automatic case were created based on this.

I did try to so this using advanced find but it is not possible to get the desired result and try to do this using Excel features and it was really easy, following quick steps for the same using Excel.

Step 1: Export data to excel, so do advanced find on CRM (CRM 4.0 or CRM 2011) to retrieve relevant data and then export that to excel.

Step 2: once exported add new columns, let’s say those columns are called “DAY”, “Time HOUR” and “Time MIN”.

Step 3: put formula to retrieve values for those columns, as shown below. Please note that column G is created on date and based on this column G following formula are created. Please change column name as per your requirement.

COLUMN I (DAY) :

=IF(WEEKDAY(G2)=1,"SUNDAY",IF(WEEKDAY(G2)=2,"MONDAY",IF(WEEKDAY(G2)=3,"TUESDAY",IF(WEEKDAY(G2)=4,"WEDNESDAY",IF(WEEKDAY(G2)=5,"THURSDAY",IF(WEEKDAY(G2)=6,"FRIDAY",IF(WEEKDAY(G2)=7,"SATURDAY",)))))))

COLUMN J (Time Hour):
=HOUR(G2)
COLUMN K (Time Hour):
=MINUTE(G2)

Step 4: after apply this formula to all rows and you will get following result.

Step 5: you can apply standard excel filter to return only cases created on weekends (Saturday/Sunday) or cases created after 18 PM easily.

Hope this helps…

Cheers,
Mayank:)

Microsoft Community Contributor Award

Last Month, I was honoured to receive recognition by Microsoft for contributions to the Microsoft online technical communities with the Microsoft Community Contributor Award.

Thanks Microsoft and to you who nominated me!

Additional information about the Microsoft Community Contributor Award Program can be found at
http://www.microsoftcommunitycontributor.com

Cheers,
MayankP 🙂

CRM 4.0 Issue: IE window display full path in Title bar

Suddenly few of our CRM user started seeing full path in CRM IE Title bar.

After little trial and error method we found that issue was cause by change in Domain Policy and to fix this issue on individual users system we did following steps…

Step 1: open IE -> Tools -> Internet Options

Step 2: go to security tab

Step 3: select Local intranet/trusted sites deepening upon where your CRM sites are added

Step 4: Click on Custom Level

Step 5: and the go to the Miscellaneous section and find option called “Allow script-initiated windows without size or position constraints”

Step 6: Select Enabled and click Ok

Step 7: Restart all IE Sessions and this issue will be fixed.

Hope this helps,

Cheers,
MayankP 🙂

Dynamic CRM : Troubleshooting methods for any CRM issue

While working with CRM sometimes we get following exception screen with this message, which means there is some exception or issue on this operation.

An error has occurred
Try this action again. If the problem continues, check the Microsoft Dynamics CRM Community for solution or contact your organisation’s Microsoft Dynamics CRM Administrator. Finally you can contact Microsoft Support.

Following methods will help you crack down the real cause of this exception or error.

Method 1: Check the Event Log

 Log in to CRM and reproduce the error
 Go to CRM Application server -> Run – > Type eventvwr
 And check application event log and find the relevant log and this will have actual exception details regarding this problem.

Method 2: Enable Development Errors on CRM Web site

 On the Microsoft CRM Web server, navigate to \ (typically C:\Inetpub\wwwroot\ or C:\Program Files\Microsoft Dynamics CRM\CRMWeb)
 Open the Web.config file.
 Look for the DevErrors key, and change its value to On.
 Save the Web.config file.
 Login to CRM and reproduce error and you will screen which will give actual error (as shown below)

Method 3: Enable Tracing on CRM Server

 Download CRM diagnostic tool
 Run this tool on CRM Application server and enable the tracing (alternatively you can enable trace as mentioned in this kb article http://support.microsoft.com/kb/907490)
 Login to CRM and reproduce error
 Disabled the tracing
 Go to tracing folder and open log file and locate the exception related to your operation.

Of course after finding actual cause of the exception solution will really different for each exception but above troubleshooting method will help you get in to right direction to fix any dynamic CRM issue.

Hope this helps…

Regards,
MayankP 🙂

Resolving slow performance issue for CRM outlook client

One of our CRM customers who uses CRM outlook client started getting really slow response since last week or so…

This could be due to many reasons but one of reason for slowness is auto tagging incoming emails, CRM 4.0 by default processes 1000 emails in outlook inbox.

These settings can be altered by creating registry key on client side and if you change this value to around 20 and this should improve performance considerably because now CRM tagging engine will look for last 20 emails that came in to outlook rather last 1000.
Following is registry key settings which needs to be altered for the same..

TagMinItemsForCrawl

The value in this registry entry sets the minimum number of items that the auto-tagging feature will process in the crawl mode. When a folder contains fewer items than the value in the registry entry, the auto-tagging feature will process items in the search mode. The default value is 1,000.

TagAllowedItemsForCrawl

The value in this registry entry sets the maximum number of items that the auto-tagging feature will process in the crawl mode in a particular folder. The default value is 1,000.

Change the registry key as mentioned in following steps…

1. On Client System, Click Start, click Run, type regedit, and then click OK.

2. In Registry Editor, locate and then click the following registry subkey:
HKEY_CURRENT_USER\Software\Microsoft\MSCRMClient

3. To create a new registry entry, right-click MSCRMClient, point to New, and then click DWORD Value.

4. Change the name of the registry entry to TagMinItemsForCrawl and set value as 0.

5. Similarly create new registry entry TagAllowedItemsForCrawl and set value to 25.

6. Restart Client outlook .

Hope this helps..

Regards,
MayankP:)

CRM 4.0 Entity Navigator: small tip

Well What’s best way to navigate through list of entities and it’s attributes in CRM 4.0 quickly ? I have been using following way and I think it’s quickest way to get these information in CRM 4.0

Open IE Browser and type in following URL

http://%5Bservername%5D:%5Bportname%5D/%5Borgname%5D/sdk/list.aspx

Replace servername, portname and organization name of your environment in above link.
This will give you list of entities as below…

Now to get list of attribute either click on entities in above screen print or type following URL (replace entity name as per your requirement)

http:// [servername]:[portname]/[orgname]/sdk/mdbrowser/entity.aspx?entity=account”>

Hope this helps..

Cheers,
MayankP:)

Getting Contract Details on Contract Line Form

I just came across scenario where we wanted to know contract details on Contract Line form and to my surprise you can not added contract look up on contract line form in CRM. Check it out you will be surprised too 🙂

Well after using IE Developer tool I found that there is hidden field which holds the contract GUID on this contract line form.

So you can use following line to get contract GUID on contract line form.

alert (crmForm.all.contractid.DataValue);

Hope this helps some one as well…

Cheers,
MayankP

Changing CRM Grid records from 250 to 1000

Recently one of our customers wanted view more than 250 records in CRM Grid records and currently you can only set up maximum up to 250 only.

You can still able to change this in to database directly as mentioned in following steps.

Warning: This change is unsupported

Step 1: Get the user Id and then update Paging Limit as mentioned in following screen print. Change the name of your relevant user to get his user record id and then use then in next query to update relevant record.

Step 2: Restart CRM web site and also clear user’s IE Cache and done!!

Hope this helps!!

Cheers,
MayankP 🙂

CRM 4.0 SQL Time out Issue

We recently started getting problem while creating new entity or importing any new entity in one of our CRM Environment.

Following is full description of error logged on Server Event Log.

Problem

The description for Event ID 17415 from source MSCRMAsyncService cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.
If the event originated on another computer, the display information had to be saved with the event.
The following information was included with the event:
<>
<>
System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
at Microsoft.Crm.CrmDbConnection.InternalExecuteReader(IDbCommand command)
at Microsoft.Crm.CrmDbConnection.ExecuteReader(IDbCommand command, Boolean impersonate)
at Microsoft.Crm.Asynchronous.DataAccessBase.ExecuteSqlCommandAndProcessRecords(IDbCommand command, RecordProcessor recordProcessor)
at Microsoft.Crm.Workflow.WaitSubscriptionDataAccess.Notify(IDbCommand selectCommand, WaitNotificationService waitNotificationService)
at Microsoft.Crm.Workflow.WaitSubscriptionDataAccess.Notify(String hostId, WaitNotificationService waitNotificationService, Int32 maxRetries)
at Microsoft.Crm.Workflow.WorkflowHost.OnNotificationTimerEvent(Object sender, ElapsedEventArgs e)
the message resource is present but the message is not found in the string/message table

Cause:
There is a slow response from SQL which leads to the CRM platform timing out.

Resolution:

After carefully debugging and investigating it turns to be SQL Time out issue and the process of creating new entity is taking more than 30 seconds.
We added following registry keys to HKLM\Sofware\Microsoft\MSCRM folder and this resolved this problem.

DWORD OLEDBTimeout = 300000 (decimal)
DWORD ExtendedTimeout = 1000000 (decimal)
DWORD NormalTimeout = 1000000 (decimal)

Cheers,
MayankP:)