Infor CRM (Formerly Saleslogix) v8.1 update 03 and 05- Uncaught Error Scheduling Contact Processes

 In the Infor CRM (formerly Saleslogix) web client, under the Contact area you have the ability to schedule a Contact Process via the Processes tab.  When you click the + to schedule a Process the following dialog opens:

 

If you don’t select a Process in the “Process Type” field and click Schedule you get an uncaught error that is not informative:

 

We can change this fairly easily.  The dialog that is launched when you click the + is a custom Contact smart part called ScheduleProcess.  This smart part has a separate code file named ScheduleProcess.ascx.cs.  Within that code file there is a method cmdSchedule_Click.  The code looks like the following:

    protected void cmdSchedule_Click(object sender, EventArgs e)
    {
        if (lueContactToScheduleFor.LookupResultValue == null)
        {
            throw new ValidationException(GetLocalResourceObject(“error_ScheduleFor.Message”).ToString());
        }       
        try
        {
            LoadOwner();
            if (cboProcessType.DataSource != null)
            {
                Plugin selectedPlugin = ((IList<Plugin>) cboProcessType.DataSource)[cboProcessType.SelectedIndex];
                object[] objarray = new[]
                                        {
                                            lueContactToScheduleFor.LookupResultValue,
                                            selectedPlugin.PluginId,
                                            selectedPlugin.Family,
                                            selectedPlugin.Name,
                                            ownProcessOwner.LookupResultValue
                                        };
                Sage.Platform.Orm.DynamicMethodLibraryHelper.Instance.Execute(“Contact.ScheduleProcess”, objarray);
                DialogService.CloseEventHappened(sender, e);
                IPanelRefreshService refresher = PageWorkItem.Services.Get<IPanelRefreshService>(true);
                refresher.RefreshTabWorkspace();
            }
            else
            {
                DialogService.ShowMessage(GetLocalResourceObject(“Error_ProcessTypes”).ToString(), “SalesLogix”);
            }
        }
        catch (Exception ex)
        {
            string sSlxErrorId = null;
            var sMsg = ErrorHelper.GetClientErrorHtmlMessage(ex, ref sSlxErrorId);
            if (!string.IsNullOrEmpty(sSlxErrorId))
            {
                log.Error(
                    ErrorHelper.AppendSlxErrorId(
                        “The call to SmartParts_Process_ScheduleProcess.cmdSchedule_Click failed”, sSlxErrorId), ex);
            }
            DialogService.ShowHtmlMessage(sMsg, ErrorHelper.IsDevelopmentContext() ? 600 : -1,
                                          ErrorHelper.IsDevelopmentContext() ? 800 : -1);
        }
    }

 

We can add a new line after the initial if statement that is checking for the existence of a contact.  Our line will check the Process Type combo box:

    if (string.IsNullOrWhiteSpace(cboProcessType.Text)) throw new ValidationException(“No process is specified”); //CFX

So the final code looks like:

    protected void cmdSchedule_Click(object sender, EventArgs e)
    {
        if (lueContactToScheduleFor.LookupResultValue == null)
        {
            throw new ValidationException(GetLocalResourceObject(“error_ScheduleFor.Message”).ToString());
        }       

    if (string.IsNullOrWhiteSpace(cboProcessType.Text)) throw new ValidationException(“No process is specified”); //CFX


        try
        {
            LoadOwner();
            if (cboProcessType.DataSource != null)
            {
                Plugin selectedPlugin = ((IList<Plugin>) cboProcessType.DataSource)[cboProcessType.SelectedIndex];
                object[] objarray = new[]
                                        {
                                            lueContactToScheduleFor.LookupResultValue,
                                            selectedPlugin.PluginId,
                                            selectedPlugin.Family,
                                            selectedPlugin.Name,
                                            ownProcessOwner.LookupResultValue
                                        };
                Sage.Platform.Orm.DynamicMethodLibraryHelper.Instance.Execute(“Contact.ScheduleProcess”, objarray);
                DialogService.CloseEventHappened(sender, e);
                IPanelRefreshService refresher = PageWorkItem.Services.Get<IPanelRefreshService>(true);
                refresher.RefreshTabWorkspace();
            }
            else
            {
                DialogService.ShowMessage(GetLocalResourceObject(“Error_ProcessTypes”).ToString(), “SalesLogix”);
            }
        }
        catch (Exception ex)
        {
            string sSlxErrorId = null;
            var sMsg = ErrorHelper.GetClientErrorHtmlMessage(ex, ref sSlxErrorId);
            if (!string.IsNullOrEmpty(sSlxErrorId))
            {
                log.Error(
                    ErrorHelper.AppendSlxErrorId(
                        “The call to SmartParts_Process_ScheduleProcess.cmdSchedule_Click failed”, sSlxErrorId), ex);
            }
            DialogService.ShowHtmlMessage(sMsg, ErrorHelper.IsDevelopmentContext() ? 600 : -1,
                                          ErrorHelper.IsDevelopmentContext() ? 800 : -1);
        }
    }

This results in a much nicer message:

 

ABOUT THE AUTHOR

Kris Halsrud

Kris Halsrud is a Senior Analyst / Developer for Customer FX Corporation.

Submit a Comment

Your email address will not be published. Required fields are marked *

Subscribe To Our Newsletter

Join our mailing list to receive the latest Infor CRM (Saleslogix) and Creatio (bpm'online) news and product updates!

You have Successfully Subscribed!