Recently, I had a request to build functionality that would allow a user to send an email based on information in a datagrid row. Here is an outline of how I put that functionality together.
The form contains a standard datasource/datagrid setup (Note, this does not work with an editable datagrid). In addition to any other functionality on the form, we also need to add two objects: A Hidden Text control, and a button on the form. The Hidde...

I was working on an editable datagrid, adding two new columns from a couple of field properties that I had just added to the entity model. After I made my changes, built the web platform and deployed, my new columns were not showing up in the datagrid. "Oh well", I thought, "Sometimes you have to rebuild everything for a change to come across". So, I deleted everything from my build folders to force a full rebuild. I also deleted everything f...

Occasionally, it may become necessary to rebuild the XMLSchema to fix issues with groups in Infor CRM. I wanted to take the opportunity to document here how to rebuild the XMLSchema in version 8.x of Infor CRM:

In today's post, I'll be outlining a procedure to add an Address field to Account Asset (Product) record. To add an address field to Account assets (products) that allows a user to define an existing Account Address for an Asset (AccountProduct) record. The addressed will be stored in the AccountProduct.Userfield1 field.

I recently had a project that required me to be able to check if a user belonged to a particular team. A previous post by Ryan showed me how to query team membership, but rather than setting this up as a Business Rule, I wanted to create it as a Global function that could be called from anywhere without having to worry about instantiating an entity to access the business rule.
Instead of creating a business rule, I created a Global CS script...

I recently had an issue with a Quickform where I was attempting to set the Enabled property of a TextBox based on the value of a checkbox on the same form. For some reason, the enabled property I was setting for the textBox was not being honored.

When you are viewing an Entity Detail page, the Common Tasks pane on the right of the page provides a number of links to perform common tasks, such as Mail Merges, Emails and creating activities for the current entity record. By making a couple modifications, we can add a link to run a report from this section
I'm going to demonstrate how to add a report link to the Account Entity. Account should already have a link to run the Account De...

I recently worked on a project which contained a Product Lookup control on an Account-level tab. In this case, the lookup is only supposed to return products that are also AccountProducts for the current Account. To do this, you can set the Lookup control to pull from the AccountProduct entity, then use code to save the Product from that entity and save it to your custom entity.
In your lookup control:
Set the Lookup Binding Mode to "Obj...

On occasion, it becomes necessary to clean out the build folders and deployed website prior to a build/deploy, in order to force changes to become available. In version 8.1, Saleslogix provides a handy menu option to clear out the build folders. Unfortunately, using this menu item also seems to temporarily break it's own ability to build by causing some of the folders in that build path to become read-only, as shown below:

Using Secured Actions, you can restrict access to user interface elements in the Saleslogix web client. If you know which tables to look for, it is easy to package those modifications for installation into another Saleslogix system.

In the past, I've written about pivoting data in SQL, and I wanted to post a quick follow-up showing basically how to rotate the data back into a single column.
My source data consists of a recordID field, then 5 different boolean fields representing a different type value:

Developing for Saleslogix web using external assemblies provides you with a lot of freedom when developing code for Saleslogix web. External assemblies can be helpful when organizing projects, reusing code and working with references to other assemblies. You also have the ability to step through your code for debugging and troubleshooting.
In this post, I'm going to briefly outline how to launch your custom assembly code in debug mode in ...

I realized that we didn't have any sort of simple write up of how to install a Saleslogix web bundle, so for my post this month, I thought I'd list the steps in a typical installation with screenshots. Most of these screenshots are from an 8.0 system, but the process should be the same in older versions of Saleslogix.
In Application Architect, Right-click on the VFS in the Project Explorer and Select "Install Bundle".

When creating a new Account/Contact record in Saleslogix web, you have the ability to check for duplicate values. With some simple modifications to the code page behind that form, you can set default values for the Match Filters.

In a recent project, I needed to round numeric values displayed in the Opportunity Snapshot. This can be done easily using the WebEntityBinding method in the source code file for the Opportunity Snapshot smartpart. The WebEntityBinding method is contained in the Sage.Platform.WebPortal.Binding namespace, and is used to bind data to controls contained in Saleslogix smartparts. […]

This error usually occurs because an entity property is set as the wrong datatype for it's underlying field. This happens because when adding a new entity from an existing table, it doesn't create those boolean properties correctly.
This is not an uncommon issue. In fact, it comes up all the time and I'm sure it's been mentioned on this site before. I just wanted to re-iterate the issue and include some screenshots to demonst...

When checking for two (or more) different values for a property in a code snippet, you can't simply look at the string values without an error being thrown. For example:
Sage.Entity.Interfaces.IAccount acc this.BindingSource.Current as Sage.Entity.Interfaces.IAccount;
if (acc.type != "Customer" || acc.type != "Prospect")

I had a request to post on how you could replace characters within a blob field in the SalesLogix database. Blob fields are database fields that hold any sort of binary information (such as text, images, audio, etc..), but SalesLogix uses them primarily for holding large amounts of text, since you don't have to define a field length. The LongNotes field in the History table is a good example.

In the SalesLogix web client, you don't really have the same old options regarding Queries and Datasets. However, by using IRepository you can create similar functionality by using projections to define groups and other calculations.