Customizing UI actions for the Now Mobile Agent application

  • Release version: Zurich
  • Updated July 31, 2025
  • 2 minutes to read
  • Summarize
    Summarized using AI
    This content was generated using new OpenAI-powered functionality. Results are provided on an as is basis and are not guaranteed to be accurate or complete.

    Summary of Customizing UI actions for the Now Mobile Agent application

    This guidance explains how to customize UI actions within the Now Mobile Agent application, specifically for Field Service mobile users. Custom UI actions streamline end-user workflows by enabling faster task management on mobile devices. The configuration approach differs from the desktop application by avoiding database queries in mobile UI action conditions, thus conserving mobile resources.

    Show full answer Show less

    Key Features

    • Efficient Mobile UI Action Conditions: Mobile UI actions do not execute database queries, reducing resource usage compared to desktop conditions.
    • Enable/Disable UI Actions: Administrators can review and disable unused mobile UI actions to optimize mobile performance.
    • Configuration via Studio: UI actions for the Now Mobile Agent application are configured in Studio, allowing tailored button behaviors.
    • State and Assignment Checks: Mobile UI actions use simplified conditions, such as checking the task’s current state and if the task is assigned to the logged-in user, instead of complex system checks.

    Practical Configuration Examples

    • Accept Work Order Task Button:
      • Desktop condition example: current.state == 16 && (new StateFlow().validFlow(...)) and system checks for configuration enablement.
      • Mobile adaptation: Retain only current.state == 16 and add current.assignedto == gs.getUserID() to ensure the button is active only when the task is assigned to the user.
      • If the accept/reject feature is disabled in configuration, disable the corresponding mobile UI action.
    • Assign to Me Function:
      • Desktop checks include task state, scheduled start time, self-assignment status, user roles, and group membership.
      • Mobile condition simplifies first three checks: current.assignedto != gs.getUserID() && !(current.expectedstart.nil()) && (current.state == 10 || current.state == 16).
      • User roles can be specified in the Roles field for additional validation.
      • Group membership validation is handled in the write-back action script, which assigns the task if allowed or returns an error message if not.

    Key Outcomes

    • Customizing mobile UI actions improves the responsiveness and efficiency of field agents using the Now Mobile Agent application.
    • Administrators can fine-tune when buttons appear and are active based on task state and user assignment without taxing mobile resources.
    • Mobile UI action conditions offer a practical way to replicate desktop logic with simplified checks suitable for mobile environments.

    Make it easier for your end users to get things done faster with the Field Service mobile application by creating custom UI actions.

    The configurations for UI action conditions are different in Field Service mobile applications than those in the desktop application. Unlike the desktop application, the UI action conditions on mobile don’t execute any database queries and therefore don’t take up mobile resources. On the mobile application, instead of performing a system check on whether a Field Service configuration is enabled, you can configure the button to be active or inactive.

    As an administrator, you can review the mobile UI actions and disable the ones that aren’t being used to use less mobile resources.

    The following image shows the Now Mobile Agent application open in Studio. The Now Mobile Agent application open in Studio is where you can configure UI actions.

    Here's a sample UI action configuration for accepting a work order task.
    The Accept button on the desktop application has the following UI action conditions:
    current.state == 16 && (new StateFlow().validFlow(current, '53d0aea8d7230100fceaa6859e610326', 'manual'));
    The system checks these state flow conditions:
    1. The SMconfiguration record to see if the accept_reject UI action is enabled or disabled using this script:
      (new sn_sm.SMConfiguration()).isEnabled(current, "accept_reject", false)
    2. If the task has been self-assigned
    To modify the UI action for the corresponding button on your mobile device:
    1. Don’t change the current.state == 16 condition. It checks for information on the current record.
    2. If this condition:
      (new sn_sm.SMConfiguration()).isEnabled(current, "accept_reject", false)
      is set to false, drop this condition and disable the corresponding mobile UI actions on the mobile application.
    3. Set the value for the current tasks assigned to field parameter to the logged-in user as shown here: current.assigned_to == gs.getUserID()
    Based on the preceding example, here’s the modified condition for the UI action in the mobile application:
    current.state == 16 && current.assigned_to == gs.getUserID()

    Here’s another sample configuration for self-assigning a task.

    The Assign to Me function on the desktop application has the following UI action conditions:
    (new SMTask()).canAssignToSelf(current)
    The SMTask.canAssignToSelf(task) script include method performs a system check for these conditions:
    1. State of the task
    2. Value of the scheduled start time
    3. If the task has been self-assigned
    4. If the user has the basic and agent roles as defined in the SM Configuration record
    5. Whether the user is part of a group handled by the task dispatch group
    On the mobile application, the following UI script condition performs a check for the first three conditions listed before:
    current.assigned_to != gs.getUserID() && !(current.expected_start.nil()) && (current.state == 10 || current.state == 16) 
    For the fourth condition, you can add a specific role to the Roles field.
    For the fifth condition, perform the following validation in the wot_assign_to_me write-back action item:
    if (smTask.canAssignToSelf(wotGR)) 
    smTask.assignToMe(gs.getUserID(), input.sys_id); 
    else
    gs.addErrorMessage(gs.getMessage("Not a valid task assignment."));