These instructions explain how to set up communication between Apex Software and S900 proximity terminals. They are written for system administrators who are familiar with installing windows services and reviewing event logs.
If you have any questions then call (317) 225-4415 or email tsupport@iHRsoftware.com.
Open Apex Terminal Manager (Start > Program Files > Apex > Terminal Manager). After you log on to the database, right-click the white frame on the left and either add a terminal or edit the existing terminal to match the IP settings that you used in step 2. When prompted, use port 4370.
Right-click the frame again and click Synchronize > All Db Employees with All Terminal Users. After the command completes, right-click the terminal and click List Users. You should now see all of your employees listed as users on the terminal.
In Terminal Manager, right-click the frame on the right and then click Service Settings. Review the settings. Make sure that the synchronization service is enabled. The settings control how often swipes are moved from the terminal to the Db, how often newly-entered (or modified) employees are synchronized with the terminal, and how often all of the employees are forcibly synchronized. The terminal is unresponsive when it is communicating with the service, so the fingerprints should not be synchronized more often than once every five minutes. Likewise, synchronizing the entire employee list ties up the terminal for about two minutes, so you will probably not want to schedule that operation more frequently than once a day -- in the middle of the night.
Next point the service to the Db. In Windows Explorer, open the folder C:\Program Files\Apex\Apex Time Terminal Service. Open the file apexTerminalServices.xml. You will probably need to right-click the file and choose to open it with notepad, otherwise Internet Explorer will open a read-only copy.
In the file, edit the value for the connectionString setting. Enter the server/instance name beside "Data Source" and the database name (which is usually iHR) beside "Database". Example values are shown below. Note that the values can specify Windows Authentication or SQL Authentication. Apex recommends using Windows Authentication if the service will run on the same server as the database. Otherwise, create a SQL login and use SQL Authentication. (Open the Apex Client, click Company > Security, create the login, enroll it in db_owner or go to its permissions tab and select "RWCD" by "Terminals".)
-- Connect to the local server on the default instance. Use the service's Windows credentials to log in.
<connectionString value="Data Source=.;Trusted_Connection=Yes;Database=iHR" />
-- Connect to the local server on the SQLExpress instance. Use the service's Windows credentials to log in.
<connectionString value="Data Source=.\SQLExpress;Trusted_Connection=Yes;Database=iHR" />
-- Connect to a remote server on the default instance. Use the SQL login "daemon" to log in.
<connectionString value="Data Source=Server1;Database=iHR;User ID=daemon;Password=colts2008" />
-- Connect to a remote server on the IHR instance. Use the service's Windows credentials to log in.
<connectionString value="Data Source=Server1\IHR;Trusted_Connection=Yes;Database=iHR" />
Open Service Manager and start the Apex Terminal Polling Service. Insure that the service is set to start automaticly instead of manually. Open the application event log and check for messages and errors. The most common initial error message indicates connection problems. If you see a database connection error then double-check your connection string in the xml file.
If you set the connection string to use Windows Authentication then the Windows account that runs the service must be granted access to the database, and must be granted execute permission on the stored procedure dbo.spTerminalPunch. By default, the Windows account that the service uses is LocalSystem which should have full permissions on all local databases. If the event log shows permission errors then choose one of three actions:
Correct any connection errors by editing the xml file, changing database permissions, and/or reassigning the account that the service uses. Restart the service with each change. Upon success, you will see an informational entry in the event log.
If you see an error in the server's event log like the one below then verify that your server's firewall is not blocking the port (4370). While troubleshooting, you should temporarily turn off the firewall altogether. Next make sure that the terminal's IP is unique on your network. Then ping the terminal's IP from your server's command line. If ping fails then you most likely have a bad Ethernet chord or bad net mask setting on the terminal. If ping succeeds then go to the terminal and use the menu to open the TCP/IP communication settings. Set the connection speed to 10Mbs. Make sure that the password on the terminal matches the password in the software. Save the settings. Turn the terminal off and back on. Restart the Apex Terminal Polling service from Service Manager and check the event log again. If ping succeeds and the issue is not resolved then contact support.
If the event log does not show an error, and you do not see a punch in Apex Software then open Apex Software, click Timecards > Terminals, and confirm that the port numbers are all set to 4370. Confirm that the employee # entered in Apex matches the enrollment number entered in the terminal.
Note that, by default, the service will poll the terminal when it first starts and then again every 5 minutes. So if you change the port numbers then it may take 5 minutes to see the punch. You can increase the polling frequency in Timecards > Terminals. When the service is polling a terminal, the terminal briefly displays a busy message and cannot accept a swipe.