• Blog Post: Sending Emails in ASP COM API

    This article has been updated to take into account changes made to the product after Sage CRM 61.j. It has subsequently been altered to bring it in line with the coding convetions introduced with Sage CRM 6.2 Sage CRM offers a very simple MessageBlock object that you can use for your own pages...
  • Blog Post: How to Add an Extra Tab Option to the User Admin tab menu (AdminSingleUser)

    A Customer had a requirement to store additional data about users that were 'Resources' in Sage CRM. The new fields in the User table should be displayed in a page that should only be available when the user was of type 'Resource'. Additional fields can be added to the User table...
  • Blog Post: Basic Code Structure of an Add or Insert Page

    This article has been edited to bring the code into line with the coding standard introduced in Sage CRM 6.2. Here we can see the basic code structure for an Insert of a new Record expressed in ASP page code. I have used here a new opportunity record but it really could be any record including...
  • Blog Post: The Values() collection

    This article has been edited and corrected. The code in this article has been changed to follow the coding convention that was introduced in Sage CRM 6.2 The Values() collection can be used in all serverside scripts to examine the passed in Values from a form. Create Scripts Validate Scripts...
  • Blog Post: Sage CRM v7.1: Changes to Communication Management may impact existing workflows and scripts

    One of the little new features introduced as part of the big enhancement of Sage CRM's Communication Management and the integration with Exchange is the some new fields; Subject (comm_subject) and Location (comm_location) have been added to the communication records to allow more complete sharing...
  • Blog Post: Example of a Complex Screen editing multiple records in ASP

    I have written before about the creation of a complex screen where the ASP page offers the user the ability to edit two records at the same time. See: https://community.sagecrm.com/blogs/hints_tips_and_tricks/archive/2007/10/01/creating-complex-screens-using-the-com-based-asp-api.aspx This code...
  • Blog Post: Sage CRM 7.2: Differences in Object References in Client Side Code (onChange & Custom Content)

    Consider the screen shown below This image happens to shown a data from a secondary entity being displayed in a summary screen in Sage CRM v7.1. You can see that in addition to the main entity information being displayed in the main part part of the screen there is also information from the...
  • Blog Post: Adding forecasting quarters

    Updated: A colleague in Frankfurt has thoughtfully provided a German version of this customisation. I've merged it with the English version and packaged it into a custom component for convenience. It's available from the Partner download area . I've left the original instructions and page...
  • Blog Post: Sage CRM's SOAP Web Services and Sage CRM's COM based Web Self Service API.

    The two APIs that I wish to consider in this article are mature, well developed and stable. They've been in the product for a very long time. Nevertheless, they are still used and still very much a useful pair of development options. In fact, they both play a very important part in integration and...
  • Blog Post: Instantiation of the COM (eWare.CRM) object

    The "eWare" or "CRM" COM Object can be instantiated in variety of ways. 1) ASP main interface application extensions 2) ASP Self Service pages 3) External Applications 1) ASP main interface application extensions For application extensions of the main User Interface using ASP pages...
  • Blog Post: Adding Dedupe Behaviour to the Lead Entity

    This article has been updated to ensure the variables that are passed can take into account a wider range of characters in passed names including umlauts, accents and cedillas. Although this article describes a technique for adding dedupe behaviour to the Lead table it may be adapted for other entities...
  • Blog Post: Using a Table Level Script to Track Changes to Data Made by Users.

    This article uses an idea first mentioned in " Validation Rules Don't Always Mean Stop! ". The example 'UpdateRecord' event function below will write out into a log file which fields have changed. It won't write every field in the screen so we first need to know what fields...
  • Blog Post: Listing Files Not Uploaded and Stored using the Sage CRM interface

    Occasionally you may customer requirement to store relatively large numbers of documents associated with a company, person or opportunity record outside the main librabry mechanism. As an example of this requirement imagine an organisation that sells design services to real estate developers. Such a...
  • Blog Post: Useful Date Functions

    Occasionally you will need to fetch a date from either the CRM database or perhaps from an external system that is then needs to be formatted so it looks like a CRM date. All users are able to set their date preferences. The are other articles that discuss handling dates Add/Subtract...
  • Blog Post: Discovering Data Relationships in Code

    You may have a business requirement to cascade a change through the child records of a company. I have discussed previously how a table level script can be used to update all opportunities if the company is reassigned to a new account manager. See the article " A Table Level Script to update Opportunities...
  • Blog Post: Building a Workflow Map Diagram that Shows Progress through Workflow

    Workflows in Sage CRM can become long and a user may wish they had a version of the diagram that is available when the workflow is constructed. You can see from this image below that an extra button has been added to the Opportunity screen. In this example application, when the 'Workflow Map'...
  • Blog Post: Passing Variables to an External Site and Embedding the Result in a CRM Page (COM ASP API)

    This example shows how it is possible to pass variables from CRM to an external website and then embed the returned results into a page structure controlled by the standard CRM blocks. You can see the page below has the standard tab group, the notifications and onscreen coaching surrounding the information...
  • Blog Post: Example Code to Generate a Pseudo-Random Password

    A Customer had a need as part of a Case Workflow to generate a Self Service username and password for their contacts. They were using an ASP page to do this and asked whether I had any code to generate a password for Self Service. This is a simple little script and you may find this useful for your...
  • Blog Post: Sage CRM v7: New ASP Include Files

    Please note there has been a minor coding standard change between Sage CRM 6.2 and Sage CRM 7.0. New include files that are used in ASP pages have been added; these are called sagecrm.js, and sagecrmnolang.js and sagecrm.vbs. The existing include files accpaccrm.js, accpaccrmnolang.js and accpaccrm.vbs...
  • Blog Post: Creating a simple ASP List Page that Displays Data from an external Database using an ODBC driver e.g. Sage 100 ERP, formerly known as MAS 90

    This article is part of a series that discusses how you can link to an external database and list, search and view data from a table in that external system. I have used Sage ERP MAS 90 as my example database. The techniques discussed here can be used within implementations of the Extended Enterpise...
  • Blog Post: Sage CRM 7.2: The Impact of Frameset Removal on CTI integrations

    Consider the following image. The default basic CTI offering in Sage CRM v7.1 used the frameset structure as highlighted in the above image. Sage CRM has a very flexible set of APIs and there have always been several hooks in existence to allow other companies to create CTI software that can...
  • Blog Post: Adding the Document Drop Plugin into a Custom Page in Sage CRM v7.1 SP1 and earlier

    Note : This article is true only for Sage CRM v7.1 SP1 and earlier. The mechanism to Document Drop into Custom Entity pages has been completely changed in Sage CRM v7.1 SP2. This technique covers the use of the Document Drop ActiveX plugin within a custompage. The Document Drop Plugin is used...
  • Blog Post: Creating a New Entity using COM API ASP

    This article has been updated to allow download from this site. I have written before many times about creating ASP pages to support access to a custom entity. How does Meta Data create a Screen? DPP and Standard include files for ASP pages The Basic Structure of an Edit Page How...
  • Blog Post: Controlling the Display of Drop Down Options in Team Select Fields

    Many system entities such as Opportunities, Leads and Cases can be assigned to a Team. Custom Entities can also have Teams assigned to them. For historic reasons the Team field in the database is called channelid. user_primarychannelid oppo_channelid case_channelid lead_channelid ...
  • Blog Post: Calling CRM Actions

    This article has been updated (29th April 2009) to correct hyperlink references and to use the coding convention introduced in Sage CRM 6.2. The CRM.URL() method is used to allow you to build correctly formatted URLs that reach back into the application. Most commonly this is used to interact with...