Setting Up BSW Time And Attendance Without Losing Your Mind
I spent three days trying to get a proper union grievance report out of BSW once. The system showed every clock-in and clock-out like it was supposed to, but when I pulled the audit log for a single employee across a twelve-week period, it came back with missing punch records that the summary screen had simply smoothed over. The summary view uses pre-calculated aggregates by default, which means if someone's terminal went offline for forty minutes during a shift, the report will show an uninterrupted eight-hour day. This happened at a distribution center I was consulting for. Their HR team had been approving payroll based on those clean-looking summaries for months. The fix was running a raw transaction-level query instead of relying on the pre-built report templates, which most administrators don't even know exist under the advanced settings menu. Most people treat time and attendance software like a glorified spreadsheet that happens to have fingerprint scanners bolted to it. That's not what it is, and approaching it that way will quietly cost you hundreds of hours a year in manual correction work. The actual value shows up in how the system handles edge cases before they become payroll disasters. BSW's architecture separates real-time clock data from the calculated pay runs, which sounds obvious but most platforms don't do this cleanly. When configured properly, the real-time clock feeds feed into an engine that applies your state labor laws, collective bargaining agreements, and company policies before anything touches the payroll export. The bottleneck is usually the configuration step, not the software itself. I've seen teams skip the policy engine setup entirely because the default templates looked close enough. Don't do this. The defaults assume standard exempt and non-exempt classifications with no overtime thresholds and no split-shift rules. If your workforce includes any hourly employees who work two separate shifts in one day, the out-of-the-box configuration will merge them into a single shift and wipe out your split-shift differential pay. I ran into this at a healthcare client where nurses regularly worked six a.m. to two p.m. and then came back for an optional two-hour evening shift. The default BSW setup calculated zero overtime for them because the system saw two normal seven-hour shifts. I had to enable the multi-shift aggregation logic in the schedule policy settings and define the lookback window as zero hours between shifts. Once that was in place, the system properly combined the hours and applied overtime correctly. Took about twenty minutes to configure once you knew where to look.
The Integration Layer Is Where Things Break
BSW doesn't live in isolation. It needs to push data to your payroll provider, pull schedule information from your scheduling tool, and often interface with physical access control hardware. Each of these connections has its own failure mode. The most common one I encounter is the API polling interval being set too aggressively. By default, BSW polls connected systems every fifteen minutes. For a small team this is fine. When you're pushing timesheets to ADP or UKG for a workforce of over five hundred people, those fifteen-minute intervals create a backpressure issue that causes missed syncs during peak hours. I changed the polling cadence to thirty minutes for payroll exports and set up alerting on failed sync attempts. This reduced our monthly reconciliation work from about six hours down to roughly forty-five minutes. Another thing nobody mentions until it's too late: the backup and restore workflow for BSW is not instantaneous. A full database restore for a mid-size deployment with eighteen months of historical data and all uploaded time cards can take somewhere between two and four hours depending on your infrastructure. I learned this the hard way when a failed Windows update corrupted our SQL database and I had to restore from a backup taken twelve hours prior. Twelve hours meant missing three days of real-time clock data from our remote site. The workaround is maintaining a daily exported backup of the time card data in CSV format alongside the full database backup. The CSV export takes under five minutes and gives you a safety net for the most recent records even if the database restore falls short.
What The Reporting Module Actually Does Well
The reporting side of BSW gets unfairly criticized because the default dashboards are generic. But the custom report builder is genuinely capable if you use it. I built a report that tracks unscheduled overtime by department and cross-references it with the approved request logs. The key is joining the timesheet transaction table to the leave and approval table on employee ID and date range. Without that join, you're just looking at hours worked with no context about whether they were authorized or not. The report takes about forty seconds to run on a dataset of roughly two hundred thousand transaction records. That's fast enough to run weekly without disrupting anyone's workflow. There's also the earned wage access feature that some clients enable. It lets employees request a portion of their accrued but not yet paid wages between pay periods. The configuration requires linking to a third-party provider, and the integration adds a small per-transaction fee. I've watched two companies cancel this feature after three months because the usage rate was under four percent of the workforce. It's not a waste of money per se, but it does add complexity to the monthly reconciliation process. If fewer than ten percent of your employees use it, you're better off skipping it and letting them handle short-term cash flow needs through other means.
Get the Full Details

Configuration Mistakes That Cost Money
The timezone handling in BSW deserves more attention than it gets. When you have employees working across multiple time zones, the system stores all clock events in UTC internally but displays them in the local timezone of the viewer. This is correct behavior, but the import wizard for legacy time data defaults to treating uploaded timestamps as local time for the server's timezone. I imported a month of historical clock data for a facility in Arizona into a server configured for Eastern time and spent a week reconciling three-hour discrepancies. The fix was setting the import timezone explicitly to the facility's local timezone before running the bulk upload. Always verify the import timezone setting before you push any historical data into the system. Another subtle issue: the auto-rounding feature. BSW will automatically round clock-in and clock-out times to the nearest increment you configure, usually fifteen or thirty minutes. This is convenient until an employee clocks in at 8:53 and gets rounded to 9:00, then clocks out at 5:07 and gets rounded to 5:00. They lose four minutes of pay on a single day. Over a year that compounds. Some states have specific regulations about rounding that require employer-favorable rounding only up to a certain threshold. Check your state's rules before enabling auto-rounding. I've seen California-based employers get audited because their rounding practice consistently rounded down clock-out times but up clock-in times, creating a systematic shortfall.
Practical Maintenance Routines
Running a weekly audit of unmatched time cards takes about ten minutes and prevents most end-of-payroll emergencies. An unmatched card is one where an employee has a scheduled shift but no corresponding clock-in or clock-out record. BSW flags these in the exceptions queue, but the queue gets cluttered quickly if you're not cleaning it out. I set a rule where any unmatched card older than two pay periods gets escalated to the employee's manager for manual correction. This keeps the queue from becoming a graveyard of stale data. The system also generates a database maintenance log that tracks index fragmentation and query performance over time. I check this monthly and rebuild indexes when fragmentation exceeds twenty percent. On our setup this takes about twenty minutes and improves report load times noticeably. The automatic maintenance job runs nightly by default, but the thresholds are conservative. Adjusting them to your actual usage pattern prevents unnecessary system strain during business hours. BSW is functional but it requires deliberate configuration to avoid silent data errors. The platform does the heavy lifting once the policies are set correctly, but the initial setup phase demands attention to detail that most administrators underestimate. Start with a clean policy configuration, verify your timezone settings, and run a test payroll before connecting it to your actual pay cycle. The extra day of validation work saves roughly three to five hours per payroll period in the long run.