{"id":921,"date":"2026-04-17T03:38:00","date_gmt":"2026-04-17T03:38:00","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/oracle-cloud-integration-generation-2-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-integration\/"},"modified":"2026-04-17T03:38:00","modified_gmt":"2026-04-17T03:38:00","slug":"oracle-cloud-integration-generation-2-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-integration","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/oracle-cloud-integration-generation-2-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-integration\/","title":{"rendered":"Oracle Cloud Integration Generation 2 Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for Integration"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>Integration<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p>Oracle Cloud <strong>Integration Generation 2<\/strong> is Oracle\u2019s managed Integration Platform as a Service (iPaaS) for building, running, and operating integrations between SaaS applications, on-premises systems, and custom services\u2014without needing to manage servers, middleware runtimes, or scaling manually.<\/p>\n\n\n\n<p>In simple terms: you provision an <strong>Oracle Integration Generation 2<\/strong> instance in Oracle Cloud, then use a browser-based designer to connect systems (ERP, HCM, databases, REST APIs, files), map and transform data, orchestrate flows, and monitor message processing end-to-end.<\/p>\n\n\n\n<p>Technically, Integration Generation 2 provides a managed runtime for <strong>integration flows<\/strong> (often called \u201cintegrations\u201d), plus a catalog of <strong>adapters\/connectors<\/strong>, <strong>data mapping<\/strong>, <strong>orchestration<\/strong>, <strong>scheduling<\/strong>, <strong>error handling<\/strong>, and <strong>tracking\/monitoring<\/strong>. It is designed for enterprise integration patterns such as request\/response APIs, event-like flows, file exchanges, and application-to-application synchronization.<\/p>\n\n\n\n<p>The problem it solves: most organizations struggle with <strong>spaghetti integrations<\/strong> (custom scripts, point-to-point APIs, brittle ETL jobs). Integration Generation 2 centralizes connectivity, governance, observability, and change management so teams can integrate faster with better reliability and security.<\/p>\n\n\n\n<blockquote>\n<p>Naming note (important): Oracle\u2019s product is commonly referred to as <strong>Oracle Integration<\/strong>. In the Oracle Cloud Console, you provision an <strong>Oracle Integration<\/strong> instance and select the <strong>Generation 2<\/strong> platform (OCI-native). If you encounter \u201cClassic\u201d in older documentation, that refers to earlier generations; treat that as legacy and <strong>verify in official docs<\/strong> for migration guidance.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is Integration Generation 2?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Official purpose<\/h3>\n\n\n\n<p>Integration Generation 2 in Oracle Cloud is an OCI-native managed integration service used to:\n&#8211; Connect applications and data sources using built-in adapters\n&#8211; Orchestrate multi-step business and data flows\n&#8211; Expose and consume APIs (commonly via REST)\n&#8211; Transform data between different schemas\/formats\n&#8211; Monitor, retry, and govern integration executions<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Core capabilities (what you can do)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build <strong>app-driven<\/strong> integrations (API-triggered, request\/response)<\/li>\n<li>Build <strong>scheduled<\/strong> integrations (polling, batch sync, timed jobs)<\/li>\n<li>Use <strong>adapters<\/strong> for common systems (Oracle and non-Oracle) and generic protocols (REST\/SOAP\/FTP\/DB)<br\/>\n<em>Adapter availability varies by service entitlement and region\u2014verify in official docs and your instance\u2019s adapter catalog.<\/em><\/li>\n<li>Define <strong>connections<\/strong> with credentials and endpoints<\/li>\n<li>Map data with a visual <strong>mapper<\/strong> and support common transformations<\/li>\n<li>Track messages with <strong>monitoring dashboards<\/strong>, audit\/tracking views, and error handling<\/li>\n<li>Use <strong>agents<\/strong> for private connectivity to on-premises networks (where applicable)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Major components (conceptual model)<\/h3>\n\n\n\n<p>While exact UI terms can evolve, Integration Generation 2 commonly includes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Integration instance<\/strong>: the provisioned service runtime in an OCI region and compartment.<\/li>\n<li><strong>Connections<\/strong>: reusable endpoint + credential definitions (for example, \u201cSalesforce Connection\u201d, \u201cREST API Connection\u201d, \u201cATP Connection\u201d).<\/li>\n<li><strong>Integrations<\/strong>: the flows you design and run (trigger, actions, mappings, control structures).<\/li>\n<li><strong>Adapters<\/strong>: connector technology used by connections to talk to systems.<\/li>\n<li><strong>Lookups<\/strong>: mapping tables used for value translation (for example, \u201cUS\u201d \u2192 \u201cUnited States\u201d).<\/li>\n<li><strong>Monitoring \/ Tracking<\/strong>: message-level observability (instances, payloads, errors).<\/li>\n<li><strong>Agents (optional)<\/strong>: runtime components deployed in your network for accessing private resources without exposing them publicly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Service type and scope<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Service type<\/strong>: Managed cloud service (iPaaS) running as a provisioned instance.<\/li>\n<li><strong>Scope<\/strong>: An Integration Generation 2 instance is typically:<\/li>\n<li><strong>Regional<\/strong> (deployed into a specific OCI region)<\/li>\n<li><strong>Compartment-scoped<\/strong> for governance, access control, and cost management in OCI<\/li>\n<li>Exposed via a <strong>service endpoint<\/strong> (public or private, depending on configuration\u2014verify options in your region)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How it fits into the Oracle Cloud ecosystem<\/h3>\n\n\n\n<p>Integration Generation 2 sits in the Integration category and commonly integrates with:\n&#8211; <strong>OCI IAM<\/strong> for authentication\/authorization (tenancy users, groups, policies)\n&#8211; <strong>OCI Networking<\/strong> (VCNs, subnets, security lists\/NSGs) when using private access patterns\n&#8211; <strong>OCI Observability<\/strong> components (logging\/metrics integration may exist depending on service features\u2014verify in official docs)\n&#8211; <strong>Oracle SaaS<\/strong> (ERP Cloud, HCM Cloud, SCM Cloud, CX) as first-class integration targets\n&#8211; On-premises Oracle and non-Oracle systems via agents and standard protocols<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use Integration Generation 2?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Faster integrations<\/strong>: reduce custom code and one-off scripts by using a standardized platform.<\/li>\n<li><strong>Lower integration risk<\/strong>: consistent patterns for retries, error handling, tracking, and change management.<\/li>\n<li><strong>Better time-to-value<\/strong>: prebuilt adapters and templates can accelerate SaaS-to-SaaS and SaaS-to-on-prem projects.<\/li>\n<li><strong>Central governance<\/strong>: fewer \u201cshadow integrations\u201d created by individual teams.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Adapter-driven connectivity<\/strong> reduces boilerplate auth, pagination handling, and protocol specifics.<\/li>\n<li><strong>Visual orchestration<\/strong> helps teams implement multi-step flows (enrich, validate, transform, route).<\/li>\n<li><strong>Schema-aware mapping<\/strong> reduces data transformation errors and supports evolvable integration contracts.<\/li>\n<li><strong>API exposure<\/strong> for internal consumption (app teams can consume an integration endpoint rather than integrate with multiple backends).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Built-in monitoring<\/strong> for message instances, errors, and throughput.<\/li>\n<li><strong>Managed runtime<\/strong>: patching and platform maintenance are handled by Oracle (within the service\u2019s managed responsibility model).<\/li>\n<li><strong>Environment separation<\/strong>: dev\/test\/prod can be separated by compartments and separate instances.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Centralized <strong>credential management<\/strong> (within the platform), plus OCI IAM governance.<\/li>\n<li>Options for <strong>private network access<\/strong> to reduce public exposure (verify private endpoint capabilities in your region).<\/li>\n<li>Auditability via built-in tracking and OCI-level audit for resource changes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Designed for enterprise integration throughput with managed scaling characteristics (exact scaling behavior and limits are SKU\/edition-dependent\u2014verify in official docs).<\/li>\n<li>Supports parallelism patterns (for example, multiple integration instances for isolation, or different integration designs to manage concurrency).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose it<\/h3>\n\n\n\n<p>Choose Integration Generation 2 when you need:\n&#8211; SaaS-to-SaaS or SaaS-to-on-prem integration with governance and tracking\n&#8211; A standardized iPaaS instead of maintaining custom integration codebases\n&#8211; Fast delivery of data sync, orchestration, and API mediation\n&#8211; Integration operations visibility (tracking, retries, error analysis)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should not choose it<\/h3>\n\n\n\n<p>It may not be the best fit when:\n&#8211; You need <strong>ultra-low latency<\/strong> stream processing with complex event-time semantics (consider streaming-native solutions)\n&#8211; You require <strong>full custom runtime control<\/strong> and prefer code-only integration (consider self-managed frameworks)\n&#8211; You are primarily solving bulk ETL\/ELT analytics pipelines (consider data integration\/ETL tools)\n&#8211; Your use case is primarily <strong>database replication<\/strong> (consider replication tools; verify Oracle offerings like GoldenGate for that specific requirement)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is Integration Generation 2 used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Finance and insurance (customer onboarding, payment status updates, KYC workflow integrations)<\/li>\n<li>Healthcare (claims, eligibility checks, EHR system integration\u2014ensure compliance requirements are met)<\/li>\n<li>Retail and e-commerce (orders, inventory, fulfillment updates)<\/li>\n<li>Manufacturing (supply chain integration, EDI-like exchanges via B2B capabilities if enabled)<\/li>\n<li>Public sector (case systems, citizen services portals, secure data exchange)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Integration\/Center-of-Excellence (CoE) teams standardizing patterns<\/li>\n<li>Platform engineering teams providing integration as a shared service<\/li>\n<li>Application teams building APIs and syncing SaaS data<\/li>\n<li>DevOps\/SRE teams operating integration runtimes with monitoring and incident response<\/li>\n<li>Security teams establishing guardrails and private connectivity<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads and architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Hub-and-spoke integration: Integration Generation 2 as a central integration hub<\/li>\n<li>API mediation: consolidating backend calls and exposing a single REST endpoint<\/li>\n<li>Data synchronization: scheduled syncing between CRM and ERP<\/li>\n<li>File-based integration: ingest\/export via SFTP\/FTP patterns (capabilities depend on configuration and adapters)<\/li>\n<li>Hybrid integration: on-prem systems accessed through an agent rather than inbound firewall openings<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Production<\/strong>: strict change management, private endpoints, compartment isolation, least-privilege policies, monitoring\/alerting, and DR strategy aligned to service capabilities.<\/li>\n<li><strong>Dev\/Test<\/strong>: smaller instances, public endpoints for quick iteration (with caution), limited credentials, and short retention.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic scenarios where Integration Generation 2 is commonly applied.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) ERP \u2194 CRM customer sync<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Customer accounts exist in both ERP and CRM with mismatched identifiers.<\/li>\n<li><strong>Why this fits<\/strong>: Adapters + mapping + scheduled orchestration provide repeatable sync with tracking.<\/li>\n<li><strong>Scenario<\/strong>: Nightly job pulls CRM updates, transforms fields, upserts into ERP, and logs exceptions.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Expose a unified \u201cCustomer 360\u201d API<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Frontend apps need customer data from multiple systems.<\/li>\n<li><strong>Why this fits<\/strong>: App-driven integration can orchestrate calls, aggregate data, and return one response.<\/li>\n<li><strong>Scenario<\/strong>: REST endpoint calls CRM + billing API, merges payload, returns a consolidated JSON object.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Order-to-cash status notifications<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Customers need real-time-ish order status updates from ERP and shipping providers.<\/li>\n<li><strong>Why this fits<\/strong>: Integration can consume status events or poll, enrich, and push notifications.<\/li>\n<li><strong>Scenario<\/strong>: Scheduled integration checks shipment updates and posts status to a customer portal API.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) On-prem database to SaaS integration (hybrid)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: SaaS apps require reference data stored in an on-prem database.<\/li>\n<li><strong>Why this fits<\/strong>: Connectivity agent enables secure access to private endpoints; mapping handles schema differences.<\/li>\n<li><strong>Scenario<\/strong>: Sales territories stored on-prem are synced to a SaaS CRM weekly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) File ingestion from partners (SFTP\/FTP patterns)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Partners deliver nightly files; you must validate, transform, and load them.<\/li>\n<li><strong>Why this fits<\/strong>: File-based triggers\/actions with transformation and error handling (capability depends on enabled features\/adapters).<\/li>\n<li><strong>Scenario<\/strong>: CSV file from a supplier is mapped to ERP import format and pushed to a target API.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) SOAP-to-REST modernization fa\u00e7ade<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Legacy systems expose SOAP services; modern apps want REST\/JSON.<\/li>\n<li><strong>Why this fits<\/strong>: Integration can accept REST, call SOAP, map XML\u2194JSON, and return a REST response.<\/li>\n<li><strong>Scenario<\/strong>: Mobile app calls REST <code>\/customers\/{id}<\/code>; integration invokes SOAP backend and returns JSON.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) HR onboarding automation across systems<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: New hire data must propagate to ITSM, directory, payroll, and provisioning.<\/li>\n<li><strong>Why this fits<\/strong>: Orchestration supports multi-step flows with conditional logic and retries.<\/li>\n<li><strong>Scenario<\/strong>: New hire created in HCM triggers downstream account creation and ticket creation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) API-based data validation service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Multiple apps need consistent validation rules (address validation, tax ID verification).<\/li>\n<li><strong>Why this fits<\/strong>: Integration exposes a shared API and centralizes outbound calls to validation providers.<\/li>\n<li><strong>Scenario<\/strong>: REST endpoint calls third-party validation API and returns standardized results.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Event-like integration using polling + idempotency<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Source system doesn\u2019t publish events; you still need near-real-time processing.<\/li>\n<li><strong>Why this fits<\/strong>: Scheduled integrations can poll, dedupe, and process incremental changes.<\/li>\n<li><strong>Scenario<\/strong>: Every 5 minutes, integration polls \u201cupdated since timestamp,\u201d processes new records, stores last watermark.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Controlled outbound integrations with security review<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Direct outbound calls from many apps are hard to secure and audit.<\/li>\n<li><strong>Why this fits<\/strong>: Central integration endpoints, consistent credentials handling, and monitoring.<\/li>\n<li><strong>Scenario<\/strong>: Only Integration Generation 2 is allowed to call payment provider APIs; apps call integration internally.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Multi-tenant partner routing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Same message must go to different endpoints based on partner\/customer.<\/li>\n<li><strong>Why this fits<\/strong>: Lookups + routing logic enable manageable partner configurations.<\/li>\n<li><strong>Scenario<\/strong>: Incoming order routes to different fulfillment API based on region code.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Disaster recovery-friendly decoupling layer (pattern)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Downstream system outages break upstream apps.<\/li>\n<li><strong>Why this fits<\/strong>: Integrations can implement retries and compensations; combined with queueing patterns (where supported) improves resilience.<\/li>\n<li><strong>Scenario<\/strong>: Integration retries transient failures and emits error notifications; upstream receives stable API responses.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<blockquote>\n<p>Feature availability can vary by entitlement\/edition and by what capabilities are enabled on your Integration instance. Always confirm in your instance UI and the official docs.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">1) Visual integration designer (orchestration)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Lets you model integration flows with triggers, invokes, mappings, and control logic.<\/li>\n<li><strong>Why it matters<\/strong>: Accelerates delivery and makes flows easier to review and maintain.<\/li>\n<li><strong>Practical benefit<\/strong>: Faster changes, easier onboarding for new engineers.<\/li>\n<li><strong>Caveats<\/strong>: Complex logic can become difficult to manage without standards (naming, modularity, consistent error handling).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Adapters and connections (connector model)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Provides connectors to SaaS apps, databases, and protocols; connections store endpoint and security configuration.<\/li>\n<li><strong>Why it matters<\/strong>: Avoids reimplementing auth\/protocol details in every integration.<\/li>\n<li><strong>Practical benefit<\/strong>: Consistent security configuration and faster connectivity.<\/li>\n<li><strong>Caveats<\/strong>: Not all adapters are available in all regions\/editions. Some adapters have specific limitations (API limits, object support)\u2014verify per adapter.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) REST and SOAP integration patterns<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Build integrations that can expose REST endpoints and\/or call REST\/SOAP services.<\/li>\n<li><strong>Why it matters<\/strong>: Common enterprise requirement for API mediation and legacy compatibility.<\/li>\n<li><strong>Practical benefit<\/strong>: Incremental modernization without rewriting backends.<\/li>\n<li><strong>Caveats<\/strong>: For high-scale public API management, you may still want a dedicated API gateway in front (rate limiting, WAF, developer portal).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Scheduled runs and polling patterns<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Run integrations on a schedule (cron-like) and poll source systems.<\/li>\n<li><strong>Why it matters<\/strong>: Many enterprise systems don\u2019t reliably push events.<\/li>\n<li><strong>Practical benefit<\/strong>: Enables incremental sync, nightly batches, and periodic reconciliation.<\/li>\n<li><strong>Caveats<\/strong>: Polling must be designed with idempotency and watermarking to avoid duplicates.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Data mapping and transformation<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Visual mapper for transforming payloads (JSON\/XML), enriching, and reshaping data.<\/li>\n<li><strong>Why it matters<\/strong>: Data transformation is a large part of integration effort.<\/li>\n<li><strong>Practical benefit<\/strong>: Reduced mapping bugs and quicker iterations.<\/li>\n<li><strong>Caveats<\/strong>: Extremely large payload transformations can be slow; design for payload size limits and streaming where possible (verify official service limits).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Error handling and retries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Supports handling faults, reprocessing patterns, and operational error visibility.<\/li>\n<li><strong>Why it matters<\/strong>: Production integrations fail; controlled failure is mandatory.<\/li>\n<li><strong>Practical benefit<\/strong>: Faster incident resolution and reduced data loss.<\/li>\n<li><strong>Caveats<\/strong>: Retry behavior depends on adapter and integration design; ensure idempotency to avoid duplicate writes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Tracking, monitoring, and operational dashboards<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Provides message tracking, instance status, and error views.<\/li>\n<li><strong>Why it matters<\/strong>: Integrations are operationally critical; you need auditability.<\/li>\n<li><strong>Practical benefit<\/strong>: Faster troubleshooting and better SLA management.<\/li>\n<li><strong>Caveats<\/strong>: Payload visibility may be limited or must be configured carefully for privacy\/compliance. Retention periods vary\u2014verify and adjust where possible.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Lookups and configuration artifacts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Use lookup tables for value translations and routing.<\/li>\n<li><strong>Why it matters<\/strong>: Keeps partner mappings and code tables out of hardcoded logic.<\/li>\n<li><strong>Practical benefit<\/strong>: Faster non-code changes.<\/li>\n<li><strong>Caveats<\/strong>: Govern lookup changes like code (review, testing) to avoid production incidents.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Hybrid connectivity (agent-based)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Allows Integration to securely reach on-prem systems without inbound network exposure (typical outbound agent model).<\/li>\n<li><strong>Why it matters<\/strong>: Hybrid integration is common; security teams often forbid inbound openings.<\/li>\n<li><strong>Practical benefit<\/strong>: Faster security approvals and safer deployments.<\/li>\n<li><strong>Caveats<\/strong>: Agent lifecycle (patching, HA, placement) becomes your responsibility.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Environment isolation and lifecycle management<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Separate dev\/test\/prod instances; manage activation\/deactivation of integrations.<\/li>\n<li><strong>Why it matters<\/strong>: Production stability depends on controlled changes.<\/li>\n<li><strong>Practical benefit<\/strong>: Reduced blast radius.<\/li>\n<li><strong>Caveats<\/strong>: Costs scale with number of instances; plan environment strategy intentionally.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">High-level service architecture<\/h3>\n\n\n\n<p>At a high level, an Integration Generation 2 <strong>instance<\/strong> provides:\n&#8211; A managed integration runtime\n&#8211; A design-time UI (browser-based)\n&#8211; A catalog of adapters and connection configurations\n&#8211; An execution engine for integrations\n&#8211; Monitoring and tracking tools<\/p>\n\n\n\n<p>Integrations are typically defined as:\n1. <strong>Trigger<\/strong>: how the integration starts (REST call, schedule, file event, etc.)\n2. <strong>Actions<\/strong>: calls to target systems, transformations, branching, assignments\n3. <strong>End<\/strong>: returns a response (for synchronous flows) or completes processing (for async)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Request\/data\/control flow (common patterns)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Synchronous API flow<\/strong>: Client \u2192 Integration REST endpoint \u2192 Adapter invokes downstream APIs \u2192 returns response.<\/li>\n<li><strong>Scheduled sync flow<\/strong>: Scheduler \u2192 query\/poll source \u2192 transform \u2192 write to target \u2192 log summary.<\/li>\n<li><strong>Hybrid flow<\/strong>: Integration \u2192 agent \u2192 on-prem service\/database \u2192 return results.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations with related OCI services (typical)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>IAM<\/strong>: Who can create\/manage integration instances and artifacts.<\/li>\n<li><strong>Networking<\/strong>: Optional private networking and access control.<\/li>\n<li><strong>Observability<\/strong>: OCI-level resource audit; service-level monitoring in the Integration console.<br\/>\n<em>Exporting logs\/metrics to OCI services may be available\u2014verify in official docs for your version.<\/em><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency services<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI tenancy, compartment structure, IAM policies<\/li>\n<li>Optionally VCN\/subnets\/NSGs for private endpoint patterns<\/li>\n<li>Optionally on-prem connectivity (VPN\/FastConnect) and\/or agent hosts<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model (practical view)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OCI IAM<\/strong> controls who can create and manage the Integration instance in OCI.<\/li>\n<li><strong>Integration console roles<\/strong> (within the instance) control who can design\/activate\/monitor integrations.<\/li>\n<li><strong>Connection credentials<\/strong> secure access to downstream systems.<\/li>\n<li><strong>Inbound authentication<\/strong> for REST triggers can be configured (for example, basic auth\/OAuth depending on capabilities). Avoid \u201cno auth\u201d in production.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model (practical view)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Most teams start with a <strong>public endpoint<\/strong> for dev\/test.<\/li>\n<li>For production, consider a <strong>private endpoint<\/strong> model so the Integration endpoint is only reachable within your network boundary (capability depends on service options and region\u2014verify).<\/li>\n<li>On-prem access can be provided via an agent and\/or private networking patterns.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Decide what to log and how long to retain it.<\/li>\n<li>Avoid storing sensitive fields in tracking\/payload logs unless required and approved.<\/li>\n<li>Use consistent naming and tagging across instances and artifacts.<\/li>\n<li>Establish runbooks for common failures (timeouts, auth errors, API limits).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram (learning view)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  A[Client \/ App] --&gt;|HTTPS REST| B[Integration Generation 2 Instance]\n  B --&gt; C[REST\/SOAP API Target]\n  B --&gt; D[(Database Target)]\n  B --&gt; E[Monitoring &amp; Tracking]\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram (enterprise view)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph OCI[\"Oracle Cloud (OCI)\"]\n    subgraph COMP[\"Compartment: prod-integration\"]\n      OIC[\"Integration Generation 2 Instance\\n(Private or Public Endpoint)\"]\n      MON[\"Instance Monitoring \/ Tracking\"]\n    end\n\n    subgraph NET[\"VCN (if using private endpoint)\"]\n      SUB[\"Private Subnet\"]\n      NSG[\"NSGs \/ Security Lists\"]\n    end\n  end\n\n  subgraph SAAS[\"SaaS Applications\"]\n    ERP[\"Oracle ERP Cloud (example)\"]\n    CRM[\"CRM (example)\"]\n  end\n\n  subgraph ONPREM[\"On-Premises \/ Private Network\"]\n    AGENT[\"Connectivity Agent Host(s)\"]\n    LEGACY[\"Legacy Apps \/ DBs\"]\n  end\n\n  USER[\"Developers \/ Operators\"] --&gt;|IAM + Console Access| OIC\n  OIC --&gt; MON\n\n  OIC --&gt;|Outbound HTTPS| ERP\n  OIC --&gt;|Outbound HTTPS| CRM\n\n  OIC --&gt;|Secure outbound via Agent| AGENT\n  AGENT --&gt; LEGACY\n\n  OIC -.-&gt;|If private endpoint| NET\n  SUB --&gt; NSG\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Tenancy\/account requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An active <strong>Oracle Cloud<\/strong> tenancy with billing enabled (paid or trial credits).<\/li>\n<li>Ability to use the <strong>Integration<\/strong> service in your tenancy.<br\/>\n<em>Some tenancies require explicit subscription\/entitlement for Oracle Integration\u2014verify with your Oracle Cloud account and service limits.<\/em><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Permissions \/ IAM<\/h3>\n\n\n\n<p>You typically need:\n&#8211; Permission to <strong>manage Integration instances<\/strong> in the target compartment.\n&#8211; Permission to <strong>read\/manage networking<\/strong> if creating a private endpoint configuration.<\/p>\n\n\n\n<p>Example OCI IAM policy (adjust group\/compartment names to your environment):<\/p>\n\n\n\n<pre><code class=\"language-text\">Allow group IntegrationAdmins to manage integration-instance-family in compartment my-integration-compartment\n<\/code><\/pre>\n\n\n\n<p>If you plan private networking, you may also need policies to manage VCN resources (exact policy set depends on your org model\u2014verify with OCI networking requirements).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Billing requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Integration Generation 2 is generally a <strong>paid<\/strong> OCI service (may consume trial credits if available).<\/li>\n<li>Make sure you understand your tenancy\u2019s subscription model (Pay As You Go vs Universal Credits vs BYOL, depending on your contract).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Tools needed<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Web browser for OCI Console and Integration instance console<\/li>\n<li>Optional: <code>curl<\/code> for testing REST endpoints<\/li>\n<li>Optional: OCI CLI (not required for the lab)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Integration Generation 2 is regional. Not all OCI regions may support it.<\/li>\n<li>Verify availability in:<\/li>\n<li>OCI Console service list in your region<\/li>\n<li>Official docs\/service availability references<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas\/limits<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Service limits apply (number of instances per region\/tenancy, message throughput, connection limits, etc.).<\/li>\n<li>Check <strong>Service Limits<\/strong> in OCI Console for Integration and request increases if needed.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services (for certain options)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>VCN\/subnets\/NSGs if using private endpoints<\/li>\n<li>On-prem host(s) if using connectivity agents<\/li>\n<li>Target systems (SaaS\/API) credentials and allowlists<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<blockquote>\n<p>Pricing changes, and exact costs vary by region, contract type, and edition\/SKU. Do not rely on unofficial numbers\u2014use Oracle\u2019s official pricing pages and your tenancy\u2019s cost reports.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Current pricing model (how you are billed)<\/h3>\n\n\n\n<p>Integration Generation 2 costs typically depend on:\n&#8211; The <strong>edition\/SKU<\/strong> you provision (capabilities and entitlements can vary)\n&#8211; The <strong>instance capacity<\/strong> or sizing model (service-specific; verify for your SKU)\n&#8211; Your <strong>usage volume<\/strong> (for example, message throughput\/processing units) depending on Oracle\u2019s pricing metric for your subscribed offering\n&#8211; Add-on capabilities enabled on the instance (if applicable)<\/p>\n\n\n\n<p>Because Oracle\u2019s commercial models can differ by contract (Universal Credits, BYOL, or negotiated enterprise agreements), treat pricing as:\n&#8211; <strong>Metered<\/strong> (usage-based), or\n&#8211; <strong>Provisioned capacity<\/strong> (hourly\/monthly instance-based), or\n&#8211; A combination depending on offer<\/p>\n\n\n\n<p><strong>Verify in official pricing<\/strong> for the exact metric used by your tenancy and region.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Official pricing references<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Oracle Cloud price list \/ cloud pricing entry point: https:\/\/www.oracle.com\/cloud\/price-list\/<\/li>\n<li>Oracle Pricing Calculator: https:\/\/www.oracle.com\/cloud\/costestimator.html<\/li>\n<li>Oracle Integration product\/pricing pages (may vary by country):<br\/>\n  https:\/\/www.oracle.com\/integration\/ (navigate to pricing)<br\/>\n  If a direct pricing URL is different for your locale, <strong>verify in official Oracle pages<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost drivers (what increases spend)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Running multiple instances (dev\/test\/prod) continuously<\/li>\n<li>Higher throughput \/ heavier mapping and transformation workloads<\/li>\n<li>Large payload sizes and high call rates to downstream systems<\/li>\n<li>Premium\/enterprise adapters or add-on features (if required by your SKU)<\/li>\n<li>Network architecture choices (private networking, connectivity design)<\/li>\n<li>Operational choices: retention and monitoring settings can have indirect costs (for example, if exported to other services\u2014verify)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden\/indirect costs to plan for<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Downstream API costs<\/strong>: third-party SaaS API usage limits, paid API tiers<\/li>\n<li><strong>Network egress<\/strong>: outbound data transfer from OCI to internet or cross-region (OCI pricing rules apply)<\/li>\n<li><strong>On-prem agent hosts<\/strong>: compute\/VM costs if you run agents on OCI or on-prem (plus operations)<\/li>\n<li><strong>Environments and DR<\/strong>: additional instances for staging, DR, and isolation<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network\/data transfer implications<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Inbound to OCI is typically not charged; outbound (egress) and cross-region data transfer can be.<\/li>\n<li>If integrations call internet endpoints, watch egress.<\/li>\n<li>If your instance is in one region and targets are in another, cross-region patterns can add latency and transfer costs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How to optimize cost (practical)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>separate small dev instances<\/strong> and shut down\/delete when not needed (if your governance allows).<\/li>\n<li>Avoid chatty integration designs (many small calls) when batch patterns are acceptable.<\/li>\n<li>Reduce payload bloat: only request\/return required fields.<\/li>\n<li>Implement caching\/value lookups carefully to reduce repetitive calls (where applicable).<\/li>\n<li>Prefer private connectivity to reduce security overhead\u2014but understand it doesn\u2019t automatically reduce cost.<\/li>\n<li>Monitor usage and rightsize instance capacity\/edition based on actual needs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (how to think about it)<\/h3>\n\n\n\n<p>A realistic starter plan for learning:\n&#8211; 1 dev Integration Generation 2 instance\n&#8211; 1\u20132 simple REST connections\n&#8211; A few integrations with low daily call volume<\/p>\n\n\n\n<p>Because Oracle\u2019s pricing unit (capacity vs usage) may vary by contract, estimate by:\n1) Finding your SKU\u2019s hourly\/monthly charge in the pricing page\/calculator<br\/>\n2) Adding expected network egress (often minimal for small labs)<br\/>\n3) Keeping the instance lifetime short (delete after the lab)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations (what to model)<\/h3>\n\n\n\n<p>For production, build a cost model including:\n&#8211; Number of environments (dev\/test\/prod + DR if required)\n&#8211; Peak and average message volumes\n&#8211; Required adapters\/features\n&#8211; Private endpoint\/networking pattern\n&#8211; Operational overhead: agent hosts, monitoring\/export integrations\n&#8211; Expected growth and seasonal peaks<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>This lab builds and tests a small but real integration: expose a REST API on Integration Generation 2 that calls a public REST service and returns the result. It\u2019s designed to be low-risk and easy to clean up.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<p>Provision an <strong>Integration Generation 2<\/strong> instance in Oracle Cloud, then create and activate an integration:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Inbound<\/strong>: REST endpoint <code>GET \/todo\/{id}<\/code><\/li>\n<li><strong>Backend call<\/strong>: <code>GET https:\/\/jsonplaceholder.typicode.com\/todos\/{id}<\/code><\/li>\n<li><strong>Outbound<\/strong>: Return the JSON response to the caller<\/li>\n<li><strong>Verify<\/strong>: Use <code>curl<\/code> and the Integration monitoring\/tracking UI<\/li>\n<li><strong>Clean up<\/strong>: Deactivate integrations and delete the instance to stop charges<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<p>You will:\n1. Create (or choose) an OCI compartment for the lab\n2. Provision an Integration Generation 2 instance\n3. Create a REST connection to JSONPlaceholder\n4. Create an app-driven integration with REST trigger + REST invoke\n5. Activate and test the endpoint\n6. Validate tracking and troubleshoot common errors\n7. Clean up resources<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Prepare OCI access and compartment<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Sign in to the <strong>Oracle Cloud Console<\/strong>.<\/li>\n<li>Select the correct <strong>region<\/strong> (top bar).<br\/>\n   Make sure Integration is available in that region (<strong>verify<\/strong> by checking the \u201cIntegration\u201d service in the navigation menu).<\/li>\n<li>Create or select a <strong>compartment<\/strong> for this lab, for example: <code>lab-integration<\/code>.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>\n&#8211; You have a compartment to hold the Integration instance and any related resources.<\/p>\n\n\n\n<p><strong>Verification<\/strong>\n&#8211; You can open the compartment and view its OCID and name.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Create an Integration Generation 2 instance<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In OCI Console, open <strong>Integration<\/strong> (service category: Integration).<\/li>\n<li>Choose <strong>Create Integration Instance<\/strong> (wording may vary slightly).<\/li>\n<li>Set:\n   &#8211; <strong>Name<\/strong>: <code>lab-oic-gen2<\/code>\n   &#8211; <strong>Compartment<\/strong>: <code>lab-integration<\/code>\n   &#8211; <strong>Generation<\/strong>: <strong>Generation 2<\/strong> (ensure Gen2 is selected)\n   &#8211; <strong>Shape\/Edition\/Sizing<\/strong>: choose the smallest suitable option available in your tenancy for learning (naming varies\u2014<strong>verify in UI<\/strong>)\n   &#8211; <strong>Endpoint type<\/strong>: choose <strong>Public<\/strong> for easiest lab setup<br\/>\n     (Use <strong>Private<\/strong> only if you already have VCN\/subnet design and want to practice private access.)<\/li>\n<li>Create the instance and wait for provisioning to complete (this may take time).<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>\n&#8211; The instance status becomes <strong>Active\/Ready<\/strong>.<\/p>\n\n\n\n<p><strong>Verification<\/strong>\n&#8211; The instance details page shows a console link such as \u201cOpen Oracle Integration\u201d (wording varies).<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Open the Integration instance console<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>From the instance details page, click <strong>Open<\/strong> \/ <strong>Service Console<\/strong> (name varies).<\/li>\n<li>Sign in if prompted (may use SSO depending on tenant setup).<\/li>\n<li>Confirm you can see the design home page where you can create <strong>Integrations<\/strong> and <strong>Connections<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>\n&#8211; You can access the Oracle Integration design console.<\/p>\n\n\n\n<p><strong>Verification<\/strong>\n&#8211; You can navigate to <strong>Connections<\/strong> and <strong>Integrations<\/strong> sections.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Create a REST connection for the backend API (JSONPlaceholder)<\/h3>\n\n\n\n<p>You will create a reusable connection that points to the public REST service.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Connections<\/strong> \u2192 <strong>Create<\/strong>.<\/li>\n<li>Choose the <strong>REST Adapter<\/strong> (name may appear as \u201cREST\u201d).<\/li>\n<li>Enter:\n   &#8211; <strong>Name<\/strong>: <code>JSONPlaceholder_REST<\/code>\n   &#8211; <strong>Role<\/strong>: <strong>Invoke<\/strong> (since we will call it as a backend)<\/li>\n<li>Configure the connection:\n   &#8211; <strong>Base URI<\/strong>: <code>https:\/\/jsonplaceholder.typicode.com<\/code>\n   &#8211; <strong>Security policy<\/strong>: choose <strong>No Security<\/strong> (this endpoint is public)<\/li>\n<li><strong>Test<\/strong> the connection.<\/li>\n<li><strong>Save<\/strong>.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>\n&#8211; Connection test succeeds.<\/p>\n\n\n\n<p><strong>Verification<\/strong>\n&#8211; Connection shows status as configured and tested.<\/p>\n\n\n\n<p><strong>Common error<\/strong>\n&#8211; <em>\u201cTest failed \/ cannot connect\u201d<\/em>: confirm your network allows outbound HTTPS, and that the base URI is correct.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Create an app-driven integration with REST trigger<\/h3>\n\n\n\n<p>Now you\u2019ll build the integration flow.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Integrations<\/strong> \u2192 <strong>Create<\/strong>.<\/li>\n<li>Select an <strong>App Driven Orchestration<\/strong> (or similarly named) integration pattern.<\/li>\n<li>Enter:\n   &#8211; <strong>Name<\/strong>: <code>GetTodo<\/code>\n   &#8211; <strong>Version<\/strong>: keep default (for example, <code>01.00.0000<\/code>\u2014exact format varies)<\/li>\n<li>For the <strong>Trigger<\/strong>, choose <strong>REST Adapter<\/strong>.\n   &#8211; If the UI requires a REST <strong>Connection<\/strong> for the trigger:<ul>\n<li>Create a second REST connection named <code>REST_Trigger<\/code> with role <strong>Trigger<\/strong><\/li>\n<li>Use appropriate security for a lab:<\/li>\n<li>If available, prefer a basic auth or OAuth option<\/li>\n<li>If you must choose <strong>No Security<\/strong>, do so only for learning and do <strong>not<\/strong> use this pattern for production<\/li>\n<\/ul>\n<\/li>\n<li>Configure the REST trigger:\n   &#8211; <strong>Operation<\/strong>: <code>GET<\/code>\n   &#8211; <strong>Resource path<\/strong>: <code>\/todo\/{id}<\/code>\n   &#8211; Define path parameter:<ul>\n<li><code>id<\/code> as a string or integer (choose what the UI supports cleanly)<\/li>\n<li>Response payload:<\/li>\n<li>If the wizard lets you \u201csample\u201d a response, you can paste a sample JSON like:\n   <code>json\n   {\n     \"userId\": 1,\n     \"id\": 1,\n     \"title\": \"delectus aut autem\",\n     \"completed\": false\n   }<\/code><\/li>\n<li>Otherwise, allow the system to infer or use a generic JSON schema option if provided.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>\n&#8211; A new integration canvas opens with a REST trigger at the start.<\/p>\n\n\n\n<p><strong>Verification<\/strong>\n&#8211; The trigger shows method GET and the <code>\/todo\/{id}<\/code> path.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Add a REST invoke to call the backend API<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Add an <strong>Invoke<\/strong> action after the trigger.<\/li>\n<li>Select the connection <strong>JSONPlaceholder_REST<\/strong>.<\/li>\n<li>Configure the invoke:\n   &#8211; <strong>Method<\/strong>: GET\n   &#8211; <strong>Endpoint path<\/strong>: <code>\/todos\/{id}<\/code>\n   &#8211; Map the <code>{id}<\/code> from the trigger path parameter.<\/li>\n<li>Configure response handling:\n   &#8211; The invoke should produce a response object you can return.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>\n&#8211; The integration now calls the backend API using the provided <code>id<\/code>.<\/p>\n\n\n\n<p><strong>Verification<\/strong>\n&#8211; You can see the invoke step and that it references the JSONPlaceholder connection.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7: Map the backend response to the REST response<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Add a <strong>Map<\/strong> step (or configure the return mapping depending on UI).<\/li>\n<li>Map fields from the invoke response to the integration response.<\/li>\n<\/ol>\n\n\n\n<p>If you used the sample JSON schema, map fields like:\n&#8211; <code>id<\/code>\n&#8211; <code>userId<\/code>\n&#8211; <code>title<\/code>\n&#8211; <code>completed<\/code><\/p>\n\n\n\n<p><strong>Expected outcome<\/strong>\n&#8211; The integration returns JSONPlaceholder data through your Integration Generation 2 endpoint.<\/p>\n\n\n\n<p><strong>Verification<\/strong>\n&#8211; Mapping shows source fields connected to target fields.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 8: Activate the integration<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Click <strong>Activate<\/strong>.<\/li>\n<li>Review activation settings:\n   &#8211; Tracking: enable basic tracking for learning\n   &#8211; Security: if your trigger uses no security, the platform may warn you\u2014acknowledge for lab only<\/li>\n<li>Confirm activation.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>\n&#8211; Integration status becomes <strong>Active<\/strong>.<\/p>\n\n\n\n<p><strong>Verification<\/strong>\n&#8211; The activation dialog shows the <strong>Endpoint URL<\/strong> for the REST service. Copy it.<\/p>\n\n\n\n<blockquote>\n<p>Use the endpoint URL shown in your console. Do not guess the URL format; it can vary by environment and settings.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 9: Test with curl<\/h3>\n\n\n\n<p>On your terminal, call the endpoint URL you copied.<\/p>\n\n\n\n<p>Example (illustrative only\u2014use your real URL):<\/p>\n\n\n\n<pre><code class=\"language-bash\">curl -sS \"&lt;YOUR_INTEGRATION_ENDPOINT_URL_WITH_ID_1&gt;\"\n<\/code><\/pre>\n\n\n\n<p>If your endpoint requires credentials (recommended), use the auth method you configured. For example, with basic auth:<\/p>\n\n\n\n<pre><code class=\"language-bash\">curl -sS -u \"username:password\" \"&lt;YOUR_ENDPOINT_URL&gt;\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>\n&#8211; You receive a JSON response similar to:<\/p>\n\n\n\n<pre><code class=\"language-json\">{\n  \"userId\": 1,\n  \"id\": 1,\n  \"title\": \"delectus aut autem\",\n  \"completed\": false\n}\n<\/code><\/pre>\n\n\n\n<p><strong>Verification<\/strong>\n&#8211; The response matches what JSONPlaceholder returns for <code>\/todos\/1<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>Perform these checks in the Integration console:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open <strong>Monitoring<\/strong> \/ <strong>Tracking<\/strong> (wording varies).<\/li>\n<li>Find the latest instance execution for <code>GetTodo<\/code>.<\/li>\n<li>Confirm:\n   &#8211; Status is <strong>Completed<\/strong>\n   &#8211; Duration is reasonable (seconds)\n   &#8211; No faults occurred<\/li>\n<li>If payload viewing is enabled, confirm the payload looks correct.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: Activation fails due to endpoint\/security configuration<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Trigger security policy conflicts with environment rules or missing required settings.<\/li>\n<li><strong>Fix<\/strong>: Revisit the REST trigger configuration and pick a supported security method. If your org mandates auth, configure it accordingly.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: <code>401 Unauthorized<\/code> when calling the endpoint<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: REST trigger is secured, but <code>curl<\/code> is missing credentials\/token.<\/li>\n<li><strong>Fix<\/strong>: Use the correct <code>curl<\/code> auth flags or generate a token per the configured policy.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: <code>404 Not Found<\/code><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Wrong endpoint URL, wrong path, or missing path parameter.<\/li>\n<li><strong>Fix<\/strong>: Copy the endpoint URL from the activation dialog again. Ensure you include <code>\/todo\/1<\/code> (or the required parameter format).<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: Invoke step fails (cannot reach <code>jsonplaceholder.typicode.com<\/code>)<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Outbound internet is restricted by policy\/network.<\/li>\n<li><strong>Fix<\/strong>: Test from a network that allows outbound HTTPS, or switch to an internal test API endpoint that your environment can reach.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: Backend returns <code>429 Too Many Requests<\/code><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cause<\/strong>: Public API rate-limited.<\/li>\n<li><strong>Fix<\/strong>: Reduce test frequency, add retry\/backoff logic if available, or use a different test endpoint.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To avoid ongoing charges:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the Integration console:\n   &#8211; <strong>Deactivate<\/strong> the <code>GetTodo<\/code> integration.\n   &#8211; Delete test connections if no longer needed (optional).<\/li>\n<li>In OCI Console:\n   &#8211; Delete the <strong>Integration Generation 2 instance<\/strong> <code>lab-oic-gen2<\/code>.<\/li>\n<li>Wait until deletion completes.<\/li>\n<\/ol>\n\n\n\n<p><strong>Verification<\/strong>\n&#8211; Instance no longer appears in the compartment (or shows deleted state).\n&#8211; Cost reports stop accumulating new charges for that instance.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use Integration Generation 2 as an <strong>integration hub<\/strong>, not as a dumping ground:<\/li>\n<li>Define ownership per domain (CRM, ERP, billing)<\/li>\n<li>Avoid giant \u201cdo everything\u201d integrations; prefer smaller, composable flows<\/li>\n<li>Standardize patterns:<\/li>\n<li>Naming conventions for connections and integrations<\/li>\n<li>Error handling pattern (fault handlers, retries, dead-letter-like processes if applicable)<\/li>\n<li>Idempotency strategy (especially for scheduled polling)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>least privilege<\/strong>:<\/li>\n<li>Separate groups for instance admins vs integration developers vs operators<\/li>\n<li>Keep production access tightly controlled:<\/li>\n<li>Restrict who can view payloads (PII risk)<\/li>\n<li>Store credentials securely in connections; avoid embedding secrets in mappings.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Minimize always-on dev instances if cost is a concern.<\/li>\n<li>Right-size capacity\/edition to actual use (measure first, then scale).<\/li>\n<li>Avoid unnecessary high-frequency polling.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep payload sizes reasonable; return only needed fields.<\/li>\n<li>Reduce chatty calls by batching when the backend supports it.<\/li>\n<li>Use parallelism carefully; don\u2019t overload downstream SaaS APIs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Design retries with idempotency (unique keys, upsert semantics).<\/li>\n<li>Build clear error handling and escalation:<\/li>\n<li>What errors are retried?<\/li>\n<li>Which errors are routed to manual review?<\/li>\n<li>Plan for downstream outages:<\/li>\n<li>Backoff policies<\/li>\n<li>Circuit-breaker-like behavior via conditional routing (where supported)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Establish dashboards and runbooks:<\/li>\n<li>Where to check failed instances<\/li>\n<li>How to reprocess<\/li>\n<li>How to rollback an integration change<\/li>\n<li>Use versioning and controlled promotion across environments.<\/li>\n<li>Implement tagging at OCI resource level for cost allocation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI tags on instances:<\/li>\n<li><code>env=dev|test|prod<\/code><\/li>\n<li><code>owner=team-name<\/code><\/li>\n<li><code>cost-center=...<\/code><\/li>\n<li>Integration artifact naming:<\/li>\n<li><code>SRC_to_TGT_Purpose_Version<\/code><\/li>\n<li>Connection names that include target system and environment<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>OCI IAM<\/strong> governs:<\/li>\n<li>Who can create\/manage\/delete Integration instances<\/li>\n<li>Which compartments can contain instances<\/li>\n<li><strong>Integration console roles<\/strong> govern:<\/li>\n<li>Who can create\/activate integrations<\/li>\n<li>Who can monitor and view payloads<\/li>\n<\/ul>\n\n\n\n<p>Recommended approach:\n&#8211; Separate duties:\n  &#8211; Developers can build but not necessarily administer the instance\n  &#8211; Operators can monitor and reprocess but not edit in production<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data-in-transit:<\/li>\n<li>Use HTTPS\/TLS for inbound and outbound integrations.<\/li>\n<li>Data-at-rest:<\/li>\n<li>Service data is managed by Oracle; verify details in official docs for encryption-at-rest and key management options (including any customer-managed key support, if available for your SKU).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer <strong>private endpoint<\/strong> (if available) for production to reduce public surface area.<\/li>\n<li>Restrict inbound access using network controls where applicable.<\/li>\n<li>For public endpoints, enforce strong authentication and consider placing an API gateway\/WAF in front (architecture-dependent).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use connection credential storage rather than hardcoding secrets in payloads or mappings.<\/li>\n<li>Rotate credentials regularly and update connections with minimal downtime.<\/li>\n<li>Avoid logging sensitive headers\/tokens.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI-level audit logs cover instance lifecycle operations (create\/update\/delete).<\/li>\n<li>Integration console provides message tracking; decide what data is retained.<\/li>\n<li>If you export logs externally, treat them as sensitive data stores and secure accordingly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If processing PII\/PHI\/PCI:<\/li>\n<li>Restrict payload visibility<\/li>\n<li>Use environment isolation<\/li>\n<li>Apply retention and access policies<\/li>\n<li>Verify Oracle compliance attestations and your contract scope in official Oracle compliance documentation<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Leaving REST triggers with <strong>no authentication<\/strong> in production<\/li>\n<li>Using shared admin accounts<\/li>\n<li>Over-permissive IAM policies (tenancy-wide manage instead of compartment-scoped)<\/li>\n<li>Exposing on-prem systems directly instead of using agent\/private connectivity patterns<\/li>\n<li>Logging sensitive data in tracking payloads<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Make production endpoints private where possible, or strongly authenticated and protected.<\/li>\n<li>Use least-privilege IAM policies and compartment isolation.<\/li>\n<li>Establish a secrets rotation and incident response process.<\/li>\n<li>Maintain a clear integration inventory and ownership registry.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<blockquote>\n<p>Limits and behavior can vary by edition\/SKU and by region. Always confirm the latest constraints in official docs and your tenancy\u2019s service limits.<\/p>\n<\/blockquote>\n\n\n\n<p>Common practical limitations\/gotchas:\n&#8211; <strong>Service limits<\/strong>: number of instances, connections, integrations, throughput, concurrent executions\u2014check OCI Service Limits.\n&#8211; <strong>Adapter differences<\/strong>: not all adapters behave the same (pagination, filtering, object support).\n&#8211; <strong>API rate limits<\/strong>: SaaS targets often enforce strict rate limits; integrations can hit 429 errors if not designed carefully.\n&#8211; <strong>Payload and tracking retention<\/strong>: message payload retention windows may be limited; don\u2019t use tracking as long-term storage.\n&#8211; <strong>Public endpoint risk<\/strong>: easiest for labs, but often not acceptable for production without strong controls.\n&#8211; <strong>Polling duplicates<\/strong>: scheduled polling without watermarking\/idempotency causes duplicates.\n&#8211; <strong>Time zone and scheduling<\/strong>: cron-like schedules can surprise teams during daylight savings changes; define a clear standard.\n&#8211; <strong>Promotion between environments<\/strong>: moving integrations dev\u2192test\u2192prod requires disciplined configuration management; avoid manual \u201cclick ops\u201d drift.\n&#8211; <strong>Hybrid agent operations<\/strong>: agents require patching, HA planning, and host reliability\u2014don\u2019t treat them as set-and-forget.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<p>Integration Generation 2 is one approach among several. The right choice depends on whether you need a managed iPaaS, code-first workflow orchestration, or data\/stream processing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comparison table<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Oracle Cloud Integration Generation 2<\/strong><\/td>\n<td>Enterprise iPaaS, SaaS integration, governed integrations<\/td>\n<td>Managed runtime, adapters, mapping, monitoring<\/td>\n<td>Cost and licensing complexity; adapter\/feature availability varies<\/td>\n<td>Standardizing enterprise integrations, especially with Oracle SaaS<\/td>\n<\/tr>\n<tr>\n<td><strong>OCI API Gateway + OCI Functions<\/strong><\/td>\n<td>Lightweight API mediation and serverless automation<\/td>\n<td>Code-first flexibility, strong API gateway controls<\/td>\n<td>More engineering\/ops effort; you build mapping\/monitoring patterns<\/td>\n<td>When you want custom logic and serverless patterns<\/td>\n<\/tr>\n<tr>\n<td><strong>OCI Streaming + custom consumers<\/strong><\/td>\n<td>High-throughput event streaming<\/td>\n<td>Strong for event pipelines, decoupling<\/td>\n<td>Not an iPaaS; you must build connectors\/mappings<\/td>\n<td>When event-driven architecture and scale are primary<\/td>\n<\/tr>\n<tr>\n<td><strong>Oracle SOA Suite (self-managed on OCI)<\/strong><\/td>\n<td>Legacy SOA workloads<\/td>\n<td>Full control of middleware stack<\/td>\n<td>You manage patching, scaling, and operations<\/td>\n<td>When you need compatibility with existing SOA Suite apps<\/td>\n<\/tr>\n<tr>\n<td><strong>AWS Step Functions \/ EventBridge \/ AppFlow<\/strong><\/td>\n<td>AWS-native orchestration and SaaS movement<\/td>\n<td>Strong ecosystem; event-driven patterns<\/td>\n<td>Different adapter model; AppFlow coverage varies<\/td>\n<td>When primary footprint is on AWS<\/td>\n<\/tr>\n<tr>\n<td><strong>Azure Logic Apps<\/strong><\/td>\n<td>Low-code integrations on Azure<\/td>\n<td>Many connectors, strong workflow tooling<\/td>\n<td>Connector costs\/limits; platform-specific<\/td>\n<td>When primary footprint is on Azure<\/td>\n<\/tr>\n<tr>\n<td><strong>Google Workflows + Integration Connectors<\/strong><\/td>\n<td>GCP-native orchestration<\/td>\n<td>Serverless orchestration<\/td>\n<td>Connector coverage differs; may require more code<\/td>\n<td>When primary footprint is on GCP<\/td>\n<\/tr>\n<tr>\n<td><strong>MuleSoft \/ Boomi (commercial iPaaS)<\/strong><\/td>\n<td>Vendor-neutral enterprise iPaaS<\/td>\n<td>Rich connector ecosystems, governance<\/td>\n<td>Can be expensive; separate platform<\/td>\n<td>When you need multi-cloud\/vendor neutrality<\/td>\n<\/tr>\n<tr>\n<td><strong>Apache Camel \/ Spring Integration (self-managed)<\/strong><\/td>\n<td>Code-first integration frameworks<\/td>\n<td>Maximum flexibility, portability<\/td>\n<td>You manage everything; slower to standardize<\/td>\n<td>When you have strong engineering capacity and want portability<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: Oracle ERP Cloud + on-prem finance system integration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: A large enterprise runs Oracle ERP Cloud but still has an on-prem legacy finance system and partner file exchanges. They need reliable sync and a unified monitoring approach.<\/li>\n<li><strong>Proposed architecture<\/strong><\/li>\n<li>Integration Generation 2 instance in a production compartment<\/li>\n<li>Private connectivity to on-prem via connectivity agent (and\/or private networking)<\/li>\n<li>Separate integrations:<ul>\n<li>ERP Cloud \u2192 on-prem ledger updates (scheduled)<\/li>\n<li>Partner files \u2192 validation \u2192 ERP import API (file-based where supported)<\/li>\n<\/ul>\n<\/li>\n<li>Standardized error handling and operations dashboards<\/li>\n<li><strong>Why this service was chosen<\/strong><\/li>\n<li>Strong fit for Oracle SaaS integration patterns and enterprise governance<\/li>\n<li>Managed runtime with operational visibility<\/li>\n<li><strong>Expected outcomes<\/strong><\/li>\n<li>Reduced integration development time<\/li>\n<li>Improved auditability and incident response<\/li>\n<li>Fewer brittle scripts and manual reconciliations<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: SaaS-to-SaaS order processing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: A small team uses an e-commerce platform, a support ticketing system, and an accounting SaaS. They need reliable order sync and customer updates without building\/hosting integration code.<\/li>\n<li><strong>Proposed architecture<\/strong><\/li>\n<li>One smaller Integration Generation 2 instance (initially dev\/prod combined if acceptable, later split)<\/li>\n<li>Integrations:<ul>\n<li>New order \u2192 create invoice in accounting SaaS<\/li>\n<li>Refund \u2192 update accounting and create support ticket<\/li>\n<\/ul>\n<\/li>\n<li>Alerts for failures and reprocessing playbook<\/li>\n<li><strong>Why this service was chosen<\/strong><\/li>\n<li>Low-code speed, built-in monitoring, and reduced ops burden<\/li>\n<li><strong>Expected outcomes<\/strong><\/li>\n<li>Faster automation rollout<\/li>\n<li>More reliable order lifecycle processing<\/li>\n<li>Less engineering time spent on glue code<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Is \u201cIntegration Generation 2\u201d the same as \u201cOracle Integration\u201d?<\/strong><br\/>\n   Integration Generation 2 refers to the OCI-native generation\/platform for Oracle Integration instances. The product is commonly called Oracle Integration. Always verify naming in the OCI Console and official docs.<\/p>\n<\/li>\n<li>\n<p><strong>Do I need to manage servers or Kubernetes for Integration Generation 2?<\/strong><br\/>\n   No. It\u2019s a managed service where Oracle operates the underlying runtime. You manage integrations, connections, and configuration.<\/p>\n<\/li>\n<li>\n<p><strong>Is Integration Generation 2 regional?<\/strong><br\/>\n   Yes, instances are typically provisioned in a specific OCI region. Check region availability in your tenancy and official docs.<\/p>\n<\/li>\n<li>\n<p><strong>Can I use it for on-premises systems?<\/strong><br\/>\n   Yes, commonly via an agent-based model and\/or private connectivity patterns. Exact options depend on your configuration\u2014verify in docs.<\/p>\n<\/li>\n<li>\n<p><strong>Does it support REST APIs?<\/strong><br\/>\n   Yes. You can expose REST endpoints (as triggers) and invoke REST services (as actions), depending on adapter capabilities.<\/p>\n<\/li>\n<li>\n<p><strong>Does it support SOAP?<\/strong><br\/>\n   Commonly yes (SOAP invoke and\/or SOAP exposure patterns), but confirm current adapter support in your instance.<\/p>\n<\/li>\n<li>\n<p><strong>How do I secure an inbound REST trigger?<\/strong><br\/>\n   Use the security policy options provided in the REST trigger configuration (for example, basic auth or OAuth options if available). Avoid unauthenticated endpoints in production.<\/p>\n<\/li>\n<li>\n<p><strong>Can I keep integrations private (not internet accessible)?<\/strong><br\/>\n   Many production deployments aim for private endpoint patterns. Availability and setup steps can vary\u2014verify private endpoint support for Integration Generation 2 in your region and edition.<\/p>\n<\/li>\n<li>\n<p><strong>What\u2019s the difference between Connections and Integrations?<\/strong><br\/>\n   Connections define how to reach systems (endpoint + credentials). Integrations are the executable flows that use connections.<\/p>\n<\/li>\n<li>\n<p><strong>How do I promote changes from dev to prod?<\/strong><br\/>\n   Use environment separation (separate instances) and a disciplined promotion process (export\/import or platform-supported lifecycle tools). Exact mechanics vary\u2014verify in official docs.<\/p>\n<\/li>\n<li>\n<p><strong>How do I troubleshoot failed messages?<\/strong><br\/>\n   Use Monitoring\/Tracking to inspect failed instances, review fault details, and apply reprocessing where appropriate. Also check connection tests and downstream system logs.<\/p>\n<\/li>\n<li>\n<p><strong>Can I do transformations (JSON\/XML)?<\/strong><br\/>\n   Yes, via mapping tools. For complex transformations, keep mappings maintainable and test thoroughly.<\/p>\n<\/li>\n<li>\n<p><strong>Is Integration Generation 2 suitable for streaming\/event processing at scale?<\/strong><br\/>\n   It can support event-like patterns, but for high-throughput streaming pipelines you may prefer streaming-native services. Use Integration where adapters, mapping, and orchestration are the priority.<\/p>\n<\/li>\n<li>\n<p><strong>How do costs scale?<\/strong><br\/>\n   Costs typically scale with instance capacity\/edition and\/or usage (message volume), depending on your contract\/SKU. Use Oracle\u2019s pricing calculator and monitor usage.<\/p>\n<\/li>\n<li>\n<p><strong>Can I use it with non-Oracle SaaS apps?<\/strong><br\/>\n   Often yes through adapters and generic REST\/SOAP connectivity. Adapter availability varies\u2014verify your instance\u2019s adapter catalog.<\/p>\n<\/li>\n<li>\n<p><strong>What are common causes of production incidents?<\/strong><br\/>\n   Rate limits on downstream SaaS APIs, credential expiration, schema changes, unhandled null\/formatting differences, and insufficient idempotency on retries.<\/p>\n<\/li>\n<li>\n<p><strong>Does it provide audit trails?<\/strong><br\/>\n   OCI provides audit logs for resource changes; the Integration console provides message tracking. Confirm retention and export options in official docs.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn Integration Generation 2<\/h2>\n\n\n\n<blockquote>\n<p>Links can change by product updates and locale. If a link redirects, navigate from the Oracle Integration documentation hub.<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official documentation<\/td>\n<td>Oracle Integration Documentation (Docs Hub) \u2013 https:\/\/docs.oracle.com\/en\/cloud\/paas\/integration-cloud\/<\/td>\n<td>Primary reference for features, adapters, security, and administration<\/td>\n<\/tr>\n<tr>\n<td>Official docs (OCI)<\/td>\n<td>OCI Documentation portal \u2013 https:\/\/docs.oracle.com\/en-us\/iaas\/<\/td>\n<td>Context for IAM, networking, compartments, tagging, and governance used with Integration instances<\/td>\n<\/tr>\n<tr>\n<td>Official pricing<\/td>\n<td>Oracle Cloud Price List \u2013 https:\/\/www.oracle.com\/cloud\/price-list\/<\/td>\n<td>Authoritative pricing entry point for Oracle Cloud services<\/td>\n<\/tr>\n<tr>\n<td>Pricing calculator<\/td>\n<td>Oracle Cloud Cost Estimator \u2013 https:\/\/www.oracle.com\/cloud\/costestimator.html<\/td>\n<td>Build estimates by region and service SKU (best-effort estimate tool)<\/td>\n<\/tr>\n<tr>\n<td>Product overview<\/td>\n<td>Oracle Integration product page \u2013 https:\/\/www.oracle.com\/integration\/<\/td>\n<td>High-level capabilities, packaging, and links to trials\/pricing<\/td>\n<\/tr>\n<tr>\n<td>Architecture center<\/td>\n<td>Oracle Cloud Architecture Center \u2013 https:\/\/www.oracle.com\/cloud\/architecture-center\/<\/td>\n<td>Reference architectures and best practices patterns (search for integration and iPaaS patterns)<\/td>\n<\/tr>\n<tr>\n<td>Tutorials\/labs<\/td>\n<td>Oracle Cloud \u201cGet Started\u201d \/ tutorials \u2013 https:\/\/docs.oracle.com\/en\/learn\/<\/td>\n<td>Step-by-step labs; search for Oracle Integration\/Integration Gen2 content<\/td>\n<\/tr>\n<tr>\n<td>Release updates<\/td>\n<td>Oracle Cloud \u201cWhat\u2019s New\u201d \u2013 https:\/\/docs.oracle.com\/en-us\/iaas\/Content\/General\/Reference\/whatsnew.htm<\/td>\n<td>Track platform updates; verify Integration-specific updates from Oracle Integration release notes<\/td>\n<\/tr>\n<tr>\n<td>Video learning<\/td>\n<td>Oracle YouTube channel \u2013 https:\/\/www.youtube.com\/@Oracle<\/td>\n<td>Webinars, demos, and product explainers (search within channel for Oracle Integration)<\/td>\n<\/tr>\n<tr>\n<td>Samples (verify official)<\/td>\n<td>Oracle GitHub \u2013 https:\/\/github.com\/oracle<\/td>\n<td>Some Oracle org repos include integration samples; validate repo relevance and recency before use<\/td>\n<\/tr>\n<tr>\n<td>Community learning<\/td>\n<td>Oracle Cloud Customer Connect \u2013 https:\/\/cloudcustomerconnect.oracle.com\/<\/td>\n<td>Community Q&amp;A and announcements; useful for practical issues (validate against docs)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>Engineers, DevOps, platform teams<\/td>\n<td>OCI fundamentals, cloud operations, integration-adjacent DevOps practices<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Beginners to intermediate engineers<\/td>\n<td>DevOps, cloud basics, tooling practices that support integration delivery<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud operations teams<\/td>\n<td>Cloud operations, monitoring, governance, cost controls<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs, ops engineers<\/td>\n<td>Reliability engineering concepts applicable to integration platforms<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops and monitoring teams<\/td>\n<td>AIOps concepts, observability practices<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>DevOps\/cloud training content (verify current offerings)<\/td>\n<td>Beginners to intermediate learners<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps training resources (verify current courses)<\/td>\n<td>Engineers and students<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>Freelance\/consulting and training-style content (verify services)<\/td>\n<td>Teams seeking project-based guidance<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>Support\/training resources (verify scope)<\/td>\n<td>Ops and support teams<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps\/engineering services (verify OCI specialization)<\/td>\n<td>Delivery support, integration adjacent platform work<\/td>\n<td>Environment setup, CI\/CD pipelines for integration artifacts, operational playbooks<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>Training + consulting (verify consulting offerings)<\/td>\n<td>Enablement and delivery acceleration<\/td>\n<td>Skills uplift for teams operating Oracle Cloud integrations; governance standards<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting services (verify OCI scope)<\/td>\n<td>Cloud ops, automation, reliability<\/td>\n<td>Monitoring strategy, incident response runbooks, automation around integration operations<\/td>\n<td>https:\/\/devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before Integration Generation 2<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI basics:<\/li>\n<li>Compartments, IAM policies, groups<\/li>\n<li>Networking fundamentals (VCN, subnets, security lists\/NSGs)<\/li>\n<li>Tagging and cost management<\/li>\n<li>Integration fundamentals:<\/li>\n<li>REST\/HTTP basics (methods, headers, status codes)<\/li>\n<li>JSON and XML basics<\/li>\n<li>Authentication concepts (basic auth, OAuth 2.0)<\/li>\n<li>Operational basics:<\/li>\n<li>Logging\/monitoring concepts<\/li>\n<li>Incident handling and root cause analysis<\/li>\n<li>Change management fundamentals<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after Integration Generation 2<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API management patterns (rate limiting, developer onboarding, WAF)<\/li>\n<li>Event-driven design (queues\/streams) for decoupling and resilience<\/li>\n<li>CI\/CD for integration artifacts (export\/import pipelines, environment promotion)<\/li>\n<li>Advanced security:<\/li>\n<li>Private connectivity patterns<\/li>\n<li>Secrets rotation automation<\/li>\n<li>Compliance controls and audit readiness<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Integration Engineer \/ iPaaS Developer<\/li>\n<li>Cloud Solutions Architect<\/li>\n<li>Platform Engineer (integration platform owner)<\/li>\n<li>DevOps Engineer \/ SRE supporting integration operations<\/li>\n<li>Enterprise Application Integration (EAI) specialist<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (if available)<\/h3>\n\n\n\n<p>Oracle\u2019s certification offerings change over time. Check Oracle University and official certification pages for the current roadmap:\n&#8211; Oracle University: https:\/\/education.oracle.com\/<br\/>\n&#8211; Oracle Certifications: https:\/\/education.oracle.com\/oracle-certification<\/p>\n\n\n\n<p>If there is a specific Oracle Integration certification track, <strong>verify in official Oracle University pages<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build a \u201cCRM to ERP account sync\u201d scheduled integration with watermarking and idempotency<\/li>\n<li>Create a REST fa\u00e7ade that aggregates 2\u20133 backend APIs<\/li>\n<li>Implement a partner routing integration using lookups and per-partner endpoints<\/li>\n<li>Build an error-handling pattern:<\/li>\n<li>transient retry<\/li>\n<li>persistent error notification<\/li>\n<li>manual reprocess procedure<\/li>\n<li>Design a private endpoint deployment (if supported) and document network rules and IAM policies<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Adapter<\/strong>: A connector that knows how to communicate with a specific application or protocol (REST, SOAP, SaaS apps, DB).<\/li>\n<li><strong>App-driven integration<\/strong>: A flow triggered by an inbound request (commonly REST) and often returns a response.<\/li>\n<li><strong>Compartment (OCI)<\/strong>: A logical container used for organizing resources and applying IAM policies.<\/li>\n<li><strong>Connection<\/strong>: A reusable configuration in Oracle Integration defining endpoint details and credentials for an adapter.<\/li>\n<li><strong>Connectivity Agent<\/strong>: A runtime component deployed in a private network to allow Integration to access private systems securely.<\/li>\n<li><strong>Endpoint<\/strong>: The URL exposed by an integration (trigger) or called by an integration (invoke).<\/li>\n<li><strong>Idempotency<\/strong>: The property that repeating an operation produces the same result (critical for retries).<\/li>\n<li><strong>Integration (flow)<\/strong>: The executable process you design with triggers, actions, mappings, and logic.<\/li>\n<li><strong>Instance<\/strong>: The provisioned Integration Generation 2 environment running in an OCI region.<\/li>\n<li><strong>Invoke<\/strong>: An action step that calls a target system.<\/li>\n<li><strong>Lookup<\/strong>: A mapping table used to translate codes\/values and route logic without hardcoding.<\/li>\n<li><strong>Monitoring\/Tracking<\/strong>: Operational features that let you inspect integration runs, errors, and performance.<\/li>\n<li><strong>Private endpoint<\/strong>: A deployment model where the service endpoint is reachable only within private networking boundaries (availability varies; verify).<\/li>\n<li><strong>REST trigger<\/strong>: An inbound REST API endpoint that starts an integration.<\/li>\n<li><strong>Watermark<\/strong>: A stored \u201clast processed\u201d marker (timestamp or ID) used in polling to avoid reprocessing.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>Integration Generation 2 in <strong>Oracle Cloud<\/strong> is a managed iPaaS runtime for designing, executing, and operating integrations using adapters, orchestration, transformation, and built-in monitoring. It matters because it reduces the cost and risk of point-to-point integration sprawl while improving governance, security, and operational visibility.<\/p>\n\n\n\n<p>Architecturally, it fits as an enterprise integration hub\u2014often between Oracle SaaS, non-Oracle SaaS, on-prem systems, and custom APIs\u2014using OCI IAM and compartment governance. Cost depends on the edition\/SKU and your capacity\/usage model, so you should estimate with Oracle\u2019s pricing pages and calculator rather than assuming a fixed rate. Security success depends on strong IAM, secure inbound authentication, careful payload logging, and (where feasible) private connectivity patterns.<\/p>\n\n\n\n<p>Use Integration Generation 2 when you need governed application integration with visibility and speed. Avoid it for workloads that are primarily streaming-native, ultra-low-latency, or better served by ETL\/replication tools.<\/p>\n\n\n\n<p>Next step: follow the hands-on lab again with a <strong>secured REST trigger<\/strong> and a second environment (test\/prod separation), then build an idempotent scheduled integration with robust error handling and monitoring runbooks.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Integration<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48,62],"tags":[],"class_list":["post-921","post","type-post","status-publish","format-standard","hentry","category-integration","category-oracle-cloud"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=921"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/921\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}