How to return the correct browser date/time equivalent values when running server-side code in the Infor CRM web client.
How to add a URL attachment in the Infor CRM web via server-side code
InforCRM has had the ability to define boolean entity properties as either True/False or Yes/No for a long time, however in a recent project, I found that displaying such an entity property as a bound field in a Data Grid would always display True or False (or nothing, if not set) regardless if it was set as a Yes/No data type.
A useful way to allow a user to control the filters for some server-side operation or process is to allow them to select a folder for your back end code to use for filtering the data. There’s a few things you need to do to retrieve the filters for a folder. This article will provide […]
In Creatio some records have support for an image. For example, in the Contact section you can add a contact’s photo and in the Account section you can add a company logo. This article will outline the code needed to programmatically add an image to a contact or account from a URL. The code can […]
An integral part in building business logic in Creatio is being able to respond to entity events, such as when a record is added, modified, deleted, etc. Creatio does provide many ways to handle these events. You can add signal starts in processes or handle these events in entity subprocesses. This article will cover another […]
One of my favorite features of bpm’online is how you can create your own custom web services that you can consume from the client-side code in the UI. This allows you to offload heavy operations to the server that you can easily call from your code in the UI. These web services are referred to […]
Showing and hiding tabs in the Infor CRM (Saleslogix) client should be an easy thing. It should be something you can do on demand, and any time, no matter where things are in the page life-cycle. You should be able to show or hide tabs based on changes in other controls on the detail form. The help in Application Architect describes creating a module, an external assembly that you can wire up for the portal to show and hide tabs and runtime. That...
Avoiding the Dirty Data Message When Programatically Redirecting to a Record in Infor CRM (Saleslogix)
I'm not a huge fan of bugging end users. I figure, if an end user clicked something, he or she meant to click it. However, that's not always the case. It's especially a good idea for destructive actions or for things that will make a lot of changes and you want to make sure before you pass the point of no return. If a user clicks something and you need to confirm the action with some sort of "Are you sure?" prompt, then it m...
In most places in the Infor CRM (Saleslogix) web client, it's pretty easy to use security roles. You simply add the role string to an "Applied Security" property and the rest is magic. But what if you need to get more granular than that? What if you need to access the roles at runtime and apply security to something that doesn't have an Applied Security property? What if you need to apply role security to individual controls on ...
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")
If you've followed my posts on Sublogix, or even better, given Sublogix a spin, you'll know that if you're doing SalesLogix development Sublogix can save you a ton of time and give you a much easier to use data access and entity model. This post will show you how to extend the Sublogix entities to give you even easier access and save even more time.
On a recent project, I worked on emulating functionality similar to what is found in the LAN client where a user is presented a dialog asking them to choose between different activity types then launching into the Schedule Activity functionality. I found this was fairly easy to duplicate in the web client, and in this post, I'll quickly go through the steps for creating that type of functionality.
One of the many great things about developing for the SalesLogix Windows client using .NET Extensions is that you are able to unit test your code. However, since .NET Extensions are passed references to the running instance of SalesLogix, it's important to be able to mock those objects so you can test properly. Best of all, this also allows you to fully test and debug within Visual Studio without the need to have SalesLogix even running.
If you're working in the SalesLogix Windows (LAN) client, why not make as most use as possible of a modern development environment, language, and tools? The SalesLogix .NET Extensions feature in the SalesLogix Windows client is one of the best, and likely least used, features in the SalesLogix Windows client development story. A choice bewteen using an out-dated development environment and VBScript, with no possibility of using source control...
If you've ever created a SSIS package and wanted to provide a way for end users to run that package without having to run the Business Intelligence Development studio, you can compile the package into a dtsx file for them to run. This would require them to manually alter connections and variables, which can get complicated for an average end user. Alternatively, it is pretty simple to put together an application which can be used to run the ...
It's easy to access the UserService interface from a Code Snippet Action item in the SalesLogix web client. For this example, I'm just going to add a button on account detail which will launch a DialogService message with the current user.
I recently ran into a case where I had to query an Entity in SalesLogix to find records where a user was in any one of three fields. ICriteria has an Or operand but that is for comparing only two fields. So how do you do three? With Disjunction. Here is an example: Sage.Platform.RepositoryHelper<Sage.Entity.Interfaces.IAccount> […]