• Blog Post: Adding a new Panel to a Summary screen e.g. Company Summary

    A screen like the company summary screen has a very particular structure because it is partially defined in meta data and partial has its structure hard coded into the system action being called. The detail of this is discussed in the article " Changing a Summary Screen (e.g. Company Summary Screen...
  • Blog Post: How do I hide the 'Follow-up' check boxes on a New Appointment or New Task Screen Screen?

    Below is a screen shot that shows the New Task Screen. You'll see there are some checkboxes that if selected will launch another new communication screen once the New Communication is saved. The HTML that generates these Checkboxes looks like this: <TABLE CLASS=VIEWBOXCAPTION><TR><TD><TD><input...
  • Blog Post: Adding Clientside Code into Dynamically Built Workflow Action screens

    I had a conversation with a participant at one of the recent Bootcamps regarding the use of clientside code in dynamically built workflow screens. This topic has also appeared in the Forums with the community site. The partner's customer had a requirement that when a user was processing an opportunity...
  • Blog Post: Using a Function in a CreateScript

    In the article " Creating Global Code for OnCreate and Validate scripts " I discussed how we can reuse functions across different create scripts either in the same screen or between different screens. One of the techniques that I suggested was the use of either a specialised table to hold...
  • Blog Post: Adding Derived Fields in Views into Meta Data

    I originally wrote about creating derived fields in a view in the article " Custom_Edits and Derived Fields Created in Views ". This discussion is a continuation of the ideas expressed in that article and will show how meta data definitions of a calculated field can be easily added into Meta...
  • Blog Post: Recent List Customisation

    This article looks at how the recent list interacts with custom entities. There are 4 components to consider that make up the functionality of an entity’s recent list: • The code that adds a record to the recent list. • The find hyperlink (entity name and image in the recent list) and...
  • Blog Post: How do default addresses and persons get created for a Company?

    When you create a new company using the standard system behaviour the Address and Person contact details that you provide get recorded into their separate tables and foreign key references are recorded on the company table to indicate which address and which person are default for that company. The foreign...
  • Blog Post: Products by Code, an example of changing a Search Select Advanced field's behaviour

    Simple things can become show stoppers. I was asked if there was anyway to expose the Product Code field in the Line Items area when building a Quote? The customer wants to enter order by code or SKU number instead of by product family and product name. The behaviour of the Search Select Advanced...
  • Blog Post: Duration in Workflow Tracking pages

    The oppo_duration field is defined in the custom_edits tables as being of Entry Type 'Minutes'. The minutes are held as the physical data type 'int' select * from custom_edits where colp_entrytype = 57 Fields of entry type 'Minutes' can be used in any entity and they have a couple...
  • Blog Post: Making ServerSide objects available to ClientSide code (onChange and Custom Content scripts)

    If you have started to code with Sage CRM you will know that the world is seemingly divided into two, ServerSide and ClientSide. The objects and properties that we can use ServerSide can not be used within the browser. We have useful methods like CRM.GetContextInfo() which we use in Create Scripts, Validation...
  • Blog Post: Working with a Person's Address Type

    When you edit or add a new address for a person in Sage CRM you are invited to specify whether the address is a Business address or a Home address. This choice is then shown on the address list for the person. The default choice for address type is 'Business' or 'Home'. This...
  • Blog Post: HTML in the database

    It is a general rule that in CRM data fields are not supposed to hold HTML which can then be passed directly back to the interface. This is by design. So if you store a string in a text field like "<a href=https://community.sagecrm.com>https://community.sagecrm.com</a>" then...
  • Blog Post: Making E-mail templates Read-Only using Clientside code contained in Translations

    The UK PSG team was recently asked to work out how to lock down the Email editor for certain templates. The company wanted to be sure that when certain templates were selected by a user the merged text of the email could not be altered by the user. Those templates when selected needed to become ReadOnly...
  • Blog Post: How can I see if a prompt can be translated?

    All of the visible captions within CRM can be translated. One way of quickly proving if a caption can be translated is to log on as Hans Muller (Mullerh) in the demo data and see if his screens are translated. This is not a perfect way as there are loads of translations that are missing for this user...
  • Blog Post: Finding %, _ and other Special Characters in SQL

    I have just spent a frustrating few minutes trying to quickly find where '%' codes are used in translations. Of course '%' is a special wild card character in SQL. The same is true for '_' and other characters. Don't do : select capt_code, capt_family from custom_captions...
  • Blog Post: Customizing the Opportunity Pipeline Summary Information

    Can we customise the "Statistics for All stages" that appear next to the pipeline in My CRM / Opportunities? The pipeline graphic and its associated statistics are driven from within the dll and have no definition within meta data. This means that we have no obvious way of changing the data...
  • Blog Post: Custom_Edits and Derived Fields Created in Views

    In CRM it is quite common to need to create a view that performs a calculation or derives information to be displayed on screen or in a report. An example of this can be found in the Case management area. For example if you logon to a demo system as Kylie Ward (WardK) and navigate to the My CRM menu...
  • Blog Post: Referencing records from a Custom Table in a Advanced Search Select field.

    In the screen shot below you can see that in my customised implementation of Sage CRM, I am able to associate an Opportunity with an record held in an external database. The external table in my system is called 'Contacts' To allow the table to be referenced by an Advanced Search...
  • Blog Post: How can I easily import a large list of Selection list values into CRM?

    This question occurs when setting up CRM; you may find yourself with a very large number of selection list values that need to be added to the system. For example you may want to have every county or even major city to be loaded into CRM in the same way the addr_country field has it's country list...
  • Blog Post: Can you order lists by a field caption order?

    In the demo database the workflow for an opportunity allows an opportunity to have its stage field set to different values. DealLost Demo Lead Negotiating Qualified Quoted Sold Imagine a requirement to sort a list of opportunities by the oppo_stage. That is easy, we can just allow the option 'sort...
  • Blog Post: Linking to 3rd Party Databases

    Within the Administration screens is the location that allows the System Administrator to create an additional database connection to a 3rd party database. Administration -> Advanced Customization -> Tables and Databases Sage CRM allows us to connect to a different database on a different...
  • Blog Post: How do I remove the Type column from the PersonList?

    The personlist list block is defined under the Admin>Customization>person>lists area but the column for the type is added by the dll. The column draws its information from the translations (custom_captions) that control the different 'types' of person contact. The default person types...
  • Blog Post: Caption Code, Caption Family and Caption Family Type in Translations

    When a new translation is added into the system, there are 3 fields that need to be filled in before the translations can be added to the different 'language' or caption fields. There are capt_code capt_family capt_familytype So the entries for a field like company name ...
  • Blog Post: Choices in Customizing Lists

    You only need to follow the tags " List Page " or " List Block " to see that there have been lots of articles written already about how lists can be customized. In this article I want to step back and bring all these points together so we can see the range of options that we have...
  • Blog Post: Enhance your Advanced Search Selects

    Have you noticed the style of displaying Wave Activities on the communication screen? The Advanced Search Select looks like this in edit mode And like this in view mode It shows the Campaign name AND the Wave Activity name within the Advanced Search Select. In other words you can choose more...