How to get Ceridian Dayforce clock to also clock in to Epicor

Currently employees are clocking into Ceridian for payroll and then also into epicor so they can clock to jobs.
We would like for them to clock into Ceridian then use and API to do the clock into epicor.

Has anyone done anything like that?

You can go either way with this, but maybe you want them to use Epicor to clock into Ceridian.

Either way, the question of error handling comes into play. I know Epicor has a few hard stops in place for clock-outs and clock-ins and I feel like you would be running into those frequently and having to code for them in the Ceridian integration.

If you started on the Epicor side you could make sure that the clock out action actually took place in Epicor and then send the API call to Ceridian.

I see ceridian has an API too: Integration of software partner program advantage | Ceridian

1 Like

There are plenty of posts on here about people doing clock-ins programmatically.

yeah ive read a few, but most are Epicor to X.
The business wants the payroll clock to be in Ceridian because its controlled by HR.

I am guessing Ceridian has webhooks available in their API, if so you would need to set that up and then point it to an endpoint that would consume the payload related to the webhook action to then perform the clocking in Epicor. This may be possible using an Epicor function as the webhook endpoint but I don’t think so. Typically the endpoint is listening for a post request so you probably need to build a middleman (nodejs and express?) to point the webhook to for processing.

1 Like

“Sounds like a job for Automation Studio”…
Ok… seriously folks… this is the type of thing that Automation studio can help with… I did just look into the platform, and our service provider (Workato.com) does NOT have a connector YET… but that doesn’t mean that Automation studio is out of reach. it can also use the HTTP connector into Ceridian to push the data from Kinetic to Ceridian for the clock-in/clock-out… As @tkoch said, this could also be done with an Epicor Function… but sometimes having Automation Studio as the middleman would make any “programming” and debugging (along with data logging) much easier.
it COUDL be done having Ceridian as the host, and pushing the data into Kinetic, but as someone else pointed out… there are rules about clocking out… for example, if you are still clocked into a job, you would have to clock out of the jobs first. OF COURSE, with Automation Studio, you COULD have it automatically “End Activity” on all jobs first, and then clock out for the day (which is not possible with base Epicor).

2 Likes

Tim, thank you for bringing it up. I didn’t have time to post this advice to look into workato.

@Craig We are both Epicor and Ceridian as well - and I can tell you that after multiple attempts to get support for the Dayforce API - I was left with the statement “We do not support the API from Dayforce, any development with that would be self-supported.”

Dayforce is a product that Ceridian uses, but doesn’t write/maintain. So it’s like us with Epicor sort of…

I agree that @timshuwy’s Automation Studio would be great for this, but Workato currently does not have an endpoint for Dayforce time series data. I plan on working on this later this year, but for now it’s not happening.

Also - we have a script putting our pay period summarized time data in the Dayforce quick-entry format and our payroll person simply logs into Dayforce and pastes it in there. that way she can check totals for hours worked, OT, vacation, etc. before it becomes part of Dayforce.

The other problem you will have it that Dayforce get’s major updates every year (at least) and the import/export specifications change - not always, but we’ve seen two changes in the last year to the HR import spec, but none on the quick-entry spec.

4 Likes

@MikeGross, sounds like you have potential challenges…
One option that Automation Studio opens up is that it you can create a new Automation Studio WEBHOOK… that webhook can have custom parameters (Employee number, Clock in/out flag, Date, Time)… If you can customize Dayforce to send that webhook (one html call), then Automation Studio could do all the rest of the work in Kinetic. You would not need any APIs in Dayforce.

2 Likes

@timshuwy I’ve not seen any API reference material talking about web hooks in Dayforce - but that doesn’t mean it isn’t there. I’ll have to take a peek when I get my Studio license and can get some time to work on it. I suspect that I’ll have to do more than a web hook and actually write an endpoint to their API.

Dayforce tech support is isolated behind Ceridian - and the Ceridian guys are just not working with the API enough o be useful right now. Maybe they will be more help when I get back to it.

you would not need Dayforce to have a webhook, you would simply need to modify dayforce to call a webhook when an employee clocks in/out. The webhook could look something like:

https://www.workato.com/webhooks/rest/x3a47475-5ea9-4a66-bb8b-3c5ae9dd865c/empClocInOut?EmpID=1234&action=ClockIn&Date=08/15/2022&time=08:51

or to clock out:

https://www.workato.com/webhooks/rest/x3a47475-5ea9-4a66-bb8b-3c5ae9dd865c/empClocInOut?EmpID=1234&action=ClockOUT&Date=08/15/2022&time=08:51

This webhook would then trigger Workato to do the “action” and notify Epicor that the employee needs clocked in/out.

2 Likes

@timshuwy Ahh - I see what you mean - I was thinking slightly the other way around, but yes I see what you mean. Thanks :slight_smile: for the perspective update!

So I couldn’t help myself… I went to Dayforce online help/support sites and it looks like there is an ‘External Integrations’ module - BUT - it looks like it is a series of preconfigured items, although they talk about setting up a service using the OpenAPI spec. I cant’ get to the module yet - working on that, so we’ll see what I can find.

2 Likes

No such luck - I got the External Integrations menu option activated but they are indeed pre-established integrations. I suspect they are hard coded to certain events based on their name/function.

I’m going to put a ticket in to Ceridian and see what I can find about creating user-defined integrations.

1 Like

@timshuwy my question is, what happens when there is an error on the epicor side? Does that get logged in automation studio? Does the user see anything?

Automation Studio creates a log entry for EVERY time a recipe runs… and saves it for 30 days. You can look at each failure and see the results, see what the failure is, fix the failure and re-run that event using the same inputs as before if you desire.
You can also add in “on error” conditions so that it automatically does something different (sends email, tries a different way, etc). it is much better than a BPM at handling and tracking what happened. It even has charts and graphs telling you how many times your recipe ran, and how many failures which is really important when integrating things.
For example… here is a chart for the last 30 days. You can see that we have a major failure that happened several weeks ago… I can CLICK on the chart it it tells me the recipe that is failing. Then I can click on that recipe, and i can see the details of each run (image 2 below) I can further look into this and see that the failure was “Can’t call a stopped recipe”… this means that someone stopped a sub-recipe and forgot to turn it back on again. If I wanted to, i could restart the other recipe, and come back into this log, and re-run each of the failed recipes and they would then run with the data that was originally sent.

2 Likes

Here is how the error handling looks in a recipe… you can have it “monitor” a section of code for an error, and then do something different if it finds one. (this example is empty… just showing the structure).

2 Likes

I really appreciate you showing me this Tim, this helps.

1 Like

I found out from Ceridian that we can do a Get Raw punches at a limit of 100 requests an hour. So not quite real time but might work for what we are doing.

2 Likes

My agency does this although we do the exact opposite. To us it makes more sense to have these employees clock in via Epicor MES and pull it to Dayforce.

We are rather complicated in the reporting we need to pull into Dayforce because of the type of company we are (special state reporting guidelines).

I’ll be brief on the details unless you ask for more, but the gist is this:

We have two sets of imports. The first is a RawPunchImport which is made of a 4 level query in Epicor which pulls the raw data of the employee’s in, lunches and out (from LaborHed mostly). This initially processes into Dayforce as the WRK pay code.

We then do a second import bringing in much more information (mostly from LaborDtl). We have multiple manufacturing cost centers so we do a Pay Adjustment import bringing in the cost center that particular Epicor job belonged to and the employee’s job code (which in the BAQ map into the Dayforce work assignment reference code) and the part number (mapping to the docket field in Dayforce). Once these pay adjustments come in, it flips the raw punches to an unpaid code and the employee is paid from the pay adjustments.

2 Likes