Mobile Epicor ERP Time Tracking: Entering Multi-Job Hours

Illustration for the new Bezlio mobile Epicor time tracking application that allows you to use any mobile device to track your time on jobs within Epicor ERP.

This Bezlio app recipe provides you with a Bezl to easily attribute labor transactions to jobs within Epicor ERP on any device, from anywhere.

Jobs are presented in an accordion listing, grouped by the job scheduling priority that already exists in your Epicor ERP.   The logged in user will only see the operations associated with their department (further details on that association will be described in the installation steps).

A user can select each of the jobs they have worked on, the total number of hours, and when they submit the hours will be pro-rated to each job according to the percentages input.

Bezlio provides a vastly superior and mobile web interface for attributing labor transactions to jobs than teh stock Epicor screens.

Download the Resources

All of the code for the Bezls and the SQL queries required in the following instructions are available from our Github repository.  Click one of the links below to go straight to the downloads for your specific application or go to the customizable bezl that can be tailored for your particular data source.

How to Install

Assuming you have a configured Bezlio Remote Data Broker having the SQL Server and Epicor 10 plugin installed and a trusted connection established with your users, follow these steps to install this recipe:

  1. Download the .SQL files in the Queries subfolder and place them somewhere where your BRDB server can reach it. The rest of the steps assume this location is C:\BezlioQueries\TimeTracking. 
  2. Out of the box, this solution matches up a users Bezlio login (which should be an e-mail address) to an Employee Maintenance record in Epicor having this same e-mail. From there we look to the department specified on this employee record and only return operations associated with resource groups where that department ID is associated. All of this logic lives within the .SQL file so if you prefer alternate behavior it should just be a matter of editing that one file.
  3. This Bezl currently has a company ID of 'EPIC06' specified for the 'Company' parameter of the 'submitLabor' function in the Bezl. You will want to either change that within Bezlio or just do a find & replace of that text in the .txt file here before you import it.
  4. Configure the SQL Server plugin for BRDB by editing the file C:\Program Files (x86)\Bezlio Remote Data Broker\Plugins\SQLServer.dll.config. The following example can be used when modified to suite your environment:
<?xml version="1.0" encoding="utf-8" ?>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="bezlio.plugins.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
            <setting name="sqlFileLocations" serializeAs="String">
                  'locationName': 'TimeTrackingDemo_Epicor10',
                  'locationPath': 'C:\\BezlioQueries\\TimeTracking\\'
            <setting name="connections" serializeAs="String">
                  'connectionName': 'Epicor10',
                  'serverAddress': 'YOUR_SQL_SERVER',
                  'databaseName': 'YOUR_DATABASE_NAME',
                  'userName': 'YOUR_SQL_SERVER_USER',
                  'password': 'YOUR_SQL_SERVER_USER_PASSWORD'

This recipe relies on your Epicor ERP v9.05 or v10 plugin already being configured.

If you have not done so already, configure the Epicor plugin for BRDB by editing the file C:\Program Files (x86)\Bezlio Remote Data Broker\Plugins\Epicor10.dll.config.

The following example can be used when modified to suite your environment:

<?xml version="1.0" encoding="utf-8"?>
        <sectionGroup name="applicationSettings"
            type="System.Configuration.ApplicationSettingsGroup, System, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="bezlio.rdb.plugins.Properties.Settings"
                type="System.Configuration.ClientSettingsSection, System, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            <setting name="connections" serializeAs="String">
                  'connectionName': 'Epicor 10',
                  'appServerUrl': 'net.tcp://YOUR_APP_SERVER/YOUR_EPICOR_INSTANCE',
                  'userName': 'EPICOR_USER_NAME',
                  'password': 'EPICOR_PASSWORD'
            <setting name="epicorClientPath" serializeAs="String">
            <!-- In this extension section we are introducing all known service bus extensions. User can remove the ones they don't need. -->
                <add name="connectionStatusBehavior"
                    type="Microsoft.ServiceBus.Configuration.ConnectionStatusElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="transportClientEndpointBehavior"
                    type="Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="serviceRegistrySettings"
                    type="Microsoft.ServiceBus.Configuration.ServiceRegistrySettingsElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="netMessagingTransport"
                    type="Microsoft.ServiceBus.Messaging.Configuration.NetMessagingTransportExtensionElement, Microsoft.ServiceBus,  Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="tcpRelayTransport"
                    type="Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="httpRelayTransport"
                    type="Microsoft.ServiceBus.Configuration.HttpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="httpsRelayTransport"
                    type="Microsoft.ServiceBus.Configuration.HttpsRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="onewayRelayTransport"
                    type="Microsoft.ServiceBus.Configuration.RelayedOnewayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="basicHttpRelayBinding"
                    type="Microsoft.ServiceBus.Configuration.BasicHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="webHttpRelayBinding"
                    type="Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="ws2007HttpRelayBinding"
                    type="Microsoft.ServiceBus.Configuration.WS2007HttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="netTcpRelayBinding"
                    type="Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="netOnewayRelayBinding"
                    type="Microsoft.ServiceBus.Configuration.NetOnewayRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="netEventRelayBinding"
                    type="Microsoft.ServiceBus.Configuration.NetEventRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                <add name="netMessagingBinding"
                    type="Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <!-- Service Bus specific app setings for messaging connections -->
        <add key="Microsoft.ServiceBus.ConnectionString"
            value="Endpoint=sb://[your namespace];SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[your secret]"/>

You are all set to import this Bezl within Bezlio and try it out for yourself.

Let us know in the comments below how well this one works for you!

App Technical Summary

  • Application Name:  Time Tracking - Multiple Jobs Selected
  • Compatible Data Sources
    • Epicor ERP 9.05
    • Epicor ERP 10
  • Other Compatible Data Sources
  • Microsoft Excel
  • Infor VISUAL ERP
  • Compatible User Interfaces
  • Desktop or laptop (Windows, Linux or Mac) with web browser
  • iPad or comparable Android tablet with web browser
  • iPhone or comparable Android smart phone with web browser