How to Change BCM Polling Interval?


This post explains how one can change the polling interval in BCM. Please note that this is suggested only for advanced users and for the environment where BCM is used in shared mode.


What is Polling Interval?


When BCM is used in shared environment, all BCM clients poll the server machine to see if there are any changes to BCM data. This allows BCM client to display the most up-to-date data. By default, BCM clients polls server every second in order to ensure that any changes to data made by any client are available to all the clients immediately. Although a short polling interval is desirable so that new data are immediately available, server and client machines pay the cost of frequent polling. In certain BCM usage scenarios (for example, many clients are connected to server), you might get improved performance if polling interval is set higher than default of one second. If the polling interval is set too high, clients will process the changes less frequently but they will have to process more changes at a time. So, you might have to experiment with different values and set the one that works for


How to Change Polling Interval?


In BCM SP1, we have added a registry key that you can tweak to increase the polling interval.  Make sure to close Outlook with BCM before changing the registry key value.


The setting is controlled by “HKCU\Software\Microsoft\Business Solutions eCRM\PollingInterval” registry key. The key should be a DWORD (32-bit) value, the number represents the interval in milliseconds.  By default this is 1000 (1sec), changing this to some higher value could help reduce the load on the database.  This reg key needs to be added on each BCM client machine. We don’t have any recommendation for what value to use because every user’s requirements might be different (For example, one might prefer getting updates more frequently than system overhead). But you could try out with 30 seconds and see if you notice any difference. By default “PollingInterval” key value might not exist. First create a DWORD key in “HKCU\Software\Microsoft\Business Solutions eCRM” and then set its value.


I hope it helps answer some of the comments about polling interval.


-Mukesh

Comments (12)

  1. I was hunting for an answer to a questions someone asked me and I came across this the BCM Team Blog

  2. Pawel_ says:

    Could you explain the difference between pooling interval and synchronization time (in offline settings)?

  3. bcmteam says:

    Polling interval is for sharing scenarios:

    when connected to the shared db, the client queries the shared db every polling interval to get the latest updates;

    synchronization interval:

    is when the client goes offline due to connection is lost, the client uses it to ping the server every sync. Interval to see if it can go back online.

    Thanks

    Vinit[MSFT]

  4. wigital says:

    To correctly understand the DWORD value…

    Should it be

    "Hexidecimal"

    OR

    "Decimal"

    The post does not specify ???

    For a 1 to 1 equivalent in milliseconds I believe it should be "Decimal". Is this correct?

    Thanks

  5. wigital says:

    About Integration and Office Accounting TABLES/FIELDS

    I have BCM and Microsoft Office Accounting integrated on a Domain. SQL Server 2005 Standard is the database and is hosted on a dedicated Database server.

    I’m experimenting with adding "Employees", altering "Employees" etc… (which is an Accounting field). Accounting tables are integrated with BCM (after integration) so it’s the same database now.

    RE: Accounting specific FIELDS… I’m finding that under certain circumstances "in regard to certain Accounting FIELDS", the refresh of data does not propogate to other machines on the network (other Clients) "quickly or at all". This occurs regardless of the polling interval set.

    If I close and then re-open Microsoft Office Accounting on "other Client Machines", whatever changes have been made then appear on the other Clients. (example: adjustements I’ve made to my Employees then propogate). This "latency" is true of some, but not all accounting FIELDS. Invoices appear immediately as and example but certain other fields (such as Employee Job Position) do not.

    This makes no sense to me because all clients are pulling from the same database with BCM and Accounting integrated.

    I’m still finding out what fields this is TRUE of so I can’t provide you a list yet.

    QUESTION:

    Does the REGISTRY KEY "PollingInterval" apply to the database as a whole (after intergration)? – – OR – – does it apply to certain tables and fields specifically? "Some" Accounting FIELDS are not responding to the BCM PollingInterval setting described here.

    TO REPLICATE THIS

    • logon to a client machine using the Owner or Manager role
    • add three employees

    • give them a Job Position (Salesperson)

    • open BCM and Accounting on other clients on the network

    *create a Time Entry on client machine #2 (you’ll view the Employees and Job Positions)

    • choose Employee and save
  6. go back to the Owner/Manager machine #1

  7. change the Job Positions for each of the Employees (from Salesperson to Consultant)

  8. go to Client machine #2 and open the Time Entry you created earlier

  9. YOU WILL NOTE THAT THE JOB POSITION CHANGE YOU JUST MADE ON THE OWNER/MANAGER MACHINE IS NOT REFLECTED ON THE OTHER CLIENT (REGARDLESS OF POLLING INTEVAL)

  10. +++(at least this is currently true on my network)+++

    • on Client Machine #2: close and re-open Microsoft Office Accounting
  11. the changes are now pulled from the database and the updated Job Positions are in the Time Entry drop downs

  12. Thanks much for the assitance

  • bcmteam says:

    Hi wigital

    It is how you input the data.If you want to type “1000” for 1 second, you should input with decimal format.

    Thanks

    Vinit [MSFT]

  • gugoncalves says:

    Even if I change the synchronization time to a very large number, all of my users (20+) will try to synchronize on Monday morning when they come to work after the weekend.

    Is there any way to avoid having EVERY user try to synchronize with the server between 8am and 8:30am every Monday morning?  

    The server takes a large performance hit and the "symptom" is that the users’ Outlook "freezes" while it is trying to synchronize the BCM database in the backend.

  • Can this be done with BCM 2010?

  • Scott says:

    ^^ Here's hoping, because I am about to try it. With BCM installed on 14 workstations, users are now frequently receiving "Contacting Server for Information" progress bars through-out the day.

    will post back results.

  • Scott says:

    Hopefully someone at Microsoft can comment on this, because I am getting varied results. Creating a "PollingInterval" keyword and setting it to 30000 (30 seconds), the machine seems to check in every 30. There must be a minimum in place though, as i tried setting it to 1000 (1 second), and the response time varied between 1 and 30 seconds.

    So… not sure what to make of it, i expcted it to be much more definite, as in–i set it to 1 second and i see a request every second, i set it to 30, i see a request every 30, etc.

  • Scott says:

    Hopefully someone at Microsoft can comment on this, because I am getting varied results. Creating a "PollingInterval" keyword and setting it to 30000 (30 seconds), the machine seems to check in every 30. There must be a minimum in place though, as i tried setting it to 1000 (1 second), and the response time varied between 1 and 30 seconds.

    So… not sure what to make of it, i expcted it to be much more definite, as in–i set it to 1 second and i see a request every second, i set it to 30, i see a request every 30, etc.

  • Scott says:

    Hopefully someone at Microsoft can comment on this, because I am getting varied results. Creating a "PollingInterval" keyword and setting it to 30000 (30 seconds), the machine seems to check in every 30. There must be a minimum in place though, as i tried setting it to 1000 (1 second), and the response time varied between 1 and 30 seconds.

    So… not sure what to make of it, i expcted it to be much more definite, as in–i set it to 1 second and i see a request every second, i set it to 30, i see a request every 30, etc.