Thursday, June 25, 2009

THIS BLOG HAS MOVED

The Hilltops IT blog has moved here: http://www.hilltopsit.co.uk/blog/

Please see the new site to receive up-to-date postings.

Friday, June 19, 2009

ACT: improved your calendar load speed

Microsoft have a hotfix for Windows systems that will improve nearly any application that uses dates. Tests by Sage have found loading 16,000 Activities in ACT! by Sage contact manager reduced from 4 minutes to 9 seconds!!!

You can download and read more about the update here: http://support.microsoft.com/kb/960417/en-us

Please post here to share experiences and verify improvements to your ACT! by Sage system (or other applications) speed.

Thanks.

Thursday, June 18, 2009

CONNECTIT: Windows 7 compatibility

Please find below some feedback we received regarding ConnectIT running on Windows 7 from one of our valued partner resellers - Matthew Rose from Quintadena

We’ve got two customers running Windows 7, company wide.

One of them are [ABC Widgets ltd], they’re also running ConnectIT.

Just for your awareness, we/Aspire can’t find a resolution for a PDF generator issue with Win7 builds before the Release Candidate.

Anything greater than build 7100 can use QW as normal - with a minor configuration setting change.

[ABC Widgets ltd] have never experienced any issues with running C-IT before/after Release Candidate.



If you have experience (positive or otherwise) of running ConnectIT on the Windows 7 operating system, then please post and/or email support@connectit-online.co.uk - your input will be truly valued.

QUOTEWERKS: Windows 7 compatibility

Please find below some feedback we received regarding QuoteWerks & ConnectIT on Windows 7 from one of our valued partner resellers - Matthew Rose from Quintadena:

We’ve got two customers running Windows 7, company wide.

One of them are [ABC Widgets ltd], they’re also running ConnectIT.

Just for your awareness, we/Aspire can’t find a resolution for a PDF generator issue with Win7 builds before the Release Candidate.

Anything greater than build 7100 can use QW as normal - with a minor configuration setting change.

[ABC Widgets ltd] have never experienced any issues with running C-IT before/after Release Candidate.



If you have experience (positive or otherwise) of running QuoteWerks or ConnectIT on the Windows 7 operating system, then please post and/or email support@quotewerks.com or support@connectit-online.co.uk - your input will be truly valued.

Monday, June 15, 2009

MSCRM: upgrade 32-bit MSCRM 3.0 to 64-bit MSCRM 4.0

Below are our notes from recently upgrading a clients 32-bit Small Business Server 2003 (SBS2003) with SQL Server 2000 to 64-bit Windows Server 2008 with SQL Server 2008. We hope that you find them useful.




As you may probably be aware - in the above situation, it is not possible to upgrade directly. MSCRM 3.0 is not supported on 64-bit Windows Server 2008 and MSCRM 4.0 is not supported on SQL Server 2000. So a transitional interim server is required. We set up a Virtual Machine with Windows Server 2003 and SQL Server 2005 to act as the transitional server. Both MSCRM 3.0 and 4.0 are supported in a Windows Server 2003 and SQL Server 2005 environment.




Before starting, you'll need to make sure that all prerequisites have been installed on the interim Windows Server 2003 and the new Windows Server 2008 machines. For details of the prerequisites, refer to the Microsoft CRM 3.0 Implementation Guide and Microsoft CRM 4.0 IG Planning document.


Also, please note that if the interim server has had MSCRM 4.0 installed on it previously (perhaps it was used for testing purposes?) then we recommend that you manually remove the Microsoft Dynamic CRM 4.0 server before starting. Just using Add/Remove programs does not remove all files and/or registry entries which can cause anomalous errors when upgrading.



In summary, these are the steps which we went through:


* Install the Microsoft CRM 3.0 Redeployment Wizard on the transitional server

* Redeploy the Microsoft CRM 3.0 installation from the SBSSVR 2003 box to the Windows Server 2003 - see Microsoft CRM 3.0 Redeployment guide

>> See this article if get the error "you cannot mix small business edition and professional edition license keys"

>> See this article if you get a warning "the specified database has a later version"


* Thoroughly test the new MSCRM 3.0 installation!


* Install MSCRM 4.0 as according to the Microsoft Dynamics CRM IG Installing document section 2-16

>> For more details on warnings and errors that you might get during the installation wizards final checks, then review the installation log here: C:\Documents and Settings\(user)\Application Data\Microsoft\Mscrm\Logs\Crm40svrsetup.log

>> See the article here is you get warning messages about "word breaker for language 9999 is not installed"

>> See the article here if you get an error that "The full-text indexes on the Microsoft Dynamics CRM database are not consistent with Microsoft Dynamics CRM 3.0 full-text indexes"

>> See the here article if you have been using the unsupported currentUserHasRole to control field access.




* Thoroughly test the interim MSCRM 4.0 installation!

>> See the article here if "custom ISV Config menu options do not show".

* Redeploy MSCRM 4.0 to the 64-bit Windows Server 2008 / SQL Server 2008 environment as according to the Microsoft "How to move the Microsoft Dynamics CRM 4.0 deployment" Knowledgebase article.

>> See the article here if, when installing MSCRM 4.0, you get the error "the instance name must be the same as the computer name" from the Microsoft SQL Server System Requirements check.
>> Note that the final step to change the Organization in the Deployment Manager does take a while to execute at the stage where you can "Auto-map users" (or at least it did for us!). To speed up the process, then assuming that the old and new servers are on the same domain, then you can just "Keep existing" which is significantly quicker.


* Thoroughly test the final MSCRM 4.0 installation!

>> See the article here if "custom ISV Config menu options do not show".



We hope that this article has helped! Please comment to add any further tips and links that might be useful to people upgrading to MSCRM 4.0.



For more Microsoft Dynamics CRM resources and more including applications such as QuoteWerks, ACT! by Sage, plus software and website development tips, then please see the Hilltops IT website.

Saturday, June 13, 2009

MSCRM: CRM 4.0 install starts then crashes, Managed Setup exited with code -532459699

When running the ServerSetup.exe a screen appears initially, but then the installation crashes fata error.

In the C:\Documents and Settings\(user)\Application Data\Microsoft\Mscrm\Logs\Crm40svrsetup.log installation log file is the message:
"Managed Setup exited with code -532459699"

In the C:\Documents and Settings\(user)\Application Data\Microsoft\Mscrm\Logs\crm40setup.log installation log file is the message:
"Microsoft Dynamics CRM is already installed."


Complete log file entries look like this:

crm40svrsetup.log

18:02:39 Info === Setup bootstrap logging started 13/06/2009 18:02:39 ===
18:02:39 Info Bootstrap version: 4.0.7333.3.
18:02:39 Info User: administrator.
18:02:39 Info === Setup bootstrap logging ended 13/06/2009 18:02:39 ===
18:02:40 Info === Setup bootstrap logging started 13/06/2009 18:02:40 ===
18:02:40 Info Bootstrap version: 4.0.7333.3.
18:02:40 Info User: administrator.
18:02:41 Info .NET version found is 3.0.30618.0
18:02:41 Info IsDotNetInstalled=1
18:02:41 Info IsDrWatsonInstalled=1
18:02:41 Info MSXML found is 6.20.1099
18:02:41 Info IsMsXmlInstalled=1
18:02:41 Info Installer path for Microsoft Visual C++ Runtime set to D:\Redist\amd64\VcRedist\vcredist_x64.exe
18:02:41 Info IsReportViewerControlInstalled=1
18:02:41 Info Sql Native Client version found is 9.0.3042
18:02:41 Info IsSqlNativeClientInstalled=1
18:02:41 Info Installing Microsoft Visual C++ Runtime
18:02:43 Info Installation of Microsoft Visual C++ Runtime has completed. Exit code: 0. Result: Version installed: 8.0
18:02:43 Info === Setup bootstrap logging ended 13/06/2009 18:02:43 ===
18:02:46 Info === Setup bootstrap logging started 13/06/2009 18:02:46 ===
18:02:46 Info Bootstrap version: 4.0.7333.3.
18:02:46 Info User: administrator.
18:02:46 Info Managed Setup exited with code -532459699.
18:02:46 Info === Setup bootstrap logging ended 13/06/2009 18:02:46 ===




crm40setup.log

18:02:38 Info === Setup bootstrap logging started 13/06/2009 18:02:38 ===
18:02:38 Info Bootstrap version: 4.0.7333.3.
18:02:38 Info User: administrator.
18:02:38 Info Invoked with command line: setupserver /InstallAlways
18:02:39 Info Running D:\Server\amd64\SetupServer.exe
18:02:39 Info Loading bootstrap library D:\Server\amd64\ServerSetup.dll
18:02:39 Info Microsoft Dynamics CRM is already installed.
18:02:39 Info Closing bootstrap library D:\Server\amd64\ServerSetup.dll
18:02:39 Info Copying installer files to local directory:
18:02:39 Info Package: D:\Server\amd64\Server.msi, Options: REINSTALL="Installer" REINSTALLMODE=vo INSTALLDIR="C:\Users\ADMINI~1.DYN\AppData\Local\Temp\2\MSCRM_{03A7A017-659A-4914-8400-3EC097D33A22}" TARGETDIR="C:\Users\ADMINI~1.DYN\AppData\Local\Temp\2\MSCRM_{03A7A017-659A-4914-8400-3EC097D33A22}" ALLOWRUN=1
18:02:40 Info Loading bootstrap library C:\Users\ADMINI~1.DYN\AppData\Local\Temp\2\MSCRM_{03A7A017-659A-4914-8400-3EC097D33A22}\ServerSetup.dll
18:02:46 Info Closing bootstrap library C:\Users\ADMINI~1.DYN\AppData\Local\Temp\2\MSCRM_{03A7A017-659A-4914-8400-3EC097D33A22}\ServerSetup.dll
18:02:46 Info === Setup bootstrap logging ended 13/06/2009 18:02:46 ===




Even though Microsoft Dynamics CRM 4.0 may not appear on the Add/Remove Programs list, some files or registry entries may have been completely removed. We recommend that you go the setps in the How to anually remove the Microsoft Dynamic CRM 4.0 Microsoft Knowledgebase article to ensure that a previous installation has been completely removed.

MSCRM: Installing - the instance name must be the same as the computer name

When installing Microsoft Dynamics CRM MSCRM 4.0 you get the error "the instance name must be the same as the computer name" from the installation wizard Microsoft SQL Server System Requirements check.




This may be because 1) the server name has been changed since SQL Server was installed, or 2) you are running a 64-bit or Windows Server 2008 environment.

Note that in the Microsoft Dynamics CRM 4.0 "Help", it may state that only SQL Server 2005 is supported. This is not the case; for more information please see the Microsoft Knowledgebase article "Support for running Microsoft Dynamics CRM 4.0 together with Microsoft SQL Server 2008".

To check if the server name has been changed since SQL Server was installed, open Microsoft SQL Server Management Studio and run the following query:
SELECT * FROM sys.servers

If the current server name is not listed, then use the following procedures to correct the issue:
Execute sp_dropserver <OldServerName>
Execute sp_addserver <NewServerName>, local

If you are running a 64-bit or Windows Server 2008 environment, then check that Named Pipes have been enabled in the SQL Server Network Configuration (Start menu All Programs Microsoft SQL Server Configuration Tools SQL Server Configuration Manager expand SQL Server Network Configuration highlight Protocols for <SQLInstanceName> Enable Named Pipes.

MSCRM: the specified database has a later version

Upgrading or redeploying your Microsoft Dynamics CRM (MSCRM) 3.0 installation, you get the error: "the specified database has a later version" in the final checks of the installation wizard.

This is a warning only, so the wizard will allow you to continue. To remove the error though, you can update the Build Number field in the MSCRM Build Version table:

UPDATE BuildVersion SET Revision = 0 WHERE BuildNumber = 5300

MSCRM: you cannot mix small business edition and professional edition license keys

Upgrading or redeploying your Microsoft Dynamics CRM (MSCRM) 3.0 installation, you get the error: "you cannot mix small business edition and professional edition license keys" in the final checks of the installation wizard.

Try deleting all the rows from the MSCRM License table:

DELETE FROM MY_Organisation_MSCRM.dbo.License

Friday, June 12, 2009

GOGLOBAL: update that adds support for Windows Update KB968537

Hilltops IT is pleased to announce the availability of the Compatibility Update that adds support to GO-Global for:
  • Windows 3.1.1 for Windows Update KB968537 on Windows Server 2003 (SP1 and SP2),
  • Windows XP (SP2 and SP3), and
  • Windows 2000-SP4.

The update can be downloaded from GraphOn at the following location:

ftp://ftp.graphon.com
username: ggw-updates
password: 1Kc3waJtw

or alternately,

ftp://ggw-updates:1Kc3waJtw@ftp.graphon.com

File name is: CompatibilityUpdate3.1.1_Jun11_2009.exe

GO-Global for Windows 3.1.1.3544 is a prerequisite for the 3.1.1 Compatibility Update.

Please go to this link to get the list of supported Windows updates:

http://www.graphon.com/support/Windows_Updates_Summary.htm

Thursday, June 11, 2009

MSCRM: testing a User's Role (CRM 4.0 only)

Code required to test whether the logged in user to Microsoft CRM has a particular role:

function currentUserHasRole(roleName)
{
//get Current User Roles
var oXml = GetCurrentUserRoles();

if(oXml != null)
{
//get list of role names
var roles = oXml.selectNodes("//BusinessEntity/q1:name");

if(roles != null)
{
for( i = 0; i < roles.length; i++)
{
if(roles[i].text == roleName)
{
//return true if user has this role
return true;
}
}
}

}
//not found, return false
return false;

}

function GetCurrentUserRoles()
{
var xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
GenerateAuthenticationHeader() +
" <soap:Body>" +
" <RetrieveMultiple xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">" +
" <query xmlns:q1=\"http://schemas.microsoft.com/crm/2006/Query\" xsi:type=\"q1:QueryExpression\">" +
" <q1:EntityName>role</q1:EntityName>" +
" <q1:ColumnSet xsi:type=\"q1:ColumnSet\">" +
" <q1:Attributes>" +
" <q1:Attribute>name</q1:Attribute>" +
" </q1:Attributes>" +
" </q1:ColumnSet>" +
" <q1:Distinct>false</q1:Distinct>" +
" <q1:LinkEntities>" +
" <q1:LinkEntity>" +
" <q1:LinkFromAttributeName>roleid</q1:LinkFromAttributeName>" +
" <q1:LinkFromEntityName>role</q1:LinkFromEntityName>" +
" <q1:LinkToEntityName>systemuserroles</q1:LinkToEntityName>" +
" <q1:LinkToAttributeName>roleid</q1:LinkToAttributeName>" +
" <q1:JoinOperator>Inner</q1:JoinOperator>" +
" <q1:LinkEntities>" +
" <q1:LinkEntity>" +
" <q1:LinkFromAttributeName>systemuserid</q1:LinkFromAttributeName>" +
" <q1:LinkFromEntityName>systemuserroles</q1:LinkFromEntityName>" +
" <q1:LinkToEntityName>systemuser</q1:LinkToEntityName>" +
" <q1:LinkToAttributeName>systemuserid</q1:LinkToAttributeName>" +
" <q1:JoinOperator>Inner</q1:JoinOperator>" +
" <q1:LinkCriteria>" +
" <q1:FilterOperator>And</q1:FilterOperator>" +
" <q1:Conditions>" +
" <q1:Condition>" +
" <q1:AttributeName>systemuserid</q1:AttributeName>" +
" <q1:Operator>EqualUserId</q1:Operator>" +
" </q1:Condition>" +
" </q1:Conditions>" +
" </q1:LinkCriteria>" +
" </q1:LinkEntity>" +
" </q1:LinkEntities>" +
" </q1:LinkEntity>" +
" </q1:LinkEntities>" +
" </query>" +
" </RetrieveMultiple>" +
" </soap:Body>" +
"</soap:Envelope>";

var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("SOAPAction"," http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple");
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
xmlHttpRequest.send(xml);

var resultXml = xmlHttpRequest.responseXML;
return(resultXml);

}




The code need to be placed at the top of any Form Event where you want to use the function. the function can then simply be called as follows:

if(currentUserHasRole(‘Salesperson')){
//do this stuff
}else{
//do other stuff
}




We hope this helps anyone getting to grips with java script coding in MSCRM 4.0!

Please post any thoughts or improvements that you have to this.

Thanks, Hilltops IT

MSCRM: testing a User's Role (CRM 3.0 only)

This is quite an old tip now, on several blogs and forums, but we'd thought we'd repeat it here to keep it with the updated code for MSCRM 4.0 (see next post). The code below needs to be put in either the global.js file (by default located here C:\Program Files\Microsoft CRM\CRMWeb\_common\scripts\) of in the top of each Form event where you need to call the function. It's then just a case of calling the following in the Form Event:

if(currentUserHasRole(‘System Administrator’)){
//do this stuff
}else{
//do other stuff
}


Note that putting the code in the global.js is a risky strategy as if a patch or update is installed, then the changes may be lost. It does save copy/pasting into each and every Event; the choice is yours!

Java script code to test whether a User has a particular Role:

function getUserId()
{
try
{
var command = new RemoteCommand("SystemUser", "WhoAmI", "/MSCRMServices/");
var oResult = command.Execute();

if (oResult.Success)
{
return oResult.ReturnValue.UserId;
}
}
catch(e)
{
alert("Error while retrieving userid.");
}
return null;
}

function getUserRoles(userId)
{
try
{
var command = new RemoteCommand("UserManager", "GetUserRoles");
command.SetParameter("userIds", "<guid>" + userId + "</guid>");

var oResult = command.Execute();

if (oResult.Success)
{
return oResult.ReturnValue;
}
}
catch(e)
{
alert("Error while retrieving roles.");
}
return null;
}

function userHasRole(userId, roleName)
{
result = getUserRoles(userId);
if (result != null)
{
var oXml = new ActiveXObject("Microsoft.XMLDOM");
oXml.resolveExternals = false;
oXml.async = false;
oXml.loadXML(result);

roleNode = oXml.selectSingleNode("/roles/role[name='" + roleName + "']");
if (roleNode != null)
{
if (roleNode.selectSingleNode("roleid[@checked='true']") != null)
return true;
}
}
return false;
}

function currentUserHasRole(roleName)
{
userId = getUserId();
return userHasRole(userId, roleName);
}

Wednesday, June 10, 2009

QUOTEWERKS: QuoteWerks v4.0 build 47 released

QuoteWerks v4.0 build 47 released; details of new features and fixes below.

Free evaluation available for download here.


New Features

1. Added support for SugarCRM (versions 5.1 and 5.2) open source web based contact management software ( www.sugarcrm.com ). The integration includes: a) SugarCRM can be searched to find Contacts or Accounts to pull into the quote. b) QuoteWerks will create/update a linked document (as a SugarCRM note attachment). c) QuoteWerks will create/update a follow up call (as a SugarCRM Call). d) QuoteWerks will create/update a Sales Opportunity (as a SugarCRM Opportunity). e) The QuoteWerks DataLink feature can be used with SugarCRM enabling you to retrieve information like Terms and shipping method from the SugarCRM Contact or Account into the quote. f) When printing, QuoteWerks can retrieve Contact or Account data from SugarCRM and include it in the printed output. g) SugarCRM Contact and Account data can be retrieved using the F2 Lookup macro of ~SugarCRM_Macro().

2. Online Ordering module can place online orders with D & H (USA and Canada) from within QuoteWerks (requires Real-time and Online Ordering modules). Order items from a single order, or combine items from multiple QuoteWerks orders into a single D & H order. This will save you the time and hassle of calling your D & H sales rep and reading each part number, quantity, and price to him/her. Another benefit is that the order date and D & H sales order number will automatically be stored with your QuoteWerks order for reference. When placing D & H online orders electronically through QuoteWerks, there is an option that will let you place the order on hold. This will afford you an opportunity to review the order with your distributor rep and negotiate pricing without the time consuming process of reading to your sales rep all the part numbers, quantities, ship to location, etc. No more calling your distributor sales rep only to reach voice mail (understandable - sales reps can't be on the phone with more than one customer at a time) and then have to remember try again later in the day to place the order - or wait for a call back! This is truly the best of both worlds - automation with sales rep service!

3. Added Real-time Pricing & Availability support for D&H Canada.

4. Real-time Pricing and Availability is now available for IT distributor BlueStar ( www.bluestarinc.com ).

5. GoldMine 8.5 (Premium Edition) is now supported!

6. Peachtree 2010 is now supported!

7. Added support for linking to Microsoft Access 2007 databases as a Product Data Source.

8. Added Misc Access right CannotModifyLiterature, this is useful in preventing users from modifying these files from the Literature tab on the Print window.

9. Added Misc Access right CannotModifySpecSheets, this is useful in preventing users from modifying these files from the Spec Sheets tab on the Print window, and also on the Advanced tab of the Edit Product window.

10. Added Misc Access right CannotModifyFieldValue:DH_DocStatus.

11. Formula based line items can now references prices in group header line items.

12. Added Edit Append Paste menu.

13. Added support for setting the Document default values for CustomText13 - 20 through the SITE.INI file. Under the [Defaults] section of the SITE.INI file, you can set ini keys (for example) of CustomText13=my default.

14. On the Lookup Contact window the [Select for Sold To], [Select for Ship To], and [Select for Bill To] buttons now display their customized labels instead of their hard coded names (if they have been customized).

15. On the Defaults tab of the QuickBooks Setup window, increased the size of the account dropdowns enabling you to fully see larger account names, and also added tooltip support for extremely long account names.

16. For QuickBooks users, on the Create QuickBooks Item the size of the account dropdowns has been increased, enabling you to fully see larger account names, and also added tooltip support for extremely long account names.

17. Updated the View Log file window to add support for shortcut keys CTRL-F for find and F3 for find next. Also the text to find will default to the text that is currently selected.

18. If an error occurs while submitting an online order a .log file containing the error details will be created with the same base file name as the online order xml response file.

19. With the improved implementation of the &SYS_InstallPath macro you do not have to setup Path Translations between the Master and Remote installations as long as the external files being synchronized are located under the \QuoteWerks installation folder of both the Master installation and the Remote Installation and both have the same relative path under the \QuoteWerks folder.

20. In SITE.INI file under the [Contact Managers] section added support for the following INI keys (With their default values specified) "SalesLogixOppStatusOpenValue=Open", "SalesLogixOppStatusClosedLostValue=Closed - Lost", "SalesLogixOppStatusClosedWonValue=Closed - Won". This is particularly useful for German or Non-English versions of SalesLogix.

21. For API users, added new DocFunctions.DocumentSaveAsNextRevision(byval bDeletePreviousRevision As Boolean) method.

22. For API users, when an unknown field is requested through the the DocFunctions.GetDocumentHeaderValue method, a message box will no longer be displayed (which would stop the API application). Instead an error code "$$$Error:002" will be returned.

23. On the File Insert Document window, the last selected operator is now memorized (per user), so the next time you open this window, it will be remembered.

24. On the QuoteWerks Contact Lookup window, the last selected operator is now memorized (per user), so the next time you open this window, it will be remembered.

25. For API users, added support for the macros "&ReadOnlyMode", "&ViewOnlyMode", "&NeverBeenSaved" available through the DocFunctions.GetDocumentHeaderValue method.

26. On the System tab of the HelpAbout menu, there is a new value of "Terminal Services Detected".

27. On the System tab of the HelpAbout menu, there is a new value of "UAC Enabled".



Misc Features

1. When the logged in user opens a document that the user has "View" rights to, but not "Modify" rights, "(View only)" will appear in the title bar, and all the fields on the tabs will be locked from manual input. Like before, any changes made to this open quote cannot be saved.

2. In preparation for Windows 7 support, Windows 7 is now detected. Windows 7 UTC (versus GMT) terminology is now supported.

3. Updated the Version Checker with the updated Codejock.ReportControl.v13.0.0.ocx file.

4. The D&H Real-time URL was updated.



Fixes

1. When synchronizing external data sources, the path macro &SYS_InstallPath was not being resolved.

2. The AfterContactSelection API event was firing if the user clicked on the [Select] button even if no contact was actually selected.

3. On the Tech Data and Ingram Micro subtab of the Real-time tab under the ToolsOptions menu, the Online Ordering [Setup] button would be enabled even if the Online Ordering Module was not present.

4. For Outlook BCM users, the last character of the OS logged in user name (used in the Outlook BCM opportunity) would sometimes be truncated.

5. For Outlook BCM users, when creating Outlook BCM opportunity, the Expiration date and Delivery date would sometimes default to "01/01/4501".

6. For Outlook BCM users, Follow up calls (Appointment entries) and Linked documents (Journal entries) would not display under the Communication History for the Business Contact or Account they were associated with.

7. If an external file was selected for synchronization, if no path translation was setup for between the master install and the remote install, an attempt would be made to copy the file on top of itself which would fail and also result in renaming the original file to a .bxx extension.

8. On the Product Lookup window when searching a native product database, and selecting the {NONE} item in the Folder drop down no results would be returned. Now, if you select the option, all products that have not been associated with a folder will be displayed in the results. Additionally, the blank entry has been replaced with the entry which is used to search for a product no matter which folder it is associated with.

9. For Corporate Edition installations rehosted to SQL, When importing a an xml file (formatted to QuoteWerks specifications) from the FileImport Document menu and the data for a field was longer than the length supported by QuoteWerks, an error would be displayed, and that record (the DocumentHeader record, or a DocumentItems record) would not be imported.

10. For API users, in the QuoteWerksBackend object, the Database.Recordset.GetValue method was returning empty values for date fields.

11. When trying to select/add an item using the Configurator by double-clicking the item and a picture was linked to that item and the picture was not found, the item would not be selected. The message box that displayed the file not found error would interfere with the double-click, so now this message can be viewed by hovering over the "Image not Found" image.

12. For Peachtree users using the Peachtree Customer list as the contact manager, after searching for a contact using the ContactsLookup menu, double-clicking on a contact would not select it.

13. Created a workaround for a bug in Peachtree. When updating the price of an existing Peachtree item in the Peachtree Items list, all 3 GL Accounts are reset to the Peachtree default GL Account values. The QuoteWerks workaround fix is to retrieve the existing GL Account values for the Peachtree item and then update these same GL Accounts in the Peachtree item whenever updating the Price of the Peachtree item.

14. For Outlook users, the introduction of the "Advanced Outlook Integration" feature set was accompanied by a requirement that the current contact being pulled into the quote must be located inside the same folder (or subfolder) as defined on the General Tab of the Outlook Integration Setup window. Users would receive an error message even though the "Advanced Integration" was not enabled.

15. If a document (for example AAAQ1001) was saved as a next revision (AAAQ1001-01), then the revision AAAQ1001-01 was deleted, and then the document AAAQ1001 was opened, and a save as next revision was performed on it, the document number for the new revision would be "AAAQ1001-" instead of "AAAQ1001-01".

16. When the API method FindAndCopyProductIntoSLIBuffer was called for an external product data source like QuickBooks or Peachtree, and they were not running, a message box would be displayed to that effect. This would interrupt the program execution of the external API application. Now, no message boxes are displayed if there is a problem with QuickBooks or Peachtree not running; essentially normal usage. However, if there is a configuration or setup issue, message boxes may still be displayed.

17. For ACT! 4.0, 2000/5.0, 6.0 users, when exporting to QuickBooks or Peachtree, the DocStatus field was being updated to reflect that the document was exported, but the DTF file associated with the document was not getting updated.

18. In the Paste Special Wizard, when selecting the "Start session using the settings of a template" option, and changing a column mapping, the data would be pasted into both the originally mapped field AND the currently mapped field. If this change was saved to the Paste Special Template, you will need to open the template and re-save it to fix this issue.

19. When selecting a Paste Special Template file in the Paste Special Wizard and the file was corrupt, the error would close QuoteWerks.

Monday, June 8, 2009

DEVELOPMENT: good software development practices

Here's a list of 5 Good Programming Habits we picked up from Amy Bennett in her article at IT World:
  • The best trick I have is to type the sequences/use cases like a story before I write any code. The outline I create is read over and over, tweaking as I go." (Dan Douglas)
  • Solve small, individual problems (The rule of 'encapsulation'). If I try to make one part of my code do too much, then I've invited trouble. (Sean Devlin)
  • I like to write a routine first as pseudocode in comments, then translate the comments into source code. I find that this is a much faster method for me than writing the source code first. Any mistakes I make in the pseudocode are more easily fixed there than if I wrote the code first. As a bonus, I have accurate and useful comments when the routine is completed. (Jeffrey Henning)
  • Make improvements often -- even if they are small -- so you are always making some progress. (James Stauffer)
  • I make sure that I get a reasonable amount of sleep and that I come back to each piece of code/design/etc. after 'sleeping on it' so that I see/think about it from different angles and states of mind. This helps with everything. (John Mitchell)

Our "top tip" is to code defensively - always be thinking "what if?". We find this particularly useful and helpful because the code module or class we're writing for application "A" may well be used in application "B" at some point in the future. If the module or class hasn't been coded defensively to produce solid bug-free code, then this could mean a lot of re-writes for the developer on application "B".

Please share your thoughts and tips on how to produce great software development products.

CONNECTIT: now available for purchase through BT TradeSpace

The ConnectIT range of products are now available for purchase through BT TradeSpace.

For more information on the ConnectIT suite and how they can help your business save hours of repetitive manual work, please see the ConnectIT websites here:

Or contact your ConnectIT / QuoteWerks reseller.

Sunday, June 7, 2009

MSCRM: custom ISV Config menu options do not show

Custom ISV Config menu options do not appear in Microsoft Dynamics CRM MSCRM 4.0.

This may be following a new installation or following an upgrade from Microsoft Dynamics CRM MSCRM 3.0.

First check that the ISVIntegration key has been added to the <appsettings> group in the web.config file. the web.config file can be found in the Microsoft CRM www root folder. The details should read as follows:

<!--
ISV Integration
========================================================================================
Using /_resources/isv.config.xml, it is possible to customize certain Menus and Tool Bars
throughout the application. This setting is provided as a performance optimization, when
there are no customizations to be rendered this setting should be "Off".
Recommended Setting: "None" (Unless you have customized the isv.config.xml file)
Values:
"All" - ISV Integration is turned on for both Outlook and web client
"Outlook" - ISV Integration is turned on for just Outlook client
"OutlookLaptopClient" - Turned on just for the Outlook laptop client
"OutlookWorkstationClient" - Turned on just for the Outlook work station client
"Web" - ISV Integration is turned on for just the web client
"None" - Not turned on.
Multiple values can be used as long as they are separated by a comma and do not contain spaces. e.g: "Web,OutlookLight"
-->

<add value="Web" key="ISVIntegration">


Next make sure that the ISV Extensions option is selected for the appropriate User roles: see MSCRM 4.0 Settings Administration Security Roles open the appropriate Role Customization tab Miscellaneous Privileges group ISV Extensions option should be coloured green.

Finally make sure that the appropriate Clients have been selected in the System Settings Custom menus and toolbars option: see MSCRM 4.0 Settings Administration System Settings Customization tab Custom menus and toolbars option.


For more information on our Microsoft Dynamics CRM and software development services, please contact us on +44(0) 1782 564252 or email development@hilltopsit.co.uk

Saturday, June 6, 2009

MSCRM: full-text indexes on the Microsoft Dynamics CRM database are not consistent

Problem upgrading from Microsoft Dynamics CRM 3.0 to 4.0: when Microsoft Dynamics the setup wizard System Requirements runs the checks, the error "The full-text indexes on the Microsoft Dynamics CRM database are not consistent with Microsoft Dynamics CRM 3.0 full-text indexes" appears. This is a fatal error which does not allow you to continue with the installation.

Checking in the setup log file here provided the following additional information.

C:\Documents and Settings\(user)\Application Data\Microsoft\Mscrm\Logs\Crm40svrsetup.log

06:12:42 Info The following full-text indexes are not consistent with Microsoft Dynamics CRM 3.0 full-text indexes:
06:12:42 Info tableowner: dbo
06:12:42 Info tablename: productbase
06:12:42 Info fulltextkeyindexname: cndx_primarykey_product
06:12:42 Error remark: modified full-text index
06:12:42 Error
06:12:42 Error The full-text indexes on the Microsoft Dynamics CRM database are not consistent with Microsoft Dynamics CRM 3.0 full-text indexes.
06:12:42 Error Check SqlFullTextIndexValidator : Failure: The full-text indexes on the Microsoft Dynamics CRM database are not consistent with Microsoft Dynamics CRM 3.0 full-text indexes.




WARNING
Several blog and forum postings will take you to this article: http://support.microsoft.com/kb/927226

Do not be tempted to remove the index!!! The error is stating that the full-text index has been modified, not added. Removing the index would not only remove the index and relationships from the Product table, but also makes changes to several other tables. Trying to run the installation check generates even more errors!!!


The cause of the error was found to be because a full-text catalog had been added to the ProductBase table. Removing the full-text catalog resolved the problem and re-running the setup wizard System Requirements checks run ok allowing you to continue with the upgrade.

For more information on our Microsoft Dynamics CRM and software development services, please contact us on +44(0) 1782 564252 or email development@hilltopsit.co.uk

Friday, June 5, 2009

QUOTEWERKS: Security Settings on Product Databases

From Aspire's QuoteWerks Tip of The Day series on the QuoteWerks 411 blog: Security Settings on Product Databases

How to place user restrictions on product databases. Many companies have a variety of products from a wide selection of vendors and would like to limit which sales reps have access to each vendor or product database. Read more.


For more information on QuoteWerks and our QuoteWerks consultancy, training and support services, please contact us on +44(0)1782 564252 or email info@hilltopsit.co.uk



Thursday, June 4, 2009

BLOG: Bing - a new search engine from Microsoft

Microsoft launched a new search engine yesterday.

According to Microsoft:
Bing offers richer, more organised results and an improved search experience, creating more satisfied users who use it more often. The benefit to you? Even more qualified leads to further grow your business online with the market’s highest-converting search engine.

We'll see how Bing fairs against Google's dominance of the search engine market.


For more information on our website design and development and search engine optimisation services, please give us a ring on +44(0) 1782 564252 or email info@hilltopsit.co.uk