Roadmap for OIM Developer

Oracle Identity Manager (OIM) Learning Roadmap: From Computing Basics to OIM Development

This guide is structured to help individuals with no prior knowledge of Oracle Identity Manager (OIM) gradually build their expertise. The learning path is divided into four major phases, starting with basic computing concepts, advancing to Java programming, followed by OIM fundamentals, and finally diving into OIM development.


Phase 0: Why We’re Learning Programming

  1. What is Programming?
    • Definition
    • Real-world analogy
  2. Why Do We Need Programming?
    • Automation of tasks
    • Solving real-world problems
    • Creating software and applications
    • Customization and control
  3. Why Use Programming Languages?
    • Translating human ideas into computer instructions
    • Making development efficient and manageable
    • Specificity and specialization of languages
  4. The Impact of Learning Programming
    • Demand in the job market
    • Improving problem-solving skills
    • Fostering creativity
  5. Where We Use Programming in Daily Life
    • Everyday technology
    • Online services
    • Smart devices

Phase 1: Computer Fundamentals

  1. Understanding a Computer

    • Definition: An electronic device that processes data to perform tasks.
    • Components:
      • Hardware: Physical parts (CPU, RAM, storage devices).
      • Software: Programs that instruct hardware what to do.
  2. Fundamental Computer Concepts

    • Binary (0s and 1s): The basic language of computers.
    • Processor (CPU): The computer's brain that executes instructions.
    • Memory:
      • RAM (Random Access Memory): Temporary memory for active data.
      • ROM (Read-Only Memory): Permanent storage for essential startup information.
  3. Storage Basics

    • Files: Collections of data (documents, images, etc.).
    • File Extensions: Suffixes that indicate file types (e.g., .txt, .jpg).
  4. .exe Files

    • Definition: Executable files that run programs on Windows.
    • Function: When opened, they load and execute instructions in RAM.
    • Security Note: Be cautious with .exe files from unknown sources.
  5. Software Types

    • System Software: Manages hardware and resources (e.g., operating systems).
    • Application Software: Programs for specific tasks (e.g., word processors, games).
  6. Programs vs. Processes

    • Program: A set of instructions stored on disk (e.g., an .exe file).
    • Process: A program actively running in memory.

Phase 2: Introduction to Programming

  1. What is Programming?

    • Programming is the process of writing instructions for a computer to perform tasks.
  2. Basic Programming Concepts

    • Variables: Named storage locations for data (e.g., numbers, text).
    • Data Types: Types of data (e.g., integer, string, boolean).
    • Operators: Used to perform calculations and comparisons.
    • Control Structures:
      • Conditionals (if, else): Make decisions.
      • Loops (for, while): Repeat actions.
  3. Functions/Methods: Blocks of code that perform specific tasks, reusable in programs.


Phase 2: Java Programming (Basic to Advanced)

OIM is built on Java, so understanding Java concepts is crucial for developing and customizing OIM. Below is a structured path to learn Java, starting from basics and advancing to the level required for OIM development.

2.1 Java Fundamentals

  1. Setting up Java Environment:

    • Install JDK (Java Development Kit).
    • Set up your Integrated Development Environment (IDE) such as IntelliJ IDEA or Eclipse.
  2. Basic Java Concepts:

    • Variables and Data Types: int, float, char, boolean, String.
    • Operators: Arithmetic, comparison, logical operators.
    • Control Flow: if-else, switch-case, loops (for, while, do-while).
  3. Object-Oriented Programming (OOP) Concepts:

    • Classes and Objects: Blueprint of an object, creating instances.
    • Methods: Defining and calling methods (functions in Java).
    • Encapsulation: Data hiding using private variables and public getters/setters.
    • Inheritance: Allowing a class to inherit properties from another class.
    • Polymorphism: Method overloading and overriding.
    • Abstraction: Abstract classes and interfaces to define the structure without implementation.
    • Constructors: Special methods used to initialize objects.
  4. Collections Framework:

    • ArrayList, LinkedList, HashMap, HashSet: Understand the basic data structures available in Java.
    • Iterating through collections using loops and iterators.
  5. Exception Handling:

    • Try-Catch-Finally: Handling errors in your code.
    • Checked vs Unchecked Exceptions: Understand the difference and when to use each.
    • Custom Exceptions: Creating your own exceptions.
  6. Java I/O:

    • Reading/Writing Files: InputStream, OutputStream, Reader, Writer.
    • Working with XML and JSON: Parsing and generating XML/JSON.

2.2 Advanced Java Concepts

  1. Multithreading:

    • Thread class and Runnable interface: Understand how Java handles parallel tasks.
    • Synchronization: Managing shared resources between threads.
    • Executor Framework: Using thread pools for task management.
  2. Java 8 Features:

    • Lambda Expressions: Functional programming in Java.
    • Streams API: Processing collections of objects.
    • Functional Interfaces: Predicate, Consumer, Supplier.
  3. JDBC (Java Database Connectivity):

    • Connecting to databases from Java.
    • Executing SQL queries, handling results.
  4. RESTful Web Services:

    • Using JAX-RS to develop and consume REST APIs.
    • Handling HTTP requests/responses.

Phase 3: OIM Fundamentals

Once you have a good grasp of Java, you can move on to learning Oracle Identity Manager basics.

3.1 What is Oracle Identity Manager (OIM)?

3.2 Core Concepts in OIM

  1. Provisioning and De-provisioning:

    • Provisioning: Assigning user access and accounts to resources like databases or applications.
    • De-provisioning: Removing access when it's no longer needed.
  2. Role-Based Access Control (RBAC):

    • Roles: Groups that define access privileges for users.
    • Entitlements: Specific permissions assigned to a role.
  3. User Lifecycle Management:

    • Managing user accounts from creation, modification, and deactivation.
  4. Connectors:

    • OIM uses connectors to communicate with external systems (e.g., Active Directory, databases).
    • Pre-built connectors: OIM comes with ready connectors for common systems like LDAP, Salesforce, etc.
    • Custom connectors: Developers can create connectors for non-standard systems.
  5. Reconciliation:

    • Synchronizing data between OIM and external systems.
    • Trusted Reconciliation: Data flows from the trusted system (e.g., HR system) to OIM.
    • Target Reconciliation: Data flows from OIM to the target system.

3.3 OIM Architecture

  1. OIM Server: The central server that manages identity management tasks.
  2. Database: Stores user data, configurations, and audit logs.
  3. WebLogic Server: Application server used to run OIM.
  4. OIM Design Console: A client application used by developers to configure and manage OIM workflows, rules, and forms.

Phase 4: OIM Development

With Java knowledge and a good understanding of OIM concepts, you can now move on to OIM development. This phase focuses on customization, extending OIM functionalities, and developing custom connectors.

4.1 OIM Customization

  1. OIM API (Java API):

    • User Management: Creating, updating, and managing user data through API.
    • Provisioning Management: Automating provisioning and de-provisioning tasks using API calls.
    • Role Management: Managing roles and entitlements using the API.
  2. Event Handlers:

    • Java classes that listen to events (e.g., user creation, modification) and perform actions based on these events.
    • Types of Event Handlers: Pre-process, post-process, and conditional event handlers.
    • Use cases: Automatically adding entitlements when a user is created.
  3. Custom Adapters:

    • Code that automates certain actions in OIM, such as pre-populating fields or assigning tasks.
  4. UI Customization:

    • Customizing the OIM web interface using the Oracle Identity Self Service Console.
    • Adding custom fields, modifying forms, and changing approval workflows.

4.2 Developing Custom Connectors

  1. Introduction to OIM Connectors:

    • Custom connectors allow OIM to communicate with external systems that don’t have out-of-the-box support.
  2. Creating Custom Connectors:

    • Develop Java-based connectors for integrating with non-standard systems.
    • Use the Connector Framework for building, testing, and deploying these connectors.

4.3 SOA (Service-Oriented Architecture) Integrations

4.4 Debugging and Troubleshooting in OIM

4.5 Deployment Best Practices

  1. Testing in Sandbox: Deploy and test customizations in a sandbox environment before moving to production.
  2. Moving to Production: Steps for safely deploying custom connectors, adapters, and other customizations to the live system.