TL;DR
This learning path teaches ICM consultants migrating from Callidus Commissions (Oracle) to SAP SuccessFactors IM (SAP HANA) the exact patterns for translating database code.
Six deep-dive lessons cover architecture, SQL syntax, hierarchical queries, procedural code, and data types — each with side-by-side code comparisons.
Learn what changes, why it changes, and how to rewrite your code. Difficulty scales from Beginner to Advanced.

Why This Learning Path?

You're moving from Callidus Commissions (Oracle Database backend) to SAP SuccessFactors Incentive Management (SAP HANA Database backend). It's not just a database swap — the architectures are fundamentally different. Row-based storage, cursor-driven procedural code, hierarchical query syntax — all of it changes.

This learning path is built for your team's specific problem: you know Oracle and PL/SQL inside out, but you need to understand exactly how to translate that knowledge to HANA. No fluff. Side-by-side code comparisons, migration patterns, and gotchas that will trip you up.

What You'll Learn

01

Architecture

Row vs columnar storage. Why HANA is faster for analytics. What it means for indexing strategy. Callidus to SAP architecture story.

Beginner · 2000+ words
Read →
02

SQL Syntax Translation

ROWNUM → LIMIT, DUAL → DUMMY, NVL → IFNULL, DECODE → CASE. Every Oracle SQL pattern and its HANA equivalent. Gotchas included.

Beginner · 2000+ words
Read →
03

Hierarchical Queries

CONNECT BY PRIOR → recursive CTE. Complete rewrite guide. START WITH, LEVEL, SYS_CONNECT_BY_PATH — all mapped. Fully worked example.

Intermediate · 2000+ words
Read →
04

Procedural Code

PL/SQL packages → HANA SQL Script. Cursor loops → table variables. BULK COLLECT → set-based operations. Migration checklist.

Intermediate · 2000+ words
Read →
05

Data Types

Complete mapping table. VARCHAR2 → NVARCHAR, DATE → TIMESTAMP gotcha, BOOLEAN workaround. Silent data loss traps and how to avoid them.

Advanced · 2000+ words
Read →

How to Use This Path

  1. Start with lesson 01 (Architecture): Understand why the databases are different before diving into code. 10-minute read.
  2. Jump to what you need: If you're only translating SQL queries, go straight to lesson 02. If you're migrating procedures, hit lesson 04.
  3. Use the comparison tables: Each lesson has side-by-side code blocks. Copy them into your IDE and experiment.
  4. Apply the checklists: At the end of each lesson are migration checklists. Print them or bookmark them for your code reviews.
  5. Reference as you code: Keep lesson 02 (SQL Syntax) and lesson 05 (Data Types) open in a tab. You'll flip back to them constantly.

Who This Is For

  • ICM consultants with Oracle / Callidus Commissions experience, now supporting SAP SuccessFactors IM projects.
  • Database architects planning a migration from Oracle to SAP HANA for ICM workloads.
  • Developers and DBAs translating existing Callidus Commissions SQL and PL/SQL into HANA equivalents.
  • You are NOT the target: if you're new to databases, start with Oracle fundamentals first. This path assumes fluency in Oracle/PL/SQL.

What You Should Know First

  • Oracle SQL and PL/SQL syntax. You've written CONNECT BY queries, cursor loops, or packages before.
  • Basic SQL concepts: joins, aggregations, subqueries, indexes.
  • Callidus Commissions or SAP SuccessFactors IM context is helpful but not required.

The Migration Journey: Callidus → SAP

SAP acquired Callidus Software in 2018. Callidus Commissions (Oracle-based) is being sunset; customers are migrating to SAP SuccessFactors Incentive Management (HANA-based). This creates a specific problem: your Callidus knowledge is deep, but HANA is a different world.

AspectCallidus Commissions (Oracle)SAP SuccessFactors IM (HANA)
DatabaseOracle Database 11g+SAP HANA (in-memory columnar)
Primary use caseTransactional (OLTP)Hybrid (OLTP + analytics)
Query languagePL/SQL (Oracle-specific)HANA SQL Script (SAP-specific)
ProceduresPackages + proceduresProcedures only (no packages)
HierarchiesCONNECT BY PRIOR syntaxRecursive CTEs
Performance tuningIndex strategy criticalColumnar compression, little indexing needed
Batch processingRow-by-row cursor loops commonSet-based operations preferred
📚This is a reference guide, not a Oracle-to-HANA converter. We're teaching you patterns, not building an automated tool. Real migrations require judgment calls: which DATE columns need TIMESTAMP? How do you handle implicit type conversions? These are decision points, not mechanical transformations.

A Note on Terminology

Throughout this path, I use "SAP HANA Database" to mean the underlying database technology (columnar, in-memory). "SAP SuccessFactors Incentive Management" (SFIM) is the application layer. When talking about SQL and procedural code, I'm focused on the database layer.