In case you haven't heard by now, Office 2007 Service Pack 2 has been released by Microsoft. You can download them from the links in this post by the Office Sustained Engineering Team
One item that isn't included on that page is the link to download Business Contact Manager 2007 Service Pack 2 or BCM 2007 SP2. I strongly suggest you install the Office 2007 SP2 update before updating Business Contact Manager 2007 Service Pack 2 or BCM 2007 SP2. You can find the installation package for Business Contact Manager 2007 Service Pack 2 or BCM 2007 SP2 by going to the following link.
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=405aa7e9-e63b-447b-a49b-d4cbd8eea30d
Hopefully it resolves some common BCM problems.
Showing posts with label Outlook BCM. Show all posts
Showing posts with label Outlook BCM. Show all posts
Thursday, April 30, 2009
Wednesday, September 17, 2008
Outlook BCM running on SQL Server 2008
Will BCM 2007 using a shared database work on SQL Server 2008? The answer is not clear. Technically there is no reason why it shouldn't. However, it has not been tested with SQL 2008 and the increased security in SQL 2008 may cause issues.
Should you move to SQL 2008 if you are using a BCM 2007 shared database? Probably not.
Can you? Yes, but you're pretty much on your own to troubleshoot any issues that arise to make it work correctly.
If you have done this, shoot me a note and let me know the steps you took or issues you ran into, I'm sure others would love to get feedback on how it went.
Should you move to SQL 2008 if you are using a BCM 2007 shared database? Probably not.
Can you? Yes, but you're pretty much on your own to troubleshoot any issues that arise to make it work correctly.
If you have done this, shoot me a note and let me know the steps you took or issues you ran into, I'm sure others would love to get feedback on how it went.
Improve Outlook BCM Business Contact Manager Performance - Three Outlook BCM Performance Tips
Many complaints about BCM is that it is a performance hog, it's slow, unresponsive, it freezes Outlook... blah blah blah. Well let's try to improve it a bit shall we.
First, if you aren't using the email linking feature then shut it off. I believe it's off by default but if you still go into Business Contact Manager -> Manage E-Mail Auto Linking, there are two tabs one for Emails and one for Folders. Click the "Clear All" button on both tabs and click ok.
Second, if you are in a shared database environment, each machine with BCM installed is hitting your SQL server every second. This creates a lot of traffice and a lot of performance problems. You most likely don't need to get your BCM data updated every second. This update is called a Polling Interval. This Polling Interval was supposedly set higher if you installed the service pack for BCM, however this probably isn't the case. So you need to manually set it higher. To do this open up Registry Editor on each client machine. The path to the key is HKCU -> Software -> Microsoft -> Business Solutions eCRM. Create a DWORD key in that folder called PollingInterval. Modify it's value and set the Decimal value to 180000 which is 180000ms or 3 minutes. Each minute is 60000ms so the Decimal value for one minute would be 60000. This way the client machine will only hit the SQL server every 3 minutes way down from every second.
Third, set the SQL memory for the client machines. By default each client machine will have SQL Server 2005 Express installed on it, this installs with Outlook BCM. By default the maximum amount of memory that SQL Server 2005 Express can use is 2147483647MB, that's huge and unnecessary for BCM. Download and install the SQL Management tools (http://www.microsoft.com/downloads/details.aspx?FamilyID=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=en) on each client machine. Connect to the local SQL Express server and right click on the server within the management studio and choose Properties. Within the pane that comes up, click the Memory link and set the Max Amount of memory to 256MB. That's plenty for BCM. Click OK and it's done.
These 3 performance tips will help with the BCM performance.
Send me a comment if you need additional help.
First, if you aren't using the email linking feature then shut it off. I believe it's off by default but if you still go into Business Contact Manager -> Manage E-Mail Auto Linking, there are two tabs one for Emails and one for Folders. Click the "Clear All" button on both tabs and click ok.
Second, if you are in a shared database environment, each machine with BCM installed is hitting your SQL server every second. This creates a lot of traffice and a lot of performance problems. You most likely don't need to get your BCM data updated every second. This update is called a Polling Interval. This Polling Interval was supposedly set higher if you installed the service pack for BCM, however this probably isn't the case. So you need to manually set it higher. To do this open up Registry Editor on each client machine. The path to the key is HKCU -> Software -> Microsoft -> Business Solutions eCRM. Create a DWORD key in that folder called PollingInterval. Modify it's value and set the Decimal value to 180000 which is 180000ms or 3 minutes. Each minute is 60000ms so the Decimal value for one minute would be 60000. This way the client machine will only hit the SQL server every 3 minutes way down from every second.
Third, set the SQL memory for the client machines. By default each client machine will have SQL Server 2005 Express installed on it, this installs with Outlook BCM. By default the maximum amount of memory that SQL Server 2005 Express can use is 2147483647MB, that's huge and unnecessary for BCM. Download and install the SQL Management tools (http://www.microsoft.com/downloads/details.aspx?FamilyID=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=en) on each client machine. Connect to the local SQL Express server and right click on the server within the management studio and choose Properties. Within the pane that comes up, click the Memory link and set the Max Amount of memory to 256MB. That's plenty for BCM. Click OK and it's done.
These 3 performance tips will help with the BCM performance.
Send me a comment if you need additional help.
Tuesday, July 8, 2008
Outlook Business Contact Manager (BCM) Custom Import Tool Update #1
This is the heart of my import tool. It doesn't import or create projects but I imagine the process is very similar. Probably instead of the line "Outlook.Folder accounts = (Outlook.Folder)bcmRootFolder.Folders["Accounts"]" you may want to use something like "Outlook.Folder projects = (Outlook.Folder)bcmRootFolder.Folders["projects"]" or whatever the projects folder is named. And then create a Outlook.ContactItem newProject = (Outlook.ContactItem)projects.Items.Add("IPM.Contact.BCM.Project"). Something like that, you may need to play around with it to figure out exactly how to create that project object but once you get it you should be able to set properties on it like I've done with the account object below.
Outlook.ApplicationClass _app = new Outlook.ApplicationClass();
Outlook.Application olApp = (Outlook.Application)_app;
Outlook.NameSpace olNameSpace = _app.GetNamespace("MAPI");
Outlook.Folders folders = olNameSpace.Session.Folders;
Outlook.Folder bcmRootFolder = (Outlook.Folder)folders["Business Contact Manager"];
Outlook.Folder accounts = (Outlook.Folder)bcmRootFolder.Folders["Accounts"];
Outlook.UserProperty userProp;
foreach (StringDictionary account in accountList)
{
Outlook.ContactItem newAccount = (Outlook.ContactItem)accounts.Items.Add("IPM.Contact.BCM.Account");
newAccount.FullName = account["accountname"].Trim();
newAccount.FileAs = account["accountname"].Trim();
newAccount.OfficeLocation = account["officelocation"].Trim();
newAccount.Save();
//populate the account number
if (newAccount.UserProperties["Account Number"] == null)
{
userProp = newAccount.UserProperties.Add("Account Number", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText, false, false);
userProp.Value = account["accountnumber"].Trim();
}
//populate the active flag
if (newAccount.UserProperties["Active"] == null)
{
userProp = newAccount.UserProperties.Add("Active", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olYesNo, false, false);
userProp.Value = account["inactive"].Trim();
}
//populate the type of business
if (newAccount.UserProperties["Type of Business"] == null)
{
userProp = newAccount.UserProperties.Add("Type of Business", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText, false, false);
userProp.Value = account["contacttypeid"].Trim();
}
//populate the business address
if (account["address2"].Trim() != string.Empty)
{
StringBuilder sbBusinessAddressStreet = new StringBuilder();
sbBusinessAddressStreet.AppendLine(account["address1"].Trim());
sbBusinessAddressStreet.AppendLine(account["address2"].Trim());
newAccount.BusinessAddressStreet = sbBusinessAddressStreet.ToString();
}
else
{
newAccount.BusinessAddressStreet = account["address1"].Trim();
}
newAccount.BusinessAddressCity = account["city"].Trim();
newAccount.BusinessAddressState = account["state"].Trim();
newAccount.BusinessAddressPostalCode = account["zipcode"].Trim();
newAccount.BusinessAddressCountry = account["country"].Trim();
//add phone and fax info
newAccount.BusinessTelephoneNumber = account["companyphone"].Trim();
newAccount.BusinessFaxNumber = account["faxnumber"].Trim();
newAccount.WebPage = account["webpageaddress"].Trim();
//custom user defined field
}
if (newAccount.UserProperties["Business Card On File"] == null)
{
userProp = newAccount.UserProperties.Add("Business Card On File", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olYesNo, false, false);
userProp.Value = account["cardonfile"].Trim();
}
//add other information
newAccount.Body = account["comments"].Trim();
newAccount.Save();
Outlook.ApplicationClass _app = new Outlook.ApplicationClass();
Outlook.Application olApp = (Outlook.Application)_app;
Outlook.NameSpace olNameSpace = _app.GetNamespace("MAPI");
Outlook.Folders folders = olNameSpace.Session.Folders;
Outlook.Folder bcmRootFolder = (Outlook.Folder)folders["Business Contact Manager"];
Outlook.Folder accounts = (Outlook.Folder)bcmRootFolder.Folders["Accounts"];
Outlook.UserProperty userProp;
foreach (StringDictionary account in accountList)
{
Outlook.ContactItem newAccount = (Outlook.ContactItem)accounts.Items.Add("IPM.Contact.BCM.Account");
newAccount.FullName = account["accountname"].Trim();
newAccount.FileAs = account["accountname"].Trim();
newAccount.OfficeLocation = account["officelocation"].Trim();
newAccount.Save();
//populate the account number
if (newAccount.UserProperties["Account Number"] == null)
{
userProp = newAccount.UserProperties.Add("Account Number", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText, false, false);
userProp.Value = account["accountnumber"].Trim();
}
//populate the active flag
if (newAccount.UserProperties["Active"] == null)
{
userProp = newAccount.UserProperties.Add("Active", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olYesNo, false, false);
userProp.Value = account["inactive"].Trim();
}
//populate the type of business
if (newAccount.UserProperties["Type of Business"] == null)
{
userProp = newAccount.UserProperties.Add("Type of Business", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olText, false, false);
userProp.Value = account["contacttypeid"].Trim();
}
//populate the business address
if (account["address2"].Trim() != string.Empty)
{
StringBuilder sbBusinessAddressStreet = new StringBuilder();
sbBusinessAddressStreet.AppendLine(account["address1"].Trim());
sbBusinessAddressStreet.AppendLine(account["address2"].Trim());
newAccount.BusinessAddressStreet = sbBusinessAddressStreet.ToString();
}
else
{
newAccount.BusinessAddressStreet = account["address1"].Trim();
}
newAccount.BusinessAddressCity = account["city"].Trim();
newAccount.BusinessAddressState = account["state"].Trim();
newAccount.BusinessAddressPostalCode = account["zipcode"].Trim();
newAccount.BusinessAddressCountry = account["country"].Trim();
//add phone and fax info
newAccount.BusinessTelephoneNumber = account["companyphone"].Trim();
newAccount.BusinessFaxNumber = account["faxnumber"].Trim();
newAccount.WebPage = account["webpageaddress"].Trim();
//custom user defined field
}
if (newAccount.UserProperties["Business Card On File"] == null)
{
userProp = newAccount.UserProperties.Add("Business Card On File", Microsoft.Office.Interop.Outlook.OlUserPropertyType.olYesNo, false, false);
userProp.Value = account["cardonfile"].Trim();
}
//add other information
newAccount.Body = account["comments"].Trim();
newAccount.Save();
Tuesday, July 1, 2008
Outlook Business Contact Manager (BCM) Custom Import Tool
BCM is a great tool provided by Microsoft to manage business contacts and vendors. It can be used as a sales tool or to keep track of approved vendors. Most of you probably have this data stored within an ACT! database, an Access database, an Excel spreadsheet or some other format. If you have ever tried to import this data into BCM you'll quickly find that it's not as customizable as it should be.
Now I don't know what version BCM is, I know it was at least around with Office 2003, but it could be improved dramatically. One improvement could be the import tool. My requirement was to import an Access database into BCM into custom fields. The Microsoft import tool did not fit my needs to I wrote my own import tool to do this. I can see from the newsgroup and complaints that a custom import tool may be desired by a lot of people.
If this is the case for you, please drop me a line. I'm more than happy to release the tool I've created so that it may help you. It is easy to custom to fit your needs with a little bit of development.
Now I don't know what version BCM is, I know it was at least around with Office 2003, but it could be improved dramatically. One improvement could be the import tool. My requirement was to import an Access database into BCM into custom fields. The Microsoft import tool did not fit my needs to I wrote my own import tool to do this. I can see from the newsgroup and complaints that a custom import tool may be desired by a lot of people.
If this is the case for you, please drop me a line. I'm more than happy to release the tool I've created so that it may help you. It is easy to custom to fit your needs with a little bit of development.
Subscribe to:
Posts (Atom)