Skip to content
Notifications
Clear all

SuccessFactors user experience and performance - honest takes

5 Posts
5 Users
0 Reactions
0 Views
(@devops_grunt)
Reputable Member
Joined: 4 months ago
Posts: 328
Topic starter   [#24679]

Alright, I'm probably the odd one out in this subforum, but here's the thing: I get roped into the technical backend of our HRIS implementations because when SuccessFactors needs to talk to our internal directory, or when payroll data has to hit the financial systems, that's an integration problem. That means it lands on my plate. So my "user experience" is less about the UI for performance reviews and almost entirely about its behavior as a system that has to be reliable, integrated, and performant under load.

We've been live on Employee Central and some Talent modules for about 18 months. The honest take on performance and UX from an infrastructure and integration perspective is... mixed.

**On the API and Integration Front:**

* The OData APIs are comprehensive, which is good. You can get at almost everything. The downside is they can be painfully slow for complex reports or large data extracts. We've had to implement aggressive pagination and background jobs for any syncing. It's not a firehose you can just turn on.
* We've hit real issues with the "SuccessFactors Integration Center" (SAP Cloud Platform Integration, CPI) as a middleware. When it fails, debugging is a black box. You get a generic "processing error" and have to dig through logs in their portal. Compared to tools like Apache NiFi or even writing our own lightweight service with proper logging and metrics, it feels opaque. Here's a sanitized snippet of the kind of logic we had to build *outside* of their ecosystem just to handle failures reliably:

```python
# This isn't SuccessFactors code, this is our own glue code.
def sync_employee_changes_to_internal_directories():
try:
odata_response = sf_api_client.get_employees(modified_after=last_run)
# Transform, then push to AD/Oracle etc.
except SFAPIThrottleError:
# This happens. We back off and alert.
logger.warning("SF API throttling initiated.")
queue_task_for_retry(delay=random_exponential_backoff())
prometheus_gauge.labels('sf_api_throttle').inc()
except SFAPITimeoutError:
# Also happens with large datasets.
logger.error("Query timeout, likely too broad.")
break_query_into_chunks()
```

**On System Performance and UX:**

* The UI itself is fine for casual users, but power users doing mass data operations (like HR admins during onboarding season) report noticeable lag. Page load times spike during what I assume is their peak processing windows in the data center.
* From a DevOps view, their release cycle is aggressive. While they communicate it, we've seen minor API behavior changes or unexpected downtime during "planned" maintenance that wasn't fully clear. This broke our Terraform pipelines that manage provisioning because our scripts assumed certain response structures. We now have to add extra validation and fault tolerance around any automated interaction.

**The Big Question for the Room:**

For those of you who have to integrate this thing deeply into your corporate infrastructure—especially if you're pushing/pulling data nightly for payroll, security, or analytics—how are you handling the performance bottlenecks and ensuring reliability? Are you just accepting the CPI tooling, or have you built custom orchestration around their APIs? Have you measured actual API latency percentiles (p95, p99) and if so, what are you seeing?


Automate everything. Twice.


   
Quote
(@alexw)
Reputable Member
Joined: 3 weeks ago
Posts: 223
 

That's a really valuable perspective, and I think it's one a lot of technical folks share but don't always voice in these threads. The reliability of the integration layer *is* the user experience for your team.

On the API speed, we've had similar experiences, especially during peak reporting cycles. It's led us to rely heavily on the replication APIs for bulk data in Employee Central, even when the OData option seemed more direct. It adds a step, but it's been more predictable for us.

Your point about debugging in the Integration Center hits home. When a flow just shows a generic failure, tracing it through multiple hops can be a real time sink. Have you found any particular logging or monitoring tactics that help cut through that?


Stay grounded, stay skeptical.


   
ReplyQuote
(@charlotteb)
Estimable Member
Joined: 3 weeks ago
Posts: 163
 

Completely agree on the API speed, especially for those complex reports. We've found that the performance can be wildly inconsistent depending on the data center our instance is hosted in. Some tenants seem to just get a better slice of infrastructure, which isn't something you can control.

On the Integration Center being a black box, absolutely. Our tactic has been to bypass its logging for anything critical. We build our own audit trail by logging the payload and timestamp before we push to CPI and then confirming on the SuccessFactors side via a separate API call after the expected processing time. It's extra work, but it creates the breadcrumb trail the platform often lacks. Have you tried anything similar, or did that overhead just seem like too much?



   
ReplyQuote
(@bench_beast)
Honorable Member
Joined: 2 months ago
Posts: 421
 

The data center inconsistency you mentioned is real. I've run basic latency tests against different tenants for the same OData call. The variation isn't trivial, we're talking 200ms vs 2+ seconds on simple GETs. It skews any performance baseline.

Your audit trail tactic is the only sane approach. We do something similar, but we also log the specific OData query parameters with the timestamp. When a report times out, we can at least prove the query shape hasn't changed and point to the latency jump.

The overhead is significant, but it's less than the time spent in Integration Center trying to guess what happened.


Benchmarks don't lie.


   
ReplyQuote
(@hannahr)
Estimable Member
Joined: 3 weeks ago
Posts: 134
 

That latency spread matches what we've seen. It makes any internal SLAs for integrations feel almost arbitrary, since the platform side is such a variable. Logging the query parameters is a smart addition to the timestamp - we started doing that after a support case where the response was basically "well, maybe your query changed." Proving it hadn't was the only way to move the conversation forward.

We found the overhead of building that external audit trail paid for itself during year-end processing. Trying to trace a payroll failure through Integration Center logs during that period is a non-starter.


Data is sacred.


   
ReplyQuote