31 Commits

Author SHA1 Message Date
root
4552ef7226 Enhance ADB-S to ADB-D business cases 2026-05-08 15:25:21 -03:00
root
75203e7196 Document Gitea↔GitHub dual-push setup for agents
origin's push URL list spans both remotes (Gitea authoritative, GitHub mirror), so a single `git push origin main` updates both. The setup lives in `.git/config` and isn't tracked, so we explicitly document the reproduction commands plus agent guidance: propose dual-push after commits, never force-push Gitea without OK, and the recovery pattern for divergence.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 23:25:47 -03:00
root
c22ba64bdb Brand icons (Slack/Jira) in diagrams + BOM comparison deck
- brand_icon_catalog: shared resolver for non-OCI vendor assets (Slack, Jira, Jira Service Management) under kb/diagram/brand-icons; official > fallback; never hits the network at render time.
- oci_diagram_gen + oci_pptx_diagram_gen: services and external actors accept `brand_icon:`, unlocking real multicloud / SaaS topologies beyond Oracle stencils.
- build_bom_comparison_deck: customer-facing Oracle FY26 deck that compares N BOM specs with native PowerPoint charts and live SKU pricing.
- README + SKILL.md: document the new capabilities and ship copy/paste demo prompts (native .pptx diagram, Slack→OIC→Jira flow, multicloud Postgres↔ADB-S, discount-aware BOM).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 23:23:50 -03:00
root
7ea17b2f9e Skill: catalog-first pricing, centralised disclaimer, deck verification
Six fixes after a Codex transcript that scraped oracle.com for SKUs already
in kb/pricing/oci-sku-catalog.yaml. New option-4 cost-estimate flow with a
"catalog first, web never" rule, staleness gate, and miss policy; unconditional
Cookbook scope (any pricing or SKU work, not just specific tool calls); hard
no-WebSearch rule under "What You Do NOT Do"; disclaimer field extended with
reference-only / no-client-discount clauses and referenced from options 4/8/13
(single source of truth — oci_bom_gen.py already consumes it); tightened menu
hints separating option 4 (quick comparison while you scope) from option 13
(formal .xlsx artefact you send); structural deck verification step for
Linux/WSL where PowerPoint binary isn't available.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 23:23:48 -03:00
root
ee15e1f45e Add third-party brand icon support 2026-04-27 15:15:31 -03:00
root
a032e7980b Fix drawio OIC icon resolution 2026-04-27 13:07:38 -03:00
root
198861f533 PPTX icon resolver: skip degraded refs from stencil buckets
Symptom on the GCP→OCI PostgreSQL deck: the OCI PostgreSQL icon bbox
rendered as empty space — labels and surrounding ADs all visible,
but no icon where the postgres stencil should be.

Root cause: ``_lookup_icon_ref`` returned the first hit from
``stencils.database_icons`` without checking it was cloneable.
The bucket happens to ship one degraded entry — ``database`` is
``tag=sp`` with ``bbox=None`` (a label-strip leaf, not the real
icon group) — so ``_clone_translated_block`` emitted a zero-size
shape. The 19 viable refs for the same key in
``shape_library.entries`` were ignored because the early-return in
``database_icons`` won.

Fix: extract a shared ``_is_viable_ref`` predicate (slide_path +
child_index/node_path + non-empty bbox + supported tag) and apply
it before returning from BOTH stencil buckets (``database_icons``,
``sample_icon_refs``). On miss, fall through to
``shape_library_entries`` where ``_select_preferred_ref`` already
filtered the same way.

Affects every alias that routes to a degraded stencil entry —
``postgresql`` / ``postgres`` / ``oci_postgresql`` were the obvious
fallout because they all alias to ``database``. The Architecture
Center reconstructions on shape-library-only slugs were unaffected.

Verified by re-rendering examples/output-gcp-virginia-oci-postgres-
adbs-clone/*.pptx — the OCI PostgreSQL bbox now shows the icon
(teal stencil + "Database" intrinsic caption) consistently with
the ADB-S and Refreshable Clone bboxes next to it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 11:03:23 -03:00
root
7f8cba7f30 Skill: kill the lookup-loop time-sink (3 fixes from Codex transcript)
Root cause observed in a real Codex session: the agent burned ~3min
on `make venv` + 4 sequential `make diagram-lookup` queries trying
to find a non-existent ref-arch (OCI PostgreSQL accessed FROM GCP
via Cross-Cloud Interconnect). The catalog has 123 entries; if two
honest queries can't surface a topology, none exists — but nothing
in the skill said "stop." Three coordinated fixes:

1) Makefile: `make venv` is now idempotent.
   Marker file `.venv/.deps-installed` keyed off `requirements.txt`
   mtime — the second `make venv` in a row is a 26ms no-op (was
   1m53s on a Codex sandbox, paid every turn). Force a rebuild with
   `rm .venv/.deps-installed`.

2) kb/architecture-center/catalog.yaml: new `known_gaps` block.
   Surfaced by the lookup tool as a top-of-output banner whenever
   the (synonym-expanded) query tokens match any one of a gap's
   `triggers` token sets. Two gaps seeded from real engagements:

     - gcp-to-oci-native-services — OCI PostgreSQL/OKE/Cache/etc.
       reached FROM GCP via Cross-Cloud Interconnect (the
       Database@Google Cloud entries are the OPPOSITE direction).

     - newer-oci-services-without-icon — OCI Cache (Redis/Valkey)
       and OCI PostgreSQL post-v24.2-toolkit; no ref-arch, no
       toolkit icon, fall back to generic stencil + explicit label.

   Each gap's `notice:` is a copy-paste recommended composition so
   the agent doesn't have to invent a strategy.

3) tools/archcenter_pattern_lookup.py: detects + surfaces gaps.
   `lookup()` now returns `{"matches": ..., "gaps": ...}`. The
   text printer emits a "⚠ KNOWN GAP — <id>" banner with the
   notice block ABOVE the score-based top-K, so the agent sees
   the stop-and-compose signal before ever scrolling to results.
   YAML output mode mirrors the same shape under `gaps:`.

4) SKILL.md (option 2 step 1) + Codex copy via sync-skill.
   New explicit rule: "Lookup budget: max 2 queries — never loop."
   Documents the gap banner, the closest-3-then-ask fallback, and
   the prohibition against grasping at a 3rd refinement.

Verified manually:
  - GCP+postgresql query → gap fires
  - "redis ha multi-az" → newer-OCI gap fires
  - "exadata cross region data guard" → no false-positive gap

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 10:46:27 -03:00
root
ff77563133 settings.local.json: extend allowlist for diagram + MCP test workflow
Adds permission entries accumulated during recent work — the local
draw.io.exe path probes used by the fidelity validator, curl probes
against the MCP server (mcp.tech-lad.com) and the Gitea remote
(git.tech-lad.com.br) for status checks, the .githooks/pre-commit
hook so the SKILL.md sync gate runs without a prompt, and a few
read-only awk/grep/curl one-liners hit repeatedly in the SKU /
ref-arch maintenance loop.

Per-machine allowlist only — no behaviour change for other
contributors.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 09:29:50 -03:00
root
1b4828f293 MELI Fraud: case-specific scaffolding scripts (3 chassis variants)
Three one-shot Python scripts that build the MELI Fraud As-Is /
To-Be .drawio pair by cloning an Oracle Architecture Center chassis
and overlaying MELI-specific labels, region renames, and workload
pills. Useful as worked examples of the chassis-then-overlay
transform pattern (drawio_template_transform.DrawioTemplate) that
the diagram procedure recommends:

  • build_meli_fraud_from_adbsplusadbd.py — clones the locally
    accepted ATP-S/ATP-D side-by-side reference and partitions cells
    into AS-IS / TO-BE panels by x-coordinate.
  • build_meli_fraud_from_crossregion.py — uses Oracle's
    exadata-dedicated-cross-region-dataguard ref-arch (two regions
    with DRG + RPC + Data Guard already drawn) as chassis and only
    overlays MELI-specific pills.
  • build_meli_fraud_from_templates.py — combines the in-region and
    cross-region Exadata ref-archs and clones the in-region
    topology to the right for the Montreal DR.

All three honour the standing rule: do not edit text inside Oracle
SVG stencil shapes — overlay new mxCells in whitespace instead.
Outputs land under examples/output-meli-fraud-adbd-migration/.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 09:29:37 -03:00
root
5566a171b0 PPTX: ensure [Content_Types].xml has defaults for every media extension
Symptom: PowerPoint prompted to repair some generated decks. Cause:
when python-pptx (or our native renderer) repacks the .pptx after we
embed Oracle template assets — some of which are SVG-backed —
[Content_Types].xml can lose the Default entry for "svg" (and other
extensions present under ppt/media), which makes Office refuse to
open the file cleanly.

Fix: after writing the deck (and after any native renderer pass),
walk ppt/media, collect the actual extensions in use, and ensure
[Content_Types].xml declares a Default for each one (svg, png, jpg,
jpeg, gif, bmp, tiff, emf, wmf, ico, webp). Repack only when at
least one new Default was added — no-op fast path otherwise.

Lines up with the existing field rule: every embedded media
extension must be declared in [Content_Types].xml Defaults, or
PowerPoint flags the file as corrupt.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 09:29:18 -03:00
root
eef213612c Aliases for newer OCI services without toolkit icons (Redis, PostgreSQL)
Diego pointed at examples/output-ashburn-redis-oke and asked: does
Oracle ship a Redis icon for drawio? Answer: NO. Confirmed against
both libraries:
  - kb/diagram/oci-icons.json (OCI Toolkit v24.2)         → 0 hits
  - kb/diagram/oci-pptx-icons-index.json (OCI_Icons.pptx) → 0 hits
Same for OCI Cache, Valkey, OCI PostgreSQL — all are GA after the
toolkit shipped.

Oracle's own reference architecture
``modernize-app-dev-oci-postgresql-redis-opensearch`` works around
this by embedding inline SVG vector data into ``shape=stencil(...)``
cells — there is no reusable named stencil. The closest reusable
match is the generic ``database`` icon (8 cells in oci-icons.json,
the canonical "Database" stencil).

Persistent fixes:

- TYPE_TO_ICON (PPTX) and ICON_TYPE_ALIASES (drawio) both gain
  aliases for ``redis`` / ``oci_cache`` / ``oci_cache_with_redis`` /
  ``cache`` / ``valkey`` / ``postgresql`` / ``postgres`` /
  ``oci_postgresql`` → ``database``. Plus ``opensearch`` →
  ``database_opensearch`` (which exists) on the PPTX side.

- SKILL.md option 2 step 3 documents the convention: when an OCI
  service doesn't have a toolkit icon, use the generic stencil and
  pair with an explicit ``label:`` carrying the real service name
  (e.g. ``label: "OCI Cache (Redis)"``). When Oracle ships a v25+
  toolkit with these icons, update oci-icons.json + the alias tables
  and the next render picks up the real icon automatically.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 00:00:17 -03:00
root
b77a855a3e Extractor: drawio → absolute_layout YAML scaffold (107/132 cached)
Closes the procedural hole that kept making Codex sessions fall back
to ``examples/`` for YAML scaffolding even after the SKILL forbade it.

The lookup tool returns a canonical Oracle ``.drawio`` as the geometry
source, but the agent had no YAML version of that geometry to copy —
the .drawio is XML with stencil-encoded icons. Without a scaffold,
agents reverse-engineered or fell back to ``examples/`` (which is
forbidden but happened anyway because the alternative was painful).

New tool ``tools/archcenter_drawio_to_template.py`` extracts:
  • canvas dimensions
  • containers (region / vcn / ad / subnet) classified by stroke /
    fill style markers
  • service bounding boxes with ``type: TODO_identify`` (the icon
    type is encoded in stencil bytes — agent fills it from the
    renderer's TYPE_TO_ICON aliases when authoring the spec)
  • edge waypoints (source, target, points)

Output lands at ``kb/diagram/assets/archcenter-refs/<slug>/_template.yaml``
next to the .drawio. Lookup now surfaces it as
``cached: yaml=<path>`` so the agent has a one-step "copy this YAML
and adapt" path.

Ran across all 132 cached folders: 107 templates emitted, 24 had no
.drawio (zip didn't ship one), 1 already cached.

Other persistent guardrails added in this commit:

- SKILL.md option 2 step 3: explicit reminder that valid ``type:``
  values come from ``TYPE_TO_ICON`` / ``ICON_TYPE_ALIASES`` in the
  renderer source plus the icon-index JSON files. Do NOT grep
  ``examples/`` for ``type:`` — that's where the previous Codex
  session was looking, against the rule.

- ``make archcenter-templates-refresh`` Makefile target.

- The lookup index now also indexes ``_template.yaml`` per slug.

- Auto-extracted templates committed under
  ``kb/diagram/assets/archcenter-refs/*/_template.yaml`` so a fresh
  clone has them on first lookup (no extraction step needed).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 23:56:29 -03:00
root
5b8a6ad5ec Lookup index auto-invalidates on KB updates + manual rebuild flag
Diego asked: does the persisted ``archcenter-refs-index.json`` auto-
update when the KB is updated? Partially — mtime on the cache root
catches add/remove of subdirs (POSIX), but NOT changes to files
INSIDE existing subdirs (description.md added, .drawio replaced).

Two fixes:

1. Both KB-update tools now ``touch`` ``kb/diagram/assets/archcenter-refs``
   when they finish a run that produced changes:
   - ``archcenter_description_fetcher.py`` after fetched > 0
   - ``archcenter_zip_downloader.py`` after downloaded / extract /
     overwrite events
   The touch bumps the parent mtime, which the next lookup detects
   and uses to rebuild its persisted index. Closes the silent-drift
   case where description.md fetches landed but the index didn't
   notice.

2. ``archcenter_pattern_lookup.py --rebuild-index`` flag — escape
   hatch for manual KB edits (someone replaces a cached .drawio by
   hand) where neither tool ran. Removes the stale index file before
   the lookup, forcing a cold rebuild.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 23:38:29 -03:00
root
c46219468f Lookup speed (78s → 1s) + drawio ADB-S/RC alias coverage
Two persistent fixes flagged from a Codex session:

1. ``archcenter_pattern_lookup`` ran in 78 s on WSL2 because:
   - ``_cached_assets`` did ``iterdir`` + recursive ``rglob`` over the
     whole 113-folder cache for EVERY catalog entry (123x).
   - ``_patterns_for`` reloaded ``reference-patterns.yaml`` for every
     match (125 reloads = ~5 s).
   - Description text from disk was read for every entry, even those
     that wouldn't make the top-K.

   Now: one-shot scan of the cache dir cached in-memory AND persisted
   to ``kb/diagram/assets/archcenter-refs-index.json`` keyed by mtime;
   patterns YAML loaded once and indexed by URL; a two-pass scoring
   pipeline that only reads description text + cached_assets +
   visual_patterns for the top-K candidates instead of every entry.
   Result: cold run 14 s (one-time index build), warm run 1.1 s.

2. The drawio renderer had no alias for ``adb_s`` / ``adb_serverless``
   / ``autonomous_database_serverless`` / ``refreshable_clone`` —
   Codex's spec used ``type: adb_s`` and the icon never resolved.
   Mapped them to ``autonomous_database`` (the canonical 7-cell
   stencil shipped by the OCI Toolkit), with ``adb_d`` as fallback.
   Same proactive expansion in the drawio side that the PPTX side
   already got (oci_goldengate, dynamic_routing_gateway, atp/adw,
   kms/secret, identity/iam, iac/terraform, oac/oic, kafka).

The persisted lookup index is committed so a fresh clone hits warm
performance on first ``make diagram-lookup``.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 23:33:40 -03:00
root
82d09aeee6 PPTX icon resolver: 50+ proactive aliases + menu-mode 'no code edits' rule
Diego flagged two patterns from the Codex session:

1. Aliases for natural-language slugs were missing — Codex authored
   ``type: refreshable_clone`` and ``type: oci_goldengate`` and the
   resolver returned None for both. Beyond fixing those two, expand
   the table proactively: 50+ slugs an SA / agent might naturally
   reach for (atp, alb, nlb, apigw, lambda, kms, secret, kafka,
   alarm, email, identity, iam, iac, terraform, oac, oic, language /
   speech / vision, rpc / lpg / cpe, health_check, tags, etc.) all
   mapped to canonical icon entries that exist in
   kb/diagram/oci-pptx-icons-index.json.

2. Codex was editing tools/oci_deck_gen.py and the deck-spec while
   fulfilling a menu-driven option-2 request — going off the
   procedure to "fix" perceived bugs in the renderer. New rule in
   SKILL.md § What You Do NOT Do: when the user is in menu mode
   (options 1–14), the agent USES the existing tools, never modifies
   them. Tool gaps (missing aliases, broken paths) get surfaced as
   end-of-reply follow-ups for a separate developer-mode session.
   Two narrow exceptions kept: kb/field-findings/tracker.yaml via
   option 11, and writing customer spec/output YAML under examples/.

Codex copy auto-synced via the pre-commit hook.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 23:18:22 -03:00
root
0b6ca3b776 SKILL.md option 2: clarify cached .drawio vs examples/ as references
Diego flagged that Codex, when authoring an absolute_layout, fell
back to grepping ``examples/`` for AWS/OCI multicloud patterns even
though the procedure said not to. The reason was real: the lookup
tool returns a cached ``.drawio`` (canonical Oracle geometry) but
no canonical ``absolute_layout.yaml`` template, so the agent had no
YAML scaffold to copy the spec shape from.

Tighten the rule rather than ban it outright:

  • Cached ``.drawio`` = GEOMETRY source. Container nesting,
    padding, AD/subnet placement, icon choices come from there.
  • ``examples/`` = YAML scaffold reference ONLY (which fields
    exist, how connections are authored, fontSize unit). Do NOT
    copy geometry numbers — those came from a different topology.

Rule of thumb baked into the SKILL: if you're copying (x, y, w, h)
from examples/, stop and copy from the cached .drawio instead.

(Codex copy auto-synced via the pre-commit hook installed earlier.)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 23:04:26 -03:00
root
357dd10670 SKILL.md sync: reject isolated edits to the .agents/ copy
Diego asked the right question: what if someone edits the Codex
side directly? Until now the sync was unidirectional (root →
.agents/) but the hook only fired when root SKILL.md was staged —
isolated .agents/ edits sneaked past the hook locally and only got
caught by CI's --check. A future ``make sync-skill`` would then
silently destroy them.

Hardened both layers to reject the asymmetric case at the moment
of the commit/PR:

- Pre-commit hook now classifies the staged set and REJECTS
  commits that stage .agents/skills/.../SKILL.md in isolation,
  with a step-by-step message: move the edit into root SKILL.md
  and re-stage. The hook still auto-syncs when root SKILL.md is
  staged.

- CI gate adds a second step (PR-only) that diffs the PR's base
  against head; if .agents/ moved but root SKILL.md didn't, fails
  with an actionable error before the build proceeds.

- README documents the direction explicitly: edits land in root
  SKILL.md; .agents/ is auto-generated; Codex-specific instructions
  belong in AGENTS.md, not in the SKILL.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 23:00:51 -03:00
root
fba2d23d5d SKILL.md sync: pre-commit hook + CI gate + make install-hooks
Three-layer defense to keep root SKILL.md (Claude Code) and
.agents/skills/oci-deal-accelerator/SKILL.md (Codex) byte-aligned.
Without this, Claude Code and Codex can drift and give the user
contradictory instructions — exactly the failure mode that produced
the workload-driven-mode incident on 2026-04-25.

Layers (least → most enforcement):

1. Local pre-commit hook (.githooks/pre-commit, opt-in via
   ``make install-hooks`` which sets core.hooksPath). When SKILL.md
   is staged, auto-runs scripts/sync-skill.py and stages the
   regenerated .agents/ copy in the same commit. Idempotent.

2. ``make install-hooks`` target + a tip line in ``make venv``'s
   output so any new clone discovers the hook setup.

3. CI gate (.gitea/workflows/skill-sync.yaml) on every push/PR
   touching SKILL.md or the .agents/ copy. Runs
   ``scripts/sync-skill.py --check`` and fails the build on drift.
   Catches anyone who skipped the hook.

README documents the rationale and the three layers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 22:58:33 -03:00
root
d86adaf7cc Diagram procedure: forbid workload-driven shape, warn at runtime
The Codex session showed why the workload-driven mode is the wrong
default. Codex authored a spec under
``tenancy → regions → compartments → services`` (the documented
"workload-driven" mode), generated two .drawio files, and reported
success. The output was unusable: services rendered as colored
rectangles with text instead of OCI icon stencils, connector text
went into the edge value (forbidden by the connector-label rule),
and the spec validator never ran because it only fires on
``absolute_layout`` blocks.

Diego: "los drawio son horribles, por que sucede eso?".

Three persistent fixes:

1. SKILL.md option 2 now says ``absolute_layout`` is REQUIRED for
   step 3, calls out workload-driven explicitly as forbidden, and
   explains *why* (no stencils, no validator).

2. docs/skill/output-formats.md § Diagram modes is rewritten — mode
   1 is ``absolute_layout`` (REQUIRED), mode 2 is workload-driven
   (DEPRECATED, back-compat only). Removes the "two acceptable
   shapes" framing that let Codex pick the wrong one.

3. ``oci_diagram_gen.py`` now prints a loud stderr WARNING when a
   spec takes the workload-driven path, naming the procedure docs.
   Catches any agent that skipped reading SKILL.md before generating.

Codex copy synced via ``make sync-skill``.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 22:54:03 -03:00
root
a1ad3a6fa1 SKILL.md option 2: explicit format question + numbered procedure steps
A Codex session showed the gap: option 2's prose asked the user to
describe the architecture but only mentioned the output formats in
passing ("if you want X / if you want Y"), so the agent never asked
which format(s). Codex also skipped the reference-architecture lookup
and went straight to grepping ``examples/`` for pre-existing specs —
``examples/`` is previous user output, not the authoritative Oracle
catalog.

Two persistent fixes for any agent (Claude Code, Codex, Cursor, …):

1. Option 2 now asks two explicit questions in one message and waits
   for both answers before doing anything: (1) describe / paste spec,
   (2) pick output format(s) — drawio, native PPTX, or both.

2. The procedure is restated as a numbered list directly under
   option 2 (no longer a single-sentence reference to
   docs/skill/output-formats.md). Step 1 explicitly says use
   ``archcenter_pattern_lookup.py`` against the catalog and explicitly
   forbids using ``examples/`` as a reference source.

Synced to the Codex copy at .agents/skills/oci-deal-accelerator/SKILL.md
via ``make sync-skill`` so both agents see the same instructions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 22:49:47 -03:00
root
a0a059887a Deck generator: honor output.render_standard_sections, fix principles overlap
Two bugs flagged on the MySQL HeatWave HA example (2026-04-25 round 5):

1. ``render_standard_sections: false`` under the ``output:`` block was
   silently ignored — the generator only checked the top-level key.
   Result: every spec that put the flag where the docs suggest got the
   full standard deck PLUS the custom slide, producing a duplicated
   "Architecture Overview" + dedicated diagram slide. Now the
   generator honors both locations.

2. Architecture Principles slide allocated only 0.4" per bullet —
   exactly one 11pt line. Wrapping principle summaries (e.g. D-03
   Use-Case Fit's 125-char text) overflowed into the next bullet's
   slot, visually overlapping D-02. Diego: "D-03 esta superpuesto a
   D-02, lo mismo pasa en otras columnas". Bumped per-item height to
   0.95" — fits 2-3 wrapped lines with breathing room.

3. PPTX rasterizer (oci_pptx_render.py) gained word-wrap so the
   local PNG preview matches what real PowerPoint draws. Without it,
   long text rendered on a single line off the column and the
   principles fix looked broken in preview when it was actually fine
   in PowerPoint.

Persistent: all three fixes apply to every deck the skill generates.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 22:44:40 -03:00
root
68d1753a74 Spec validator: padding on all 4 edges + connector-over-label check
Closes the gap between what the validator catches and what Diego
flagged on the MySQL HeatWave HA example (2026-04-25 round 4):

- CONTAINER_PADDING_VIOLATION now checks all four edges (top / bottom /
  left / right). Previously only bottom — DB Subnet's left/right edges
  touching the AD borders went unflagged.

- CONNECTOR_OVER_LABEL now runs at SPEC level (was post-render drawio
  only). Catches "Network Load Balancer label sits below the arrows so
  the arrows cross it" before either renderer emits anything; covers
  the PPTX path too.

  Implemented via Liang-Barsky line-rect clipping on every connector
  segment vs every free-floating label bbox.

Renderer policies persist for every new diagram (bent connectors,
icon-group preference, mysql aliases). Spec-level rules are now
enforced earlier and on both render paths, so a spec authored against
the procedure will pass before any artifact is produced.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 22:11:02 -03:00
root
3fb832e578 PPTX connectors: emit native bentConnector2/3/5 instead of disjoint lines
Spec authors hand the renderer a polyline like
``points: [[210,280],[400,280],[700,130]]``. The previous code emitted
one ``prst="line"`` shape per segment, so the elbow was two separate
straight lines that PowerPoint cannot recognise as a connected path.

The OCI template (kb/diagram/assets/OCI_Icons.pptx) uses native
PowerPoint bent connectors instead — 98 ``straightConnector1`` plus
22 ``bentConnector2/3/5`` plus 15 ``line`` across 48 slides. Match
that convention:

  • 2 points  → straightConnector1 (one segment, unchanged)
  • 3 points  → bentConnector2     (one elbow)
  • 4 points  → bentConnector3     (S-shape, two elbows)
  • 5+ points → bentConnector5     (four elbows)

The rasterizer (oci_pptx_render.py) now also understands bentConnectorN
so the local PNG preview matches what real PowerPoint draws — without
this it rendered every connector as one straight diagonal regardless of
the prst.

Persistent: applies to every absolute_layout connector for every spec,
not a per-case patch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 21:49:39 -03:00
root
e384e627d1 PPTX icon resolver: prefer full icon group over text-strip variant
OCI_Icons.pptx ships both a full icon group (tag=grpSp, ~0.7" tall)
and a tiny "label strip" (tag=sp, ~0.2" tall) under the same slug for
many services. The previous resolver picked whichever came first in
the index, which for 'mysql' returned the text strip — so the PPTX
diagram showed a label-only shape instead of the dolphin/HeatWave
icon, while drawio rendered the proper stencil.

Two fixes, both persistent (apply to every icon family, not just MySQL):

- TYPE_TO_ICON for mysql/heatwave now lists 'mysql_heatwave' (the
  grpSp) before 'mysql' (the strip).
- _select_preferred_ref now filters viable refs to those that are
  either grpSp/pic OR have a bbox ≥0.4"x0.4" — text strips fall out
  before the scoring function runs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 21:42:21 -03:00
root
e5a1959585 Diagram tooling: make targets, CI gate, LLM-rewrite hook, refresh docs
Implements points 3–8 of the post-procedure follow-up.

- Make targets: diagram-lookup, diagram-validate-spec, diagram-spec-audit,
  archcenter-descriptions-refresh, archcenter-smoke. Promotes the new
  tools out of "remember the CLI" into discoverable build-automation.
- .gitea/workflows/diagram-validators.yaml — runs spec validator across
  every absolute_layout spec on push/PR, plus a drawio re-render smoke
  test on the canonical example. Hard fail blocks merges.
- archcenter_pattern_lookup --llm-rewrite — opt-in (ANTHROPIC_API_KEY
  env var, mirroring DRAWIO_EXE pattern). Rewrites natural-language
  queries into canonical OCI terminology before scoring; falls back to
  the original query on any error.
- diagram_spec_validator — documents the policy on legacy archcenter
  reproductions: LABEL_NEAR_PARENT_EDGE stays a warning so verbatim
  reconstructions don't lose pixel-fidelity from cosmetic edits.
- README — documents the asset refresh procedure (downloader +
  description fetcher are idempotent, refresh quarterly).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 21:37:28 -03:00
root
b30a4f0d32 Diagram generation: ref-arch-driven procedure + spec validator + KB enrichment
The diagram path now follows a documented standard procedure (lookup
the closest Oracle Architecture Center reference → confirm components
→ author absolute_layout → spec validator → render → visually verify)
and ships persistent guardrails so layout regressions can't recur.

Persistent procedure changes (apply to all users, all sessions):
- tools/diagram_spec_validator.py — geometry checks (CONTAINER_TOO_THIN,
  CONTAINER_PADDING_VIOLATION, LABEL_OVERFLOW_PARENT) run BEFORE either
  renderer (drawio + PPTX). Catches the subnet-collapse / label-overflow
  bugs that the post-render drawio validator missed.
- tools/oci_diagram_gen.py + tools/oci_pptx_diagram_gen.py — call the
  spec validator before emitting any output. Adds mysql / mysql_heatwave
  type aliases.
- tools/archcenter_pattern_lookup.py — scores against cached page
  descriptions (not just the 1-line summary), supports --queries for
  multi-fragment composition, and applies synonym expansion via
  kb/architecture-center/synonyms.yaml so "LB HA cross AD" matches
  "load balancer high availability availability domain".
- kb/architecture-center/synonyms.yaml — canonical synonym table
  (load balancer, autonomous database, data guard, …) used by the
  lookup scorer.

KB enrichment:
- tools/archcenter_description_fetcher.py + 121 cached _description.md
  under kb/diagram/assets/archcenter-refs/<slug>/. Removes the runtime
  dependency on docs.oracle.com when authoring specs and feeds the
  pattern-lookup scorer.
- 110+ cached .drawio / .svg / .png references for offline reuse,
  plus the OCI Toolkit v24.2 import (kb/diagram/assets/oci-toolkit-drawio).

Documentation:
- docs/skill/output-formats.md — new "Standard diagram-generation
  procedure (MANDATORY)" + geometry rules + the new validator entry.
- SKILL.md option 2 — references the mandatory procedure.
- README.md — describes the spec validator, archcenter_pattern_lookup
  and description fetcher, and updates the KB-health table.

Tooling that backs the procedure (cumulative across recent sessions):
tools/archcenter_case_runner.py, archcenter_batch_driver.py,
archcenter_zip_downloader.py, drawio_visual_validator.py,
drawio_fidelity_eval.py, harvest_drawio_icon.py, import_oci_library.py,
oci_pptx_diagram_gen.py, oci_pptx_render.py, refresh_pptx_icon_index.py.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 21:15:21 -03:00
root
2491c38d4b Fail-fast and log HTTP response on PR/issue creation
Previous curl calls ignored exit codes — PR/issue creation was silently
failing (branch got pushed but no PR/issue landed) while the step reported
green. Now each curl captures the response body and HTTP status, prints
both for debugging, and exits non-zero if status != 201.

Also dropped the labels field from the issue payload — Gitea rejects
issue creation when referenced labels don't exist in the repo, which
may have contributed to the silent failure. Labels can be added
manually post-creation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 17:45:12 -03:00
d9b1bb52a4 update ADB serverless KB for AI Lakehouse workload 2026-04-24 15:50:05 -03:00
root
9fbe05a6a5 Use per-run branch name to avoid push collisions
Prior run pushed automation/sku-refresh-2026-04-24 successfully but
failed before opening the PR (issue-creation bug, now fixed). On the
next run, main has moved, so a new commit on the same branch name has
a different parent → non-fast-forward rejection.

Append ${{ github.run_number }} to make the branch unique per workflow
invocation. Orphan branches left behind can be cleaned up after their
PRs are merged/closed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 12:45:57 -03:00
root
9b4d04cf34 Make discover count machine-readable for CI parsing
The workflow's grep-on-free-text approach was fragile: local run correctly
extracted 162, but in the CI run the 'Open issue' step was skipped, meaning
new_count ended up as 0 after parsing. Likely causes: stdout buffering,
color codes, or shell differences between local and the Gitea runner's
shell.

Fix: tools/refresh_sku_catalog.py --discover now emits a deterministic
last-line marker `DISCOVER_MISSING_COUNT=<n>`. The workflow parses that
with sed (anchored, unambiguous) instead of the human-facing summary
line. Also added a diagnostic echo so the parsed value shows up in CI
logs for future debugging.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 12:43:06 -03:00
776 changed files with 453579 additions and 1139 deletions

View File

@@ -17,32 +17,54 @@ You follow the **Oracle ECAL framework** (Define → Design → Deliver) to prod
When the user starts a conversation without providing discovery notes or a specific request, present the welcome message and capability menu.
### Pre-flight: KB freshness check
### Pre-flight checks
**Before showing the welcome message**, run `make kb-check 2>/dev/null` and parse the JSON output. Behavior based on the result:
Run these checks silently **before** showing the welcome message. **CRITICAL:** Never show command execution, tool output, or errors to the user. If any check fails, silently skip it and proceed to the welcome message. These checks are informational — they NEVER block the user.
- **`stale_count == 0`** → proceed directly to the welcome message. No banner.
- **`stale_count > 0` and at least one file has `refreshable: true`** → prepend this banner above the menu and ask the user inline:
#### Check 1: KB changelog banner
Read the file `kb/CHANGELOG.md` and extract the **most recent date and first bullet point**. If the file exists and has entries, prepend a one-line banner above the welcome message:
```
📢 KB updated (<date>): <first bullet summary>
```
Example: `📢 KB updated (Apr 14): Diagram generator calibrated from 37 Oracle ref architectures`
If the file is missing or empty, skip — no banner.
#### Check 2: Local repo updates (git users only)
Run `git fetch --dry-run origin main 2>/dev/null`. If the output contains any text (meaning there are remote commits not yet pulled), prepend this banner:
```
📢 KB updates available — run `git pull` to get latest prices and fixes.
```
If the command fails (not a git repo, no network, MCP deployment), silently skip. This check is only relevant for users running the skill from a local git clone.
#### Check 3: KB freshness
Run `make kb-check 2>/dev/null` and parse the JSON output. Behavior:
- **`stale_count == 0`** → no banner.
- **`stale_count > 0` and at least one file has `refreshable: true`** → prepend banner and ask inline:
```
⚠️ KB freshness: <N> file(s) outdated (oldest: <file> — <age_days>d).
<M> can be auto-refreshed (SKU catalog, Architecture Center).
Refresh now before showing the menu? [y/N]
<M> can be auto-refreshed. Refresh now? [y/N]
```
- If the user replies `y` / `yes` / `` → run `make freshness-refresh`, wait for completion, then show the menu.
- If the user replies `n` / anything else → show the menu immediately, with a one-line compact reminder above it: `⚠️ <N> KB file(s) stale — run /freshness or make freshness-refresh later.`
- `y` / `yes` / `` → run `make freshness-refresh`, then show menu.
- Anything else → show menu with one-line reminder: `⚠️ <N> KB file(s) stale — run make freshness-refresh later.`
- **`stale_count > 0` but no file has `refreshable: true`** (only manual files stale) → prepend a non-blocking informational banner above the menu, do NOT ask:
- **`stale_count > 0` but no `refreshable: true`** → non-blocking info banner, then show menu directly:
```
⚠️ KB freshness: <N> file(s) need manual review (oldest: <file> — <age_days>d).
No automated refresh available — see kb/README.md for review process.
```
Then show the menu directly.
**Important**: this check is informational, not gating. If `kb_freshness.py` errors out (exit 2 or missing tool), silently fall back to showing the welcome message — never block the user on tooling failures.
If `make kb-check` errors out (exit ≠ 0, missing make, missing Python, missing tool), **silently skip** — no error output, no banner, no mention of failure.
### Welcome Message
@@ -63,10 +85,10 @@ Present these options as a compact numbered list. Each option has a bold title f
```
DESIGN & PROPOSE
─────────────────
1. 📋 Full proposal — *notes → architecture + deck + diagram + costs*
2. 📐 Architecture diagram — *YAML or description → .drawio*
3. 📊 Slide deck — *architecture → .pptx*
4. 💰 Cost estimate — *services + sizing → PAYG vs BYOL*
1. 📋 Full proposal — *notes → architecture + deck + native PPTX diagram + costs*
2. 📐 Architecture diagram — *description/sketch → .excalidraw → .drawio or native PPTX*
3. 📊 Slide deck — *architecture → .pptx with native OCI diagram*
4. 💰 Cost estimate — *quick PAYG/BYOL comparison while you scope (terminal + optional deck)*
VALIDATE & CHECK
─────────────────
@@ -90,19 +112,78 @@ Present these options as a compact numbered list. Each option has a bold title f
SA TOOLS
─────────────────
13. 📦 BOM generator — *services + quantities → .xlsx Bill of Materials*
13. 📦 BOM generator — *formal .xlsx artefact you send to the customer*
14. 📤 BOM for AppCA — *BOM → .xlsx ready to import into AppCA*
━━━━━━━━━━━━━━━━━━━━━━━
Pick a number, or just describe what you need.
```
### Example Direct Requests
If the user asks for examples, or skips the menu and writes a natural-language request, prompts like these map directly to the capabilities above:
- `Generame un diagrama nativo en .pptx, simple y prolijo, de esta arquitectura: usuarios externos -> load balancer público -> 2 VMs de aplicación en subnet privada -> Autonomous Database Serverless. Quiero que quede presentable para mostrar directo en PowerPoint. No me pidas YAML ni setup adicional.`
- `Sketch this architecture first for Excalidraw: external users -> public load balancer -> private app VMs -> Autonomous Database. Give me a native .excalidraw file so I can review and collaborate before making the formal diagram.`
- `Generate a simple high-level integration diagram for this flow: Slack -> Oracle Integration Cloud (OIC) -> Jira Service Management -> My Oracle Support. Add clear Client, Oracle, and External layers. Use brand icons for Slack and Jira Service Management, and deliver both .drawio and .pptx.`
- `Generate a high-level architecture diagram for this scenario: 1 PostgreSQL in OCI Ashburn, accessed from GCP Virginia through interconnect. PostgreSQL connects internally to 1 Autonomous Database Serverless, which also has 1 refreshable clone in the same region but in a different AD. Deliver both .drawio and .pptx. Keep it simple, executive-friendly, and technically correct.`
- `Gere um BOM em USD para este cenário: PostgreSQL no OCI com 4 OCPU e 500 GB, ADB-S com 200 ECPU e 1 TB BYOL, 1 refreshable clone com o mesmo sizing e FastConnect de 1 Gbps. Aplique 11% de desconto, 12 meses, 24 horas por dia. Quero o arquivo .xlsx e um resumo claro do custo mensal e anual.`
### Behavior Rules
- If the user picks **1**, ask: "Paste your discovery notes (meeting notes, emails, whatever you have)."
- If the user picks **2**, ask: "Describe the architecture you want to diagram, or paste a YAML spec if you have one."
- If the user picks **3**, ask: "Describe the architecture or paste the spec. I'll generate the deck."
- If the user picks **4**, ask: "What services and sizing? (e.g., 'ADB-S 8 OCPU + 2 VMs + FastConnect')"
- If the user picks **2**, ask **two explicit questions** in one message and wait for both answers before doing anything else:
```
1. Describe the architecture you want to diagram (or paste a YAML spec if you have one).
2. Which output format(s) do you want? Pick one or more:
(a) sketch — native .excalidraw whiteboard draft for brainstorming
(b) .drawio — editable technical diagram
(c) .pptx — native Oracle-style PowerPoint diagram/slide
(d) sketch + .drawio
(e) sketch + .pptx
(f) all
```
If the user chooses **sketch only**, create a concise sketch spec and run `python tools/oci_excalidraw_gen.py --spec <sketch-spec.yaml> --output <output-dir>/architecture-sketch.excalidraw`. Save the generated `.excalidraw` file and companion `.md` instructions in the engagement output folder. Present the file list and the simple import/share workflow from the companion `.md` as the primary deliverable. Optionally save `architecture-sketch.mmd` as a secondary source when Mermaid is useful, but the native `.excalidraw` file is the draft artifact. Do not run the formal `absolute_layout` renderer unless the user asks to promote the sketch to `.drawio` or `.pptx`.
If the user chooses **sketch plus formal output**, produce the `.excalidraw` draft first and ask the user to confirm or adjust the intent before formal rendering. If the user explicitly says to generate all outputs without another checkpoint, generate the sketch and continue. If the user later uploads or references an edited `.excalidraw` from Excalidraw.com, treat it as visual discovery/reference input for the formal `.drawio` / `.pptx` flow; do not blindly convert its rough geometry into the final source of truth.
If the user provides an existing `.excalidraw` file and asks to convert it to `.drawio`, default to **Formal OCI diagram** unless they explicitly ask for a literal/whiteboard copy:
- **Hard rule:** do **not** hand-roll draw.io XML with inline Python for this path. Use the repo tools below. If `python` is not available, use `.venv/bin/python` or `python3`; do not fall back to a custom converter.
- **Formal OCI diagram (default)** — run `.venv/bin/python tools/excalidraw_to_oci_diagram.py --input <file.excalidraw> --output <output-dir>/<name>-oci.drawio --spec-output <output-dir>/<name>-oci.yaml`. This extracts the approved sketch intent, writes `*-analysis.yaml` and `*-review.md`, generates an `absolute_layout` YAML, then renders a new Oracle-style `.drawio` through `oci_diagram_gen.py` with OCI containers, icons, connector styles, and validators. For complex sketches (multicloud, hub-spoke, migration/cutover, cross-region DR, multiple regions/VCNs), run the same command with `--mode review` first, inspect/refine the generated analysis/spec, then render.
- **Literal sketch conversion (secondary)** — run `.venv/bin/python tools/excalidraw_to_drawio.py --input <file.excalidraw> --output <output-dir>/<name>-literal.drawio` only when the user asks to preserve the exact whiteboard look. This is an editable bridge artifact and does **not** infer OCI icons/services.
- **Both** — produce the formal OCI `.drawio` first, then the literal bridge if useful for comparison.
For any `.drawio` or `.pptx` output, **follow these steps in order — do NOT skip step 1**:
1. **Reference-architecture lookup.** Run `python tools/archcenter_pattern_lookup.py "<topology keywords>"` against `kb/architecture-center/catalog.yaml` (123 Oracle-curated entries with cached `.drawio` / `_description.md` / `_template.yaml` under `kb/diagram/assets/archcenter-refs/`). Pick the highest-scoring entry whose topology matches.
- **The cached `_template.yaml` is your YAML SCAFFOLD** — auto-extracted from the canonical `.drawio` by `tools/archcenter_drawio_to_template.py`. It carries Oracle's container geometry (region/vcn/ad/subnet bboxes), service positions, and edge waypoints in the `absolute_layout:` shape your spec uses. Copy it as the starting point, rename ids, fill in `type:` for services (the extractor leaves `type: TODO_identify` because the canonical icon TYPE is encoded in stencil bytes — pick the right alias from the renderer's TYPE_TO_ICON), and adapt to the customer's components. Lookup result surfaces it as `cached: yaml=<path>`.
- **The cached `.drawio` is the visual source of truth** if the template extractor missed something — open it (drawio.exe, the SVG companion, or the XML) for the canonical look.
- **Migration/cutover + multicloud templates.** Also check `kb/diagram/templates/catalog.yaml`. Use `renderable_templates` when the user asks for an operational cutover/runbook view (for example ADB-S → ADB-D with OGG forward/reverse replication) instead of a canonical steady-state Architecture Center topology.
- **Do NOT use `examples/` as a geometry source.** `examples/` is previous user output, not authoritative. The `_template.yaml` covers everything `examples/` was being abused for.
- **Lookup budget: max 2 queries — never loop.** If query 1 returns nothing convincing, run ONE refinement (broader phrasing or different keyword angle), then STOP. Re-querying the catalog 3+ times to find a "better" match is the dominant time-sink in this phase — the catalog has 123 entries indexed once; if two passes can't surface a topology match, none exists. Output of the lookup tool also surfaces a **`⚠ KNOWN GAP`** banner at the top whenever the query touches a documented gap (e.g. OCI-native services accessed FROM GCP via Cross-Cloud Interconnect, or OCI Cache/Redis/PostgreSQL as primary subject). When that banner appears, follow its **Recommended composition** verbatim instead of running more queries — it lists the primitives to combine. When NO gap banner appears AND no top-3 entry matches the topology, present the closest 3 to the user with: *"No exact ref-arch matches. Closest hits are X / Y / Z. I can either base the diagram on the closest of these (geometry transfers, service names don't), or compose from `<list specific slugs / patterns>`. Which?"* — let the user pick the chassis instead of guessing.
2. **Pre-generation review.** Confirm the component list with the user (REQUESTED + TECHNICAL DEPENDENCIES per the whitelist).
3. **Author the spec in `absolute_layout` shape** — this is REQUIRED. Do NOT use the legacy workload-driven shape (`tenancy → regions → compartments → services`); it does not resolve OCI icon stencils, does not run through the spec validator, and produces wireframe-looking output (rectangles with text instead of real OCI icons). Every container, service, label, and connection needs explicit `(x, y, w, h)`.
**Where to look up valid `type:` values for services:** the authoritative sources are (1) `TYPE_TO_ICON` in `tools/oci_pptx_diagram_gen.py` (PPTX path) and `ICON_TYPE_ALIASES` in `tools/oci_diagram_gen.py` (drawio path), and (2) the slug keys in `kb/diagram/oci-icons.json` (drawio) and `kb/diagram/oci-pptx-icons-index.json` (PPTX). Do NOT grep `examples/` for `type:` patterns to discover valid slugs — `examples/` are previous user outputs that may use stale or non-canonical slugs. Both renderer files and both index files are exhaustive and current.
**Newer OCI services without a toolkit icon** (OCI Cache with Redis / Valkey, OCI PostgreSQL, etc. — services GA after the v24.2 toolkit shipped): use the generic icon as the canonical fallback (Oracle's own ref archs do the same — they embed custom inline SVG over the generic icon). The renderer's alias tables already route `type: redis` / `cache` / `valkey` / `postgresql` to the generic `database` stencil. Pair with an explicit `label:` carrying the real service name (e.g. `label: "OCI Cache (Redis)"`). When Oracle ships a v25+ toolkit with these icons, update `kb/diagram/oci-icons.json` + the alias tables and the next render uses the real icon automatically.
4. **Spec validator runs automatically** before either renderer (`tools/diagram_spec_validator.py`). It runs ONLY on `absolute_layout` specs — that's another reason workload-driven is forbidden. Fix any errors before re-rendering.
5. **Render.** `oci_diagram_gen.py` for drawio, `oci_deck_gen.py` for PPTX.
6. **Visually verify.** `tools/oci_pptx_render.py` to rasterize, then read the PNG.
Full reference: `docs/skill/output-formats.md` § "Standard diagram-generation procedure (MANDATORY)".
- If the user picks **3**, ask: "Describe the architecture or paste the spec. I'll generate the deck with a native OCI PowerPoint diagram when the architecture is structured enough."
- If the user picks **4**, ask: "What services and sizing? (e.g., 'ADB-S 8 OCPU + 2 VMs + FastConnect'). License model — PAYG, BYOL, or both?"
Then follow the cost-estimate flow:
1. **Catalog first, web never.** `grep` [`kb/pricing/oci-sku-catalog.yaml`](kb/pricing/oci-sku-catalog.yaml) (auto-refreshed, authoritative) for the requested SKUs and consult [`docs/bom-cookbook.md`](docs/bom-cookbook.md) for copy-paste recipes (ExaCS X11M BYOL, ADB-Dedicated, ADB-S + Block, FastConnect, etc.). Use `kb/pricing/compute.yaml` for shape-level lookups. Do NOT reach for WebSearch / WebFetch / `oracle.com` for list prices — the catalog IS the source.
2. **Staleness gate.** Read `last_verified` at the top of the catalog. If >60 days stale, warn the user and offer `python tools/refresh_sku_catalog.py --refresh` before quoting. If <=60 days, proceed without web lookups.
3. **Catalog miss policy.** If a SKU is genuinely absent after `grep` (not "I didn't find it on first try"), state it explicitly, then run `python tools/refresh_sku_catalog.py --refresh` and re-grep. Only if a fresh catalog still doesn't surface it is `oracle.com/cloud/price-list/` an acceptable fallback — and cite the source URL next to the part number.
4. **Source extraction.** When the request references a customer artefact (`.pptx`, BOM, quote), extract the topology / sizing from the artefact first, list each scenario's components, then map to SKUs. Show the mapping (component → SKU) so the SA can audit it.
5. **Quote shape.** Per scenario list: SKU + product name + metric + list price USD + quantity + monthly subtotal. End with total $/month and total $/year. Cite the catalog's `last_verified` date in the output.
6. When both PAYG and BYOL are requested, present them side-by-side (same SKU rows, two price columns). Save the cost estimate to `examples/<customer>-cost-estimate.yaml` and present the formatted table in the terminal.
7. **Disclaimer (mandatory).** Read the `disclaimer:` field from `kb/pricing/oci-sku-catalog.yaml` and append it verbatim — as a footer line under the terminal table, and (if a deck is generated) as a final "Commercial Disclaimer" slide. Do NOT paraphrase or rewrite; the field already carries Oracle's sample-quote boilerplate plus the "reference only / no client-specific discounts" clauses. `tools/oci_bom_gen.py` already reads this field for BOM xlsx output.
8. **Deck verification (if a deck is generated).** Open the produced `.pptx` with `python-pptx` and assert: (a) slide count matches spec, (b) each slide's expected title is present, (c) chart types match what the spec asked for (e.g. `COLUMN_CLUSTERED`, `COLUMN_STACKED`), (d) the disclaimer slide is the last one. Print a one-line `deck OK: <N> slides, titles=[...]` summary so the SA can audit at a glance. Rasterizing to PNG via PowerPoint is not always available on Linux/WSL — structural validation is the floor, not optional.
- If the user picks **5**, ask: "Describe your architecture or paste the spec. I'll run the 5-pillar review." Then follow the WA review flow:
1. Parse input to build a workload profile YAML (flags) and architecture YAML
2. If input is a `.pptx` file, extract text content from all slides to infer architecture and workload context
@@ -121,13 +202,22 @@ Pick a number, or just describe what you need.
1. Parse input into `templates/business-case.yaml` structure
2. Identify business drivers and urgency from discovery notes
3. Estimate TCO comparison using `kb/pricing/oci-sku-catalog.yaml` (live SKU prices), `kb/pricing/compute.yaml` (shape-level), `kb/field-knowledge/pricing-knowledge.yaml` (billing models, BYOL rules, free tiers), and `kb/sizing/*`
4. Calculate ROI and payback period
5. Map value drivers (cost, risk, agility, innovation) with quantified evidence
6. Assess migration risks from `kb/field-knowledge/gotchas.yaml` and do-nothing risks
7. Compare with alternatives using `kb/competitive/*`
8. Generate implementation roadmap based on engagement tier
9. Produce a 8-10 slide deck using Oracle FY26 template (`config/oracle-pptx-layouts.yaml` → `business_case` type)
10. Output: business-case.pptx + business-case.yaml (reusable spec)
4. For ADB-S to ADB-D cases, use the reusable `adbs_to_adbd` model:
- keep workload/billable ECPU demand separate from dedicated physical capacity (`DB nodes × ECPU per DB node`)
- do not assume ADB-D uses 100% physical capacity; show utilization explicitly
- keep workload demand comparable between ADB-S and ADB-D unless customer data says otherwise
- model ADB-D fixed DB server + storage server infrastructure separately from workload ECPU
- keep ADB-S as-is components explicit: primaries, local ADG, cross-region standby, refreshable/read clones, read clones, GoldenGate
5. Separate financial views: current/as-is run-rate, target/to-be run-rate, forecasted TCO by horizon, and scenario comparison when applicable. Avoid ambiguous labels such as `OCI Annual`; use scenario labels like `ADB-S As-Is`, `ADB-D Dedicated`, `Incremental Investment`, and `TCO Crossover`.
6. Generate companion BOMs for current as-is, to-be steady state, and 24M/36M projected as-is/to-be annual run-rate snapshots. Projected BOMs are not cumulative multi-year totals.
7. Model read architecture explicitly: ADB-S may require refreshable/read clones because standby is not the application read path; ADB-D may use Local ADG read-only standby and retire steady-state clones. Reflect this in BOM notes, value drivers, and risk/value slides.
8. Add storage economics: ADB-S per-GB storage, ADB-D fixed footprint, customer-provided base break-even when available, recalculated break-even for the proposed footprint, and visible storage offset.
9. Treat GoldenGate as `steady_state`, `migration_bridge_only`, or `migration_plus_fallback_months`. Bridge-only GoldenGate is Year-1 / one-time and is excluded from future steady-state BOMs.
10. Add a TCO crossover chart when multi-year forecast exists, defaulting to native PowerPoint grouped bars with executive labels (`Near-term`, `Year 1`, `Year 2`, `Year 3`) and delta bullets.
11. For risk-reduction cases, generate a Business Value Model instead of generic ROI percentages. Do not invent revenue impact; convert stability to USD only when the customer provides revenue-at-risk, transaction margin, fraud loss impact, or cost per degraded/outage hour.
12. Assess migration and inaction risks against the selected scenario only. Remove obsolete risks such as `if 4x3 is selected` after the customer has chosen `5x3`.
13. Produce an executive deck using Oracle FY26 template (`config/oracle-pptx-layouts.yaml` → `business_case` type), plus business-case YAML and generated BOM artefacts where applicable.
14. **Disclaimer + deck verification.** Append the `disclaimer:` field from `kb/pricing/oci-sku-catalog.yaml` as a final "Commercial Disclaimer" slide (verbatim — see option 4 step 7). Then run structural PPTX validation that reads text boxes, table cells, and grouped shapes; check slide count/titles, disclaimer-last, required assumptions, and forbidden obsolete phrases before reporting completion.
- If the user picks **9**, ask: "What topic? (e.g., 'DEP', 'TAC', 'maintenance window', 'vector search')"
- If the user picks **10**, ask: "What kind of architecture? (e.g., 'ADB + APEX', 'cross-region DR', 'data lakehouse')"
- If the user picks **11**, switch to finding intake mode:
@@ -173,7 +263,7 @@ Pick a number, or just describe what you need.
**BOM Output Rules:**
- NEVER include "Confidential: Internal ONLY" or any confidentiality marking
- ALWAYS include the Oracle Cost Estimator disclaimer at the bottom
- ALWAYS include the disclaimer from `kb/pricing/oci-sku-catalog.yaml` `disclaimer:` field at the bottom — `tools/oci_bom_gen.py` reads it automatically (do not duplicate, paraphrase, or maintain a second copy elsewhere)
- Only include SKUs the customer actually requested — never dump the full catalog
- Show cost proportions so the customer can see where their spend concentrates
- Use Excel formulas (not static values) so the customer can adjust quantities
@@ -196,7 +286,7 @@ After delivering an output, show elapsed time and offer the natural next step.
```
✅ Done — [task description] completed in [Xm Ys]
→ [A] Generate additional outputs (drawio / doc / xlsx)
→ [A] Generate additional outputs (sketch / drawio / doc / xlsx)
→ [B] Modify the architecture (add/remove/change services)
→ [C] Run Well-Architected review on this architecture
→ [D] Build a business case from this architecture
@@ -254,6 +344,32 @@ Full tier definitions and artifact matrix: [docs/engagement-tiers.md](docs/engag
**Step 1 — Ideate:** Parse discovery notes into a **Workload Profile** (`templates/workload-profile.yaml`). Formulate a value hypothesis: "If we [technical action], the customer achieves [business outcome]." Use `kb/patterns/business-patterns.yaml` for proven business-level patterns.
**Step 1b — Extraction Receipt (MANDATORY).** After parsing discovery notes, present an extraction receipt to the user BEFORE proceeding. This ensures the architecture is built on confirmed facts, not assumptions:
```
📋 Extraction Receipt
━━━━━━━━━━━━━━━━━━━━
From your input I extracted:
CONFIRMED (explicitly stated):
• [field]: [value] — source: "[exact quote or reference from notes]"
• [field]: [value] — source: "[exact quote or reference from notes]"
INFERRED (not stated, derived from context):
• [field]: [value] — reason: "[why I inferred this]"
MISSING (needed but not provided):
• [field] — needed for: [which artifact or decision needs it]
━━━━━━━━━━━━━━━━━━━━
Confirm, correct, or fill gaps before I proceed.
```
Rules:
- Every field in the workload profile that you populate must appear in either CONFIRMED or INFERRED.
- Do NOT proceed to Step 2 until the user confirms the receipt.
- If the user provides additional data, update the receipt and re-confirm.
- When generating the workload-profile.yaml, tag each field with `source: customer` (confirmed), `source: inferred`, or `source: default` so the SA knows what to validate with the customer.
**Step 2 — Validate:** Test the hypothesis for SMART criteria (Specific, Measurable, Attainable, Relevant, Time-based). Identify gaps. Check technical feasibility against `kb/services/` and `kb/compatibility/`.
**Step 3 — Service Tiering:** After parsing databases, assign each workload a tier (Platinum/Gold/Silver/Bronze) based on SLA requirements, compliance needs, and business criticality. Use the auto-assignment rules in `kb/patterns/service-tiering.yaml`. Present the assignment and ask the architect to confirm or adjust.
@@ -287,7 +403,7 @@ Capture enough about current state to architect the future. Frame the problem
1. **Select services** from `kb/services/` across the full OCI catalog
2. **Dimension each service** using `kb/sizing/` rules. For Oracle DBs, use AWR metrics if available. Apply conversion ratios. For ADB-S, size base OCPUs for P75.
3. **Compose topology** from `kb/patterns/` blocks. Check conflicts, add implied dependencies, apply compliance overlays. Use `kb/patterns/application-patterns.yaml` for workload-type guidance.
3. **Compose topology** from `kb/patterns/` blocks. Check conflicts and apply compliance overlays. Use `kb/patterns/application-patterns.yaml` for workload-type guidance. **Do NOT silently add components** — only add technical dependencies from the closed whitelist in the Guardrails section below. Everything else must be proposed as optional in the pre-generation review.
4. **Architecture Principles** — Select applicable principles from `kb/patterns/architecture-principles.yaml` based on the workload profile. Check `applies_when` conditions. Include in the deck as a governance slide.
5. **Environment Catalogue** — Expand each workload into environments (Prod/Pre-Prod/Dev-Test/DR) using the tier templates in `kb/patterns/environment-catalogue.yaml`. Apply cost optimization rules. Include in the deck and in the cost estimate.
6. **Design deployment** — environment strategy, IaC approach, CI/CD pipeline
@@ -310,6 +426,28 @@ Capture enough about current state to architect the future. Frame the problem
#### Confirm (Solution Proposal)
**Completeness gate (MANDATORY before generating artifacts).** Before calling any generation tool (deck, diagram, BOM, PDF), verify that critical fields are populated based on engagement tier:
| Field | Small | Standard | Complex |
|---|---|---|---|
| customer_name | required | required | required |
| workload_type | required | required | required |
| databases (type + count) | required | required | required |
| primary_region | required | required | required |
| compliance_frameworks | — | required | required |
| RTO / RPO | — | required | required |
| team_size | — | required | required |
| current_infrastructure | — | required | required |
| migration_driver | — | required | required |
| environment_strategy | — | — | required |
| operational_model | — | — | required |
| multi_region_topology | — | — | required |
| data_residency | — | — | required |
- If **required** fields are missing: ask the user before generating.
- If **optional** fields are missing: list them as assumptions in the output (e.g., "Assumed: PAYG pricing, single environment, no compliance requirements").
- Fields tagged `source: inferred` in the workload profile count as populated but should be flagged as assumptions.
Assemble all design work into a proposal. Ensure all propositions are **SMART**. Quality matters — it must look professional.
**Outputs by tier:** See artifact matrix in [docs/engagement-tiers.md](docs/engagement-tiers.md)
@@ -351,7 +489,7 @@ Full DELIVER guide: [docs/deliver-phase.md](docs/deliver-phase.md)
Every skill option that produces output MUST generate **readable, human-consumable output** as the primary deliverable. YAML files are structured backing data — they are never the final output shown to the user. Specifically:
- **Options 1-4, 8:** Primary output is `.pptx` (slide deck) and/or `.drawio` (diagram). YAML specs are saved alongside but never presented as the deliverable.
- **Options 1-4, 8:** Primary output is `.pptx` (slide deck), `.drawio` (diagram), and/or native `.excalidraw` sketch when the user requests draft mode. YAML/Mermaid specs are saved alongside when useful but never presented as the final deliverable.
- **Option 5 (WA Review):** Primary output is the **formatted terminal scorecard** (banner + pillar bars + gap tables + recommendations). YAML scorecard saved to `examples/` as backing data.
- **Option 12 (ECAL Readiness):** Primary output is the **formatted terminal scorecard** (phase scores + artefact checklist + gap analysis). YAML scorecard saved to `examples/` as backing data.
- **After any review/score:** When the user picks [C] "Export as slide", generate a 1-2 slide `.pptx` with the scorecard visualization using `tools/oci_deck_gen.py`.
@@ -364,6 +502,14 @@ See [docs/skill/output-formats.md](docs/skill/output-formats.md) for the per-cus
---
## Cookbook: Building Tool Payloads
Any pricing or SKU work — cost estimate (option 4), BOM (option 13), BOM-AppCA (option 14), business-case TCO (option 8), scenario comparison from a customer artefact (`.pptx`, BOM, quote) — starts in the local catalog, not on the web. Check [docs/bom-cookbook.md](docs/bom-cookbook.md) for copy-paste recipes (ExaCS X11M BYOL, ADB-Dedicated, ADB-S + Block + FastConnect) and the gotchas that otherwise burn exploration turns (e.g. ADB-Dedicated shares infrastructure SKUs with ExaCS — there are no separate `adb_dedicated` SKUs in the catalog).
If a requirement does not match a recipe, `grep` [`kb/pricing/oci-sku-catalog.yaml`](kb/pricing/oci-sku-catalog.yaml) and consult `kb/services/` before inventing SKUs. See "What You Do NOT Do" for the web-lookup rule and `kb/pricing/oci-sku-catalog.yaml`'s `last_verified` for staleness handling.
---
## Knowledge Base
KB lives under `kb/`. See [kb/README.md](kb/README.md) for the directory map, frontmatter requirements, refresh tooling, and contributor guide.
@@ -418,23 +564,49 @@ KB lives under `kb/`. See [kb/README.md](kb/README.md) for the directory map, fr
## Guardrails
- **Only what the user asked for.** Never add services, components, or features the user did not request — this includes observability (Monitoring, Logging, Events), security services (Data Safe, Vault, Cloud Guard, WAF), sizing details, connection types (RPC, peering), and any "nice to have" additions. Adding unrequested components wastes the architect's time and erodes trust.
- **Only what the user asked for.** Never add services, components, or features the user did not request — this includes observability (Monitoring, Logging, Events), security services (Data Safe, Vault, Cloud Guard, WAF), sizing details, connection types (RPC, peering), and any "nice to have" additions. Adding unrequested components wastes the architect's time and erodes trust. The ONLY exception is the closed whitelist of technical dependencies below.
- **Technical dependency whitelist (closed — nothing else is auto-added):**
| If the user requests… | Auto-include | Reason |
|---|---|---|
| FastConnect | DRG | FastConnect terminates on DRG — cannot work without it |
| VPN Connect | DRG | IPSec tunnels terminate on DRG |
| ADB-S / ExaCS with backup to Object Storage | Service Gateway | Backup traffic requires SGW for Oracle Services Network |
| Any service in a public subnet | Internet Gateway | Public subnet routing requires IGW |
| Any private subnet service needing internet egress | NAT Gateway | Private-to-internet routing requires NAT |
| Cross-region DR (Data Guard, FSDR) | Remote Peering Connection (RPC) | Cross-region VCN connectivity requires RPC on both DRGs |
Everything NOT in this table — including Monitoring, Logging, Events, Vault, Data Safe, WAF, Cloud Guard, Bastion, management subnets, compartment boundaries — requires explicit user approval via the pre-generation review.
- **Ask, don't guess.** When requirements are ambiguous or incomplete, ask a clarifying question instead of filling in assumptions. A 10-second question saves a 10-minute redo.
- **Pre-generation review.** Before generating any diagram or architecture artifact, confirm the component list with the user. Present what you understood and suggest optional additions they can approve or reject:
```
I'll generate a diagram with:
✅ [list of explicitly requested components]
Want me to also include any of these?
• Observability subnet
• Compartment boundaries
• Security services (Data Safe, Vault)
• Gateways (IGW, NAT, SGW)
• [other relevant options based on context]
Or just generate with the above?
- **MANDATORY pre-generation review.** Before generating ANY diagram, deck, or architecture artifact, you MUST confirm the component list with the user. Never skip this step. Present three clearly separated sections:
```
This takes 5 seconds to confirm and prevents rework.
I'll generate with:
REQUESTED (from your input):
✅ [only components explicitly mentioned by the user]
TECHNICAL DEPENDENCIES (auto-added per whitelist):
⚙️ [only items from the whitelist table above, with reason]
OPTIONAL — want me to add any of these?
○ Observability (Monitoring, Logging, Events)
○ Security services (Vault, Data Safe, WAF, Cloud Guard)
○ Management subnet
○ Compartment boundaries
○ Bastion / jump host
○ [other relevant options based on context]
Generate with the above, or adjust?
```
Wait for the user's response before generating. If the user says "just generate" or equivalent, proceed with only REQUESTED + TECHNICAL DEPENDENCIES (no optionals).
- **Source attribution.** When the user provides documents, URLs, meeting notes, or external data:
- Cite the source when extracting data: "From [document/source]: [extracted fact]"
- Clearly separate facts from the source vs. your own inferences
- If the source contradicts the internal KB, flag the conflict explicitly and let the architect decide
## What You Do NOT Do
@@ -442,6 +614,10 @@ KB lives under `kb/`. See [kb/README.md](kb/README.md) for the directory map, fr
- You do NOT replace the architect's judgment. You accelerate it.
- You do NOT generate pixel-perfect diagrams. You generate 80% drafts the architect refines.
- You do NOT make up pricing. If you don't have current pricing, estimate ranges.
- You do NOT use WebSearch / WebFetch / `oracle.com` for OCI list prices or SKU lookups. `kb/pricing/oci-sku-catalog.yaml` is auto-refreshed via `tools/refresh_sku_catalog.py` (Oracle apexapps pricing API) and is the source of truth — including for ECPU/OCPU rates, BYOL deltas, Exadata X11M part numbers, and ADB-D ECPU SKUs. Web fallback is allowed ONLY when (a) the SKU is genuinely absent after `grep` AND a fresh `--refresh` still does not surface it, or (b) the catalog's `last_verified` is >60 days stale and a refresh is not currently possible. In either case, cite the source URL alongside the part number. Reflexively reaching for WebSearch when the catalog already has the answer is the most common cost-estimate failure mode — don't.
- You do NOT claim features exist if you're unsure. Check the KB first.
- You do NOT do detailed project management. DELIVER artifacts are lightweight handover aids.
- You do NOT add services or components the user did not request.
- **The skill ships as an MCP server.** This repo is packaged and served via the hosted MCP at `https://mcp.tech-lad.com/deal-accelerator/mcp/`. Anything you change in the skill's runtime — `tools/`, `scripts/`, `kb/`, `SKILL.md`, `AGENTS.md`, `.agents/` — must keep working in that deployed environment, not just on the SA's laptop. Concrete implications: (1) NO machine-specific paths (use `pathlib.Path(__file__).resolve().parent.parent` or env vars, never hardcoded `/mnt/c/...` or `/home/diego/...`); (2) NO required network calls during normal operation (the MCP container won't have access to drawio.exe, paid APIs, or Diego's local files — opt-in via env vars like `DRAWIO_EXE` / `ANTHROPIC_API_KEY`, never required); (3) NO writes outside the repo tree (the MCP filesystem is the cloned repo, write only under `examples/`, `tmp/`, or the artifacts the skill is meant to produce); (4) NO new dependencies that aren't in `requirements.txt` (CI installs from there, the MCP container too); (5) any new tool must work in a fresh clone with `make venv` — no manual setup steps. Before adding a feature that depends on a binary, an external service, or a privileged operation, ask whether it'll work when the SA is hitting the MCP endpoint with no laptop attached.
- **You do NOT edit skill source code or tooling when the user is in "menu mode".** When the user invoked the skill via the welcome menu (options 114) or asked for one of the menu outputs (proposal, diagram, deck, BOM, WA review, etc.), your job is to USE the existing tools, not modify them. Do NOT touch `tools/`, `scripts/`, `kb/diagram/*.json`, or any other code/index file as part of fulfilling a menu request — even if you discover a bug or a missing alias mid-task. If you hit a tool gap (missing icon alias, broken renderer, type that doesn't resolve), surface it as a follow-up at the end of your reply (e.g. "I noticed `refreshable_clone` doesn't have a PPTX icon alias — flag this for the maintainer to add to `tools/oci_pptx_diagram_gen.py::TYPE_TO_ICON`") rather than silently patching it. Code edits happen in a separate "developer mode" engagement, not while the SA is generating customer artifacts. The two exceptions: (1) `kb/field-findings/tracker.yaml` via menu option 11 (the menu's purpose IS to write that file), and (2) writing the customer's spec/output YAML files under `examples/<customer>/` — those are the deliverable, not the skill itself.

View File

@@ -107,7 +107,109 @@
"WebFetch(domain:developers.openai.com)",
"Bash(echo \"---exit:$?---\")",
"Bash(date +%s)",
"Read(//tmp/**)"
"Read(//tmp/**)",
"Bash(.venv/bin/pip install *)",
"Bash(curl -sS -o /dev/null -w \"HTTP:%{http_code} dns:%{remote_ip} time:%{time_total}s\\\\n\" --max-time 10 https://mcp.tech-lad.com/deal-accelerator/mcp/)",
"Bash(curl -sS -o /dev/null -w \"oauth HTTP:%{http_code}\\\\n\" --max-time 10 https://mcp.tech-lad.com/oauth/authorize)",
"mcp__oci-deal-accelerator__generate_deck",
"mcp__oci-deal-accelerator__generate_business_case",
"mcp__oci-deal-accelerator__generate_bom",
"mcp__oci-deal-accelerator__generate_bom_appca",
"Bash(mkdir -p /tmp/mcp-test-outputs)",
"Bash(curl -sS -o deck-nova.pptx \"https://mcp.tech-lad.com/deal-accelerator/files/176ac90e-test-nova-retail-deck.pptx\")",
"Bash(curl -sS -o biz-nova.pptx \"https://mcp.tech-lad.com/deal-accelerator/files/42dd4da2-test-nova-retail-bizcase.pptx\")",
"Bash(curl -sS -o bom-vector.xlsx \"https://mcp.tech-lad.com/deal-accelerator/files/3868d74a-test-vector-retail-bom.xlsx\")",
"Bash(curl -sS -o bom-vector-appca.xlsx \"https://mcp.tech-lad.com/deal-accelerator/files/b34fa397-test-vector-retail-bom-appca.xlsx\")",
"Bash(curl -sS -o /tmp/mcp-test-outputs/biz-nova.pptx \"https://mcp.tech-lad.com/deal-accelerator/files/42dd4da2-test-nova-retail-bizcase.pptx\")",
"Bash(curl -sS -o /tmp/mcp-test-outputs/bom-vector.xlsx \"https://mcp.tech-lad.com/deal-accelerator/files/3868d74a-test-vector-retail-bom.xlsx\")",
"Bash(curl -sS -o /tmp/mcp-test-outputs/bom-vector-appca.xlsx \"https://mcp.tech-lad.com/deal-accelerator/files/b34fa397-test-vector-retail-bom-appca.xlsx\")",
"Bash(curl -sS -o /tmp/mcp-test-outputs/deck-vector.pptx \"https://mcp.tech-lad.com/deal-accelerator/files/19c5330e-test-vector-bank-deck.pptx\")",
"Bash(curl -sS -o /tmp/mcp-test-outputs/biz-digital.pptx \"https://mcp.tech-lad.com/deal-accelerator/files/16b90f10-test-vector-digital-bizcase.pptx\")",
"Bash(curl -sS -o /dev/null -w \"git remote HTTP: %{http_code} time: %{time_total}s\\\\n\" --max-time 15 https://git.tech-lad.com.br/)",
"Bash(awk '/- sku:/{sku=$NF} /product:/{print sku\" - \"$0}' kb/pricing/oci-sku-catalog.yaml)",
"Bash(awk '{print $3}')",
"Bash(awk '/- sku: B110627|- sku: B110628|- sku: B110629|- sku: B90453/{print;f=1;next} f&&/product:/{print;f=0}' kb/pricing/oci-sku-catalog.yaml)",
"Bash(awk '/- sku:/{sku=$NF} /product:.*Exadata|product:.*ECPU|product:.*Autonomous/{print sku\" - \"$0}' kb/pricing/oci-sku-catalog.yaml)",
"Bash(awk '/- sku: B90453/,/product:/' kb/pricing/oci-sku-catalog.yaml)",
"Bash(awk '/- sku:/{sku=$NF} /product:.*ADB|product:.*NoSQL|product:.*HeatWave|product:.*MySQL/{print sku\" - \"$0}' kb/pricing/oci-sku-catalog.yaml)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" --help)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 10 -o \"tmp/compare-iter/iter1.png\" \"tmp/compare-iter/iter1.drawio\")",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o tmp/compare-iter/iter4_crop.png tmp/compare-iter/iter4.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o tmp/compare-iter/REFERENCE.png examples/output-meli-fraud-adbd-migration/adbsplusadbd.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 30 --crop -s 3 -o tmp/compare-iter/iter6_hires.png tmp/compare-iter/iter6.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 3 -o tmp/compare-iter/to_be_v1_hires.png tmp/compare-iter/to_be_v1.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 40 -s 4 -o tmp/compare-iter/to_be_v1_4x.png tmp/compare-iter/to_be_v1.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png --crop -b 20 --width 3000 -o tmp/compare-iter/to_be_v1_w3000.png tmp/compare-iter/to_be_v1.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop --width 4500 -o tmp/compare-iter/to_be_v1_w4500.png tmp/compare-iter/to_be_v1.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 30 --crop --width 5000 -o tmp/compare-iter/as_is_final.png examples/output-meli-fraud-adbd-migration/fraud-as-is-adbs.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 30 --crop --width 5000 -o tmp/compare-iter/to_be_final.png examples/output-meli-fraud-adbd-migration/fraud-to-be-adbd.drawio)",
"Bash(curl -sL \"https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/index.html\" -o tmp/oracle-ref-archs/adb-azure.html)",
"Bash(curl -sL -w 'HTTP:%{http_code} size:%{size_download}\\\\n' \"https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/index.html\" -o /tmp/x.html)",
"Bash(curl -sL -w 'HTTP:%{http_code} size:%{size_download}\\\\n' \"https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/img/autonomous-database-db-azure-diagram-oracle.zip\" -o adb-azure.zip)",
"Bash(unzip -l adb-azure.zip)",
"Bash(unzip -o -q adb-azure.zip)",
"Bash(mv oracle-adb-jde-exadata-arch-oracle *)",
"Bash(curl -sL \"https://docs.oracle.com/en/solutions/dataguard-exadata-dedicated-infrastructure/index.html\" -o dg-exa-dedicated.html)",
"Bash(curl -sL \"https://docs.oracle.com/en/solutions/dataguard-exadata-dedicated-infrastructure/img/exadata-dedicated-region-dataguard.zip\" -o dg-exa-region.zip)",
"Bash(curl -sL \"https://docs.oracle.com/en/solutions/dataguard-exadata-dedicated-infrastructure/img/exadata-dedicated-cross-region-dataguard.zip\" -o dg-exa-cross-region.zip)",
"Bash(unzip -o -q dg-exa-region.zip)",
"Bash(unzip -o -q dg-exa-cross-region.zip)",
"Bash('/mnt/c/Program Files/draw.io/draw.io.exe' -x -f png -b 20 --crop -o /mnt/c/Users/Diego/Documents/oci-deal-accelerator-oracle/oci-deal-accelerator/tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.png /mnt/c/Users/Diego/Documents/oci-deal-accelerator-oracle/oci-deal-accelerator/tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o /mnt/c/Users/Diego/Documents/oci-deal-accelerator-oracle/oci-deal-accelerator/tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.png /mnt/c/Users/Diego/Documents/oci-deal-accelerator-oracle/oci-deal-accelerator/tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/rendered.png tmp/oracle-ref-archs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o tmp/compare-iter/fraud-as-is-template.png examples/output-meli-fraud-adbd-migration/fraud-as-is-template.drawio)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -b 20 --crop -s 2 -o tmp/compare-iter/fraud-to-be-template.png examples/output-meli-fraud-adbd-migration/fraud-to-be-template.drawio)",
"WebFetch(domain:www.bugraparlayan.com.tr)",
"WebFetch(domain:www.infolob.com)",
"Bash(curl -sS \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator/actions/runs?limit=10\")",
"Bash(curl -sS \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator/actions/secrets\")",
"Bash(curl -sS -o /dev/null -w \"%{http_code}\\\\n\" \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator\")",
"Bash(curl -sS \"https://git.tech-lad.com.br/diegoecab/oci-deal-accelerator/raw/branch/main/.gitea/workflows/sku-catalog-refresh.yaml\")",
"Bash(curl -sS -o /dev/null -w \"%{http_code}\\\\n\" \"https://git.tech-lad.com.br/diegoecab/oci-deal-accelerator/raw/branch/main/.gitea/workflows/sku-catalog-refresh.yaml\")",
"Bash(curl -sS \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator/issues?type=issues&state=open&limit=5&sort=newest\")",
"Bash(curl -sS \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator/branches?limit=50\")",
"Bash(curl -sS \"https://git.tech-lad.com.br/api/v1/repos/diegoecab/oci-deal-accelerator\")",
"Bash(xargs -n1 grep -l '\"fidelity\"')",
"Bash(xargs '-I{}' .venv/bin/python -c ' *)",
"Bash(apt-cache show *)",
"Bash(apt list *)",
"Read(//mnt/c/Program Files/draw.io/**)",
"Read(//mnt/c/Users/Diego/AppData/Local/Programs/draw.io/**)",
"Read(//mnt/c/**)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -o /tmp/test-drawio.png examples/dataguard-exa-dedicated-in-region/out/dataguard-exa-dedicated-in-region.drawio)",
"Bash(mkdir -p /mnt/c/Users/Diego/tmp-drawio-export)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png -s 2 -o /mnt/c/Users/Diego/tmp-drawio-export/test.png examples/dataguard-exa-dedicated-in-region/out/dataguard-exa-dedicated-in-region.drawio)",
"Bash(mkdir -p '/mnt/c/Users/Diego/tmp-drawio-export')",
"Bash('/mnt/c/Program Files/draw.io/draw.io.exe' -x -f png -s 2 -o 'C:\\\\Users\\\\Diego\\\\tmp-drawio-export\\\\test.png' 'C:\\\\Users\\\\Diego\\\\Documents\\\\oci-deal-accelerator-oracle\\\\oci-deal-accelerator\\\\examples\\\\dataguard-exa-dedicated-in-region\\\\out\\\\dataguard-exa-dedicated-in-region.drawio')",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-v3.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v3.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-v4.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v4.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-v5.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v5.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-v6.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v6.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-v7.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v7.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-v9.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-final.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/asis-adb-s-local-dr.drawio --out tmp/drawio-renders/asis-final2.png)",
"Bash(DRAWIO_EXE=\"/mnt/c/Program Files/draw.io/draw.io.exe\" .venv/bin/python tools/drawio_to_png.py --drawio examples/asis-tobe-adb-modernization/out/tobe-adb-d-active-dataguard.drawio --out tmp/drawio-renders/tobe-final2.png)",
"Bash(.githooks/pre-commit)",
"Bash(unzip -l awr_Transactional.zip)",
"Bash(mkdir -p /tmp/awr_meli)",
"Bash(unzip -o \"/mnt/c/Users/Diego/Documents/Meli/ABD-M/April 2026 - Fraude ADB-S to ADB-D/awr_Transactional.zip\")",
"Bash(cp \"/mnt/c/Users/Diego/Documents/Meli/ABD-M/April 2026 - Fraude ADB-S to ADB-D/meli-fraud-adbd-arch.pptx\" /tmp/meli-fraud-adbd-arch.pptx)",
"Bash(unzip -o meli-fraud-adbd-arch.pptx -d meli-pptx-extracted/)",
"Bash(cp -f \"/mnt/c/Users/Diego/Documents/Meli/ABD-M/April 2026 - Fraude ADB-S to ADB-D/meli-fraud-adbd-arch.pptx\" /tmp/meli-fraud-adbd-arch.pptx)",
"Bash(rm -rf /tmp/meli-pptx-extracted)",
"Bash(unzip -oq /tmp/meli-fraud-adbd-arch.pptx -d /tmp/meli-pptx-extracted/)",
"Bash(cp -f \"/mnt/c/Users/Diego/Documents/Meli/ABD-M/April 2026 - Fraude ADB-S to ADB-D/meli-fraud-adbd-arch.pptx\" meli-fraud-adbd-arch.pptx)",
"Bash(rm -rf meli-pptx-extracted)",
"Bash(unzip -oq meli-fraud-adbd-arch.pptx -d meli-pptx-extracted/)",
"Bash(yes)",
"WebFetch(domain:blog.shadabmohammad.com)",
"Bash(\"/mnt/c/Program Files/draw.io/draw.io.exe\" -x -f png --scale 1 -o \"$\\(pwd\\)/examples/output-aws-mysql-to-oci-heatwave-fsdr/aws-mysql-to-heatwave-fsdr.png\" \"$\\(pwd\\)/examples/output-aws-mysql-to-oci-heatwave-fsdr/aws-mysql-to-heatwave-fsdr.drawio\")"
]
}
}

View File

@@ -0,0 +1,75 @@
# Diagram-validator gate.
#
# Runs on every push and PR. Two checks:
#
# 1. diagram-spec-audit — every absolute_layout spec under examples/
# passes tools/diagram_spec_validator.py (geometry rules:
# CONTAINER_TOO_THIN, CONTAINER_PADDING_VIOLATION,
# LABEL_OVERFLOW_PARENT). Hard fail surfaces the regressions
# Diego flagged on the MySQL HeatWave HA example.
#
# 2. drawio-validators-smoke — re-renders the canonical example with
# tools/oci_diagram_gen.py so the post-render
# drawio_visual_validator runs (font sizes, dangling edges,
# duplicate ids, off-canvas geometry).
#
# Failures block the merge so a busted geometry never ships.
name: Diagram validators
on:
push:
branches: [main]
paths:
- 'examples/**'
- 'kb/diagram/**'
- 'tools/diagram_spec_validator.py'
- 'tools/drawio_visual_validator.py'
- 'tools/oci_diagram_gen.py'
- 'tools/oci_pptx_diagram_gen.py'
pull_request:
branches: [main]
workflow_dispatch:
jobs:
diagram-validators:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
run: |
apt-get update -qq
apt-get install -y --no-install-recommends python3 python3-pip python3-yaml
python3 --version
- name: Install minimal deps
run: |
python3 -m pip install --quiet --upgrade pip
python3 -m pip install --quiet drawpyo lxml pyyaml
- name: Spec validator audit (every absolute_layout spec)
run: |
set -e
total=0; failed=0
for f in $(find examples -name 'diagram-spec.yaml' -o -name '*-diagram-spec.yaml'); do
total=$((total+1))
if ! python3 tools/diagram_spec_validator.py --spec "$f" --strict; then
failed=$((failed+1))
fi
done
echo "Validated $total spec(s); $failed hard-failed."
test $failed -eq 0
- name: Re-render canonical example (drawio post-render validator)
run: |
if [ -f examples/aws-app-mysql-heatwave-ha/specs/diagram-spec.yaml ]; then
python3 tools/oci_diagram_gen.py \
--spec examples/aws-app-mysql-heatwave-ha/specs/diagram-spec.yaml \
--output /tmp/aws-app-mysql-heatwave-ha.drawio --strict
else
echo "Canonical example missing — skipping drawio smoke test"
fi

View File

@@ -0,0 +1,67 @@
# SKILL.md sync gate.
#
# Why: the root SKILL.md (read by Claude Code) and
# .agents/skills/oci-deal-accelerator/SKILL.md (read by Codex) MUST
# stay byte-aligned modulo the auto-generated banner. If they drift,
# the two agents give the user different instructions — exactly the
# class of regression that produced the workload-driven-mode incident
# Diego flagged on 2026-04-25.
#
# This workflow blocks the merge if a PR/push leaves them out of
# sync. Locally, ``make install-hooks`` enables a pre-commit hook
# that auto-syncs before the commit lands; this CI step is the
# safety net for anyone who skipped the hook.
name: SKILL.md sync
on:
push:
branches: [main]
paths:
- 'SKILL.md'
- '.agents/skills/oci-deal-accelerator/SKILL.md'
- 'scripts/sync-skill.py'
pull_request:
branches: [main]
paths:
- 'SKILL.md'
- '.agents/skills/oci-deal-accelerator/SKILL.md'
- 'scripts/sync-skill.py'
workflow_dispatch:
jobs:
check-sync:
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python
run: |
apt-get update -qq
apt-get install -y --no-install-recommends python3
python3 --version
- name: Verify SKILL.md is in sync with the Codex copy
run: |
python3 scripts/sync-skill.py --check
- name: Reject .agents/ edits without a matching root SKILL.md change
if: github.event_name == 'pull_request'
run: |
# If only .agents/skills/.../SKILL.md is in the diff (no
# change to root SKILL.md), someone edited the auto-generated
# copy directly. That edit will be silently destroyed by the
# next sync. Block the PR with a clear message.
base="${{ github.event.pull_request.base.sha }}"
head="${{ github.event.pull_request.head.sha }}"
changed=$(git diff --name-only "$base" "$head" || true)
if echo "$changed" | grep -qx ".agents/skills/oci-deal-accelerator/SKILL.md"; then
if ! echo "$changed" | grep -qx "SKILL.md"; then
echo "::error::PR edits .agents/skills/.../SKILL.md without touching root SKILL.md."
echo "::error::That file is auto-generated. Move the edit to SKILL.md and run 'make sync-skill'."
exit 1
fi
fi

View File

@@ -61,8 +61,9 @@ jobs:
run: |
python3 tools/refresh_sku_catalog.py --discover -v 2>&1 \
| tee /tmp/discover.log
NEW_COUNT=$(grep -oE '^[0-9]+ SKUs present in API' /tmp/discover.log \
| head -1 | awk '{print $1}' || echo "0")
NEW_COUNT=$(sed -n 's/^DISCOVER_MISSING_COUNT=\([0-9]\+\)$/\1/p' \
/tmp/discover.log | tail -1)
echo "Parsed new_count='${NEW_COUNT}'"
echo "new_count=${NEW_COUNT:-0}" >> $GITHUB_OUTPUT
- name: Upload logs as artifact
@@ -83,7 +84,7 @@ jobs:
GITEA_REPO: ${{ github.repository }}
run: |
DATE=$(date -u +%Y-%m-%d)
BRANCH="automation/sku-refresh-${DATE}"
BRANCH="automation/sku-refresh-${DATE}-run${{ github.run_number }}"
git config user.name "sku-refresh-bot"
git config user.email "sku-refresh@automation.local"
@@ -99,20 +100,28 @@ jobs:
| sed "s#https://#https://sku-refresh-bot:${GITEA_TOKEN}@#")
git push "$REMOTE" "$BRANCH"
# Open PR via Gitea API
# Open PR via Gitea API (fail-fast + log response)
OWNER=$(echo "$GITEA_REPO" | cut -d/ -f1)
REPO=$(echo "$GITEA_REPO" | cut -d/ -f2)
curl -sS -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/pulls" \
-d "$(jq -n \
PAYLOAD=$(jq -n \
--arg title "chore(pricing): monthly SKU refresh ${DATE}" \
--arg head "$BRANCH" \
--arg base "main" \
--arg body "$(printf 'Automated refresh — [refresh log artifact](../../actions).\n\n```\n%s\n```' \
--arg body "$(printf 'Automated refresh — see run artifact for full refresh/discover logs.\n\n```\n%s\n```' \
"$(tail -40 /tmp/refresh.log)")" \
'{title:$title, head:$head, base:$base, body:$body}')"
'{title:$title, head:$head, base:$base, body:$body}')
echo "Creating PR ${BRANCH} -> main ..."
RESPONSE=$(curl -sS -w "\nHTTP_STATUS=%{http_code}\n" -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/pulls" \
-d "$PAYLOAD")
echo "$RESPONSE"
STATUS=$(echo "$RESPONSE" | grep -oE 'HTTP_STATUS=[0-9]+' | cut -d= -f2)
if [ "$STATUS" != "201" ]; then
echo "::error::PR creation failed with HTTP $STATUS"
exit 1
fi
- name: Open issue for new SKUs
if: steps.discover.outputs.new_count != '0'
@@ -129,14 +138,22 @@ jobs:
BODY=$(printf '## %s new SKUs detected in Oracle API\n\n**Detected:** %s\n\nThese SKUs are present in the Oracle public pricing API but not yet in `kb/pricing/oci-sku-catalog.yaml`. Filter: serviceCategory values already represented in our catalog (so only relevant families show up).\n\n### Full listing\n\n```\n%s\n```\n\n### Next step\n\nReview and add relevant entries to `kb/pricing/oci-sku-catalog.yaml` under the appropriate category block. After merging, prices will be picked up automatically on the next monthly refresh.\n' \
"$NEW_COUNT" "$DATE" "$(cat /tmp/discover.log)")
curl -sS -X POST \
PAYLOAD=$(jq -n \
--arg title "SKU catalog: ${NEW_COUNT} new SKUs to review (${DATE})" \
--arg body "$BODY" \
'{title:$title, body:$body}')
echo "Creating issue: ${NEW_COUNT} new SKUs..."
RESPONSE=$(curl -sS -w "\nHTTP_STATUS=%{http_code}\n" -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/issues" \
-d "$(jq -n \
--arg title "SKU catalog: ${NEW_COUNT} new SKUs to review (${DATE})" \
--arg body "$BODY" \
'{title:$title, body:$body, labels:["automation","sku-catalog"]}')"
-d "$PAYLOAD")
echo "$RESPONSE"
STATUS=$(echo "$RESPONSE" | grep -oE 'HTTP_STATUS=[0-9]+' | cut -d= -f2)
if [ "$STATUS" != "201" ]; then
echo "::error::Issue creation failed with HTTP $STATUS"
exit 1
fi
- name: Summary
if: always()

83
.githooks/pre-commit Normal file
View File

@@ -0,0 +1,83 @@
#!/usr/bin/env bash
# Pre-commit hook: keep .agents/skills/oci-deal-accelerator/SKILL.md
# byte-aligned with the root SKILL.md (the source of truth that
# CLAUDE.md / Claude Code reads). The Codex copy under .agents/
# follows the same content with an auto-generated banner — they MUST
# stay in lock-step or Claude Code and Codex will give the user
# different instructions.
#
# Behavior:
# 1. Only the .agents/ copy staged (no root SKILL.md change):
# REJECT — the .agents/ file is auto-generated, edits MUST land
# in root SKILL.md. Otherwise the next sync silently destroys
# the change.
# 2. Root SKILL.md staged: auto-run scripts/sync-skill.py and
# stage the regenerated .agents/ copy in the same commit.
# 3. Neither: nothing to do.
# • If the script can't run (no python, etc.), abort with a clear
# message rather than committing a desync silently.
#
# Install once per clone: make install-hooks (sets core.hooksPath)
set -euo pipefail
ROOT="$(git rev-parse --show-toplevel)"
SOURCE="SKILL.md"
TARGET=".agents/skills/oci-deal-accelerator/SKILL.md"
SCRIPT="scripts/sync-skill.py"
STAGED="$(git diff --cached --name-only)"
SOURCE_STAGED=0
TARGET_STAGED=0
echo "$STAGED" | grep -qx "$SOURCE" && SOURCE_STAGED=1 || true
echo "$STAGED" | grep -qx "$TARGET" && TARGET_STAGED=1 || true
# Case 1: only the auto-generated .agents/ copy is staged. Reject —
# the source of truth is root SKILL.md and a future sync will
# silently overwrite this change.
if [ "$TARGET_STAGED" = "1" ] && [ "$SOURCE_STAGED" = "0" ]; then
echo "" >&2
echo "pre-commit: REJECTED — you staged $TARGET in isolation." >&2
echo " This file is auto-generated from $SOURCE and the next" >&2
echo " ``make sync-skill`` (or this pre-commit hook firing on a" >&2
echo " later commit) will overwrite your changes silently." >&2
echo "" >&2
echo " Workflow:" >&2
echo " 1. Move your edits into $SOURCE." >&2
echo " 2. ``git restore --staged --worktree $TARGET``" >&2
echo " 3. ``git add $SOURCE`` and re-commit — the hook will" >&2
echo " regenerate the .agents/ copy automatically." >&2
echo "" >&2
exit 1
fi
# Nothing else to do unless root SKILL.md changed.
if [ "$SOURCE_STAGED" = "0" ]; then
exit 0
fi
if [ ! -f "$ROOT/$SCRIPT" ]; then
echo "pre-commit: $SCRIPT missing — cannot verify SKILL.md sync. Aborting." >&2
exit 1
fi
PYTHON="$(command -v python3 || command -v python || true)"
if [ -z "$PYTHON" ]; then
echo "pre-commit: no python found in PATH — cannot run $SCRIPT. Aborting." >&2
exit 1
fi
# Run the full sync, then stage the regenerated target so it travels
# in the same commit. (Idempotent — if it was already in sync, the
# file write is a no-op.)
"$PYTHON" "$ROOT/$SCRIPT" >&2
git add "$ROOT/$TARGET"
# Final check — if for any reason the result still drifts, fail loud.
if ! "$PYTHON" "$ROOT/$SCRIPT" --check >/dev/null 2>&1; then
echo "pre-commit: SKILL.md and $TARGET are still out of sync after auto-run." >&2
echo " Investigate scripts/sync-skill.py before committing." >&2
exit 1
fi
exit 0

28
.gitignore vendored
View File

@@ -4,8 +4,8 @@ __pycache__/
*.pyo
output/
*.pptx
!examples/sample-output/*.pptx
!templates/Oracle_PPT-template_FY26.pptx
!kb/diagram/assets/OCI_Icons.pptx
# OCI Toolkit binary (download from Oracle, don't commit)
kb/diagram/OCI Library.xml
@@ -13,24 +13,10 @@ kb/diagram/OCI Library.xml
# Build prompt (internal)
COMPLETE-BUILD-PROMPT.md
# Client-specific examples (never commit customer data)
examples/farma-sa-*
# Ignore all examples content
examples/
# Skill-generated output folders (customer-specific, never commit)
examples/output-*/
# Exported screenshots (temporary)
examples/*.png
# Exported ppts
examples/*.ppts
# Exported diagrams
examples/*.drawio
# Exported YAML files
examples/*.yaml
# Exported PDFfiles
examples/*.pdf
examples/*.xlsx
# Workspace / sandbox artifacts (never committed)
tmp/
.claude/scheduled_tasks.lock
.claude/worktrees/

View File

@@ -157,6 +157,32 @@ If a task generates YAML without the corresponding readable output, the task is
- **Readable outputs** — YAML is backing data, never the deliverable
- **No hallucinated architecture** — NEVER add services/components/regions the user didn't mention. When remediating WA gaps, apply minimum targeted fixes to the existing architecture; don't replace it with a generic "ideal" one. ASK before adding new services.
## Git Remotes (Gitea = source of truth, GitHub = mirror)
`origin` is configured with **one fetch URL (Gitea) and two push URLs (Gitea + GitHub)**, so a single `git push origin main` updates both. Gitea is authoritative; GitHub is a public mirror.
```
fetch → git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
push → git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
push → github.com/Diegoecab/oci-deal-accelerator.git
```
**Recreating this on a new clone** (the dual-push lives in `.git/config`, not tracked):
```bash
git remote set-url --add --push origin https://github.com/Diegoecab/oci-deal-accelerator.git
git remote set-url --add --push origin https://git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
git remote -v # confirm one fetch + two push URLs
```
The first command substitutes the implicit Gitea push URL with GitHub's; the second re-adds Gitea so origin pushes to BOTH. Counter-intuitive but necessary.
**Agent guidance**:
- After creating a commit on `main`, **always propose `git push origin main`** (not separate pushes per remote) — it covers both. Confirm with the user before pushing (pushing is shared-state).
- If a push fails on GitHub but succeeds on Gitea (or vice versa), the dual-push is partial. Re-run after fixing the failing one — Gitea's second push will be a no-op fast-forward.
- Never force-push Gitea unless explicitly asked; force-pushing GitHub is acceptable when needed because GitHub is downstream.
- If history diverges between Gitea and GitHub (e.g. after a rebase), the recovery pattern is: temporarily strip the GitHub URL (`git remote set-url --delete --push origin <github-url>`), push Gitea fast-forward, add `github` as a standalone remote, force-push, then restore the dual-push.
## Welcome Flow
When the user starts a conversation without providing discovery notes or a specific request (e.g., a greeting or empty context), present the welcome message and capability menu defined in the skill's SKILL.md § Welcome Flow. Specifically:

View File

@@ -159,6 +159,32 @@ python tools/refresh_arch_catalog.py --validate # validate catalog
- **KB is the moat** — field experience, not documentation regurgitation
- **ECAL-aligned** — Define → Design → Deliver with iterative checkpoints
## Git Remotes (Gitea = source of truth, GitHub = mirror)
`origin` is configured with **one fetch URL (Gitea) and two push URLs (Gitea + GitHub)**, so a single `git push origin main` updates both. Gitea is authoritative; GitHub is a public mirror.
```
fetch → git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
push → git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
push → github.com/Diegoecab/oci-deal-accelerator.git
```
**Recreating this on a new clone** (the dual-push lives in `.git/config`, not tracked):
```bash
git remote set-url --add --push origin https://github.com/Diegoecab/oci-deal-accelerator.git
git remote set-url --add --push origin https://git.tech-lad.com.br/diegoecab/oci-deal-accelerator.git
git remote -v # confirm one fetch + two push URLs
```
The first command substitutes the implicit Gitea push URL with GitHub's; the second re-adds Gitea so origin pushes to BOTH. Counter-intuitive but necessary.
**Agent guidance**:
- After creating a commit on `main`, **always propose `git push origin main`** (not separate pushes per remote) — it covers both. Confirm with the user before pushing (pushing is shared-state).
- If a push fails on GitHub but succeeds on Gitea (or vice versa), the dual-push is partial. Re-run after fixing the failing one — Gitea's second push will be a no-op fast-forward.
- Never force-push Gitea unless explicitly asked; force-pushing GitHub is acceptable when needed because GitHub is downstream.
- If history diverges between Gitea and GitHub (e.g. after a rebase), the recovery pattern is: temporarily strip the GitHub URL (`git remote set-url --delete --push origin <github-url>`), push Gitea fast-forward, add `github` as a standalone remote, force-push, then restore the dual-push.
## Coding Guidelines
### 1. Think Before Coding

View File

@@ -1,6 +1,6 @@
# OCI Deal Accelerator — Build Automation
.PHONY: help install test validate example diagram deck full clean lint codex-package update-icons freshness freshness-refresh sync-skill sku-discover
.PHONY: help install test validate example diagram deck full clean lint codex-package update-icons freshness freshness-refresh sync-skill sku-discover pptx-icons-refresh archcenter-benchmark-20 diagram-lookup diagram-validate-spec archcenter-descriptions-refresh diagram-spec-audit archcenter-smoke install-hooks archcenter-templates-refresh
# Use venv if present, otherwise find best available python3
ifneq (,$(wildcard .venv/bin/python))
@@ -19,12 +19,30 @@ help: ## Show this help
VENV_PYTHON := $(shell command -v python3.12 2>/dev/null || command -v python3.11 2>/dev/null || command -v python3.10 2>/dev/null || echo python3)
venv: ## Create virtual environment and install dependencies
@echo "Using $(VENV_PYTHON) to create venv..."
$(VENV_PYTHON) -m venv .venv
venv: .venv/.deps-installed ## Create or update venv (idempotent — no-op if requirements.txt unchanged)
# Marker file pattern: the venv only rebuilds when requirements.txt is
# newer than the marker. A fresh `make venv` after a successful install
# is an instant no-op (was 1m53s on Codex sandboxes — every turn).
# To force a rebuild: `rm .venv/.deps-installed` (or `rm -rf .venv`).
.venv/.deps-installed: requirements.txt
@if [ ! -x .venv/bin/python ]; then \
echo "Using $(VENV_PYTHON) to create venv..."; \
$(VENV_PYTHON) -m venv .venv; \
fi
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -r requirements.txt
@touch .venv/.deps-installed
@echo "Virtual environment ready. Run: source .venv/bin/activate"
@echo "Tip: run 'make install-hooks' once to enable the pre-commit"
@echo " hook that keeps SKILL.md in sync with the Codex copy."
install-hooks: ## Install repo-versioned git hooks (pre-commit auto-syncs SKILL.md)
@if [ ! -d .git ]; then echo "install-hooks: not a git repo"; exit 1; fi
git config core.hooksPath .githooks
@echo "install-hooks: core.hooksPath set to .githooks"
@echo " → pre-commit now auto-syncs .agents/skills/.../SKILL.md"
@echo " whenever SKILL.md is part of the staged change set."
install: ## Install Python dependencies (system-wide)
pip install -r requirements.txt
@@ -72,6 +90,49 @@ update-icons: ## Re-extract OCI icons after updating OCI Library.xml
$(PYTHON) tools/oci_icon_extractor.py
@echo "Updated kb/diagram/oci-icons.json from OCI Library.xml"
pptx-icons-refresh: ## Refresh bundled OCI_Icons.pptx asset + manifest/index for native PPTX diagrams
$(PYTHON) tools/refresh_pptx_icon_index.py
@echo "Updated kb/diagram/oci-pptx-icons-manifest.yaml and oci-pptx-icons-index.json"
archcenter-benchmark-20: ## Run 20-case Oracle Architecture Center native benchmark
$(PYTHON) tools/oci_archcenter_batch.py \
--limit 20 \
--threshold 0.82 \
--fidelity-threshold 0.90 \
--output-root examples/eval-2026-04-25-archcenter-native-20-v8
diagram-lookup: ## Find Architecture Center reference patterns. Usage: make diagram-lookup QUERY="mysql heatwave HA"
@if [ -z "$(QUERY)" ]; then echo "Usage: make diagram-lookup QUERY=\"<topology>\""; exit 1; fi
$(PYTHON) tools/archcenter_pattern_lookup.py "$(QUERY)" --top $${TOP:-5}
diagram-validate-spec: ## Validate a diagram spec's geometry. Usage: make diagram-validate-spec SPEC=path/to/spec.yaml
@if [ -z "$(SPEC)" ]; then echo "Usage: make diagram-validate-spec SPEC=<path>"; exit 1; fi
$(PYTHON) tools/diagram_spec_validator.py --spec "$(SPEC)" --strict
diagram-spec-audit: ## Run spec validator across every diagram-spec in examples/, print pass/fail summary
@echo "Auditing diagram specs under examples/..."
@total=0; failed=0; \
for f in $$(find examples -name 'diagram-spec.yaml' -o -name '*-diagram-spec.yaml'); do \
total=$$((total+1)); \
$(PYTHON) tools/diagram_spec_validator.py --spec "$$f" --strict >/dev/null 2>&1 || { \
failed=$$((failed+1)); echo " FAIL $$f"; \
}; \
done; \
echo "Audited $$total spec(s); $$failed failed."
archcenter-descriptions-refresh: ## Re-fetch _description.md for every Architecture Center entry
$(PYTHON) tools/archcenter_description_fetcher.py --limit 200 --sleep 0.5
archcenter-templates-refresh: ## Extract absolute_layout YAML scaffolds from every cached .drawio
$(PYTHON) tools/archcenter_drawio_to_template.py
archcenter-smoke: ## 3-case Architecture Center reconstruction smoke test (CI-friendly)
$(PYTHON) tools/oci_archcenter_batch.py \
--limit 3 \
--threshold 0.78 \
--fidelity-threshold 0.85 \
--output-root tmp/archcenter-smoke
clean: ## Remove generated output files
rm -f examples/sample-output/*.drawio
rm -f examples/sample-output/*.pptx

128
README.md
View File

@@ -11,14 +11,17 @@ What normally takes an SA days of work (structuring notes, designing architectur
- **ECAL 3.1 native** — engagement RACI, artefact catalog, readiness scoring, and lessons learned per step baked into the workflow
- **Field knowledge, beyond the docs** — built-in KB with real gotchas, workarounds, and sizing lessons from production OCI deployments
- **Honest about trade-offs** — flags OCI limitations and competitive gaps instead of overselling
- **Multi-cloud aware** — supports hybrid/multi-cloud diagrams (AWS, Azure, GCP icons) and considers options like ADB Multicloud before recommending full migration
- **Multi-cloud aware** — supports hybrid/multi-cloud diagrams (AWS, Azure, GCP, plus external brand icons such as Slack and Jira) and considers options like ADB Multicloud before recommending full migration
- **MCP-tolerant inputs** — deck, diagram, BOM, and business-case generators accept flat MCP payloads and common field aliases instead of requiring one rigid schema
- **End-to-end coverage** — from discovery notes to go-live checklist, not just the architecture slide
## New user? Start here
The skill runs as a hosted MCP server. Connect once from your LLM client, sign in with Oracle SSO, and the tools are ready.
**1. Add the MCP server to your client:**
Fastest path: open AI Factory Hub at `https://ai-lad.com/`, search for `OCI Deal Accelerator`, and install it from there. If you prefer manual setup, use the MCP client instructions below.
**1. Add the MCP server to your client (manual setup):**
| Client | How |
|---|---|
@@ -45,6 +48,7 @@ The skill runs as a hosted MCP server. Connect once from your LLM client, sign i
### Connection URLs
- **AI Factory Hub:** `https://ai-lad.com/`
- **MCP (HTTP streamable):** `https://mcp.tech-lad.com/deal-accelerator/mcp/`
- **SSE (Windsurf only):** `https://mcp.tech-lad.com/deal-accelerator/sse/`
@@ -61,10 +65,12 @@ From unstructured input (meeting notes, emails, Slack threads), the skill genera
| **Business Case** — TCO, ROI, value drivers, risk assessment | .pptx | Define | Ideate |
| **Joint Engagement Plan** — scope, resources, timeline | YAML | Define | Plan |
| **Discovery Questionnaire** — structured IT landscape collection | YAML | Design | Current |
| **Architecture Diagram**official Oracle visual style, multi-cloud support | .drawio | Design | Future |
| **Architecture Diagram**Oracle reference-architecture geometry, multi-cloud + external brand support | .drawio / .pptx | Design | Future |
| **Slide Deck** — 6-15 slides scaled to engagement complexity | .pptx | Design | Confirm |
| **Customer PDF** — branded, no internal KB references | .pdf | Design | Confirm |
| **Cost Estimate** — BYOL vs PAYG breakdown with assumptions | YAML | Design | Future |
| **Bill of Materials (BOM)** — requested SKUs only, formula-driven totals, discount-aware workbook | .xlsx | Design | Future |
| **AppCA-ready BOM** — AppCA import sheet plus full BOM workbook detail | .xlsx | Design | Future |
| **Well-Architected Scorecard** — 5-pillar automated validation | YAML | Design | Future |
| **Operations Model** — day-2 monitoring, patching, incident response | YAML | Design | Future |
| **ECAL Readiness Scorecard** — 60-artefact gap analysis per phase | Text | All | All |
@@ -100,9 +106,40 @@ deck + pdf ← + customer-facing PDF (branded, no internal refs)
pdf ← customer PDF only
bizcase ← business case deck for customer approval
full ← everything (pptx + drawio + docx + xlsx + pdf)
bom ← bill of materials (.xlsx)
deliver ← handover + go-live checklist + success criteria
```
Standalone architecture diagrams can be generated as editable `.drawio` files or as native Oracle-style `.pptx` diagrams/slides, depending on the workflow you trigger.
## Example Prompts
These copy/paste prompts are good demo asks for the newest user-visible features, especially when using Codex or another MCP client.
### Native PowerPoint diagram (.pptx)
```text
Generame un diagrama nativo en .pptx, simple y prolijo, de esta arquitectura: usuarios externos -> load balancer público -> 2 VMs de aplicación en subnet privada -> Autonomous Database Serverless. Quiero que quede presentable para mostrar directo en PowerPoint. No me pidas YAML ni setup adicional.
```
### Brand icons + OIC + dual output
```text
Generate a simple high-level integration diagram for this flow: Slack -> Oracle Integration Cloud (OIC) -> Jira Service Management -> My Oracle Support. Add clear Client, Oracle, and External layers. Use brand icons for Slack and Jira Service Management, and deliver both .drawio and .pptx.
```
### Real multicloud topology
```text
Generate a high-level architecture diagram for this scenario: 1 PostgreSQL in OCI Ashburn, accessed from GCP Virginia through interconnect. PostgreSQL connects internally to 1 Autonomous Database Serverless, which also has 1 refreshable clone in the same region but in a different AD. Deliver both .drawio and .pptx. Keep it simple, executive-friendly, and technically correct.
```
### Discount-aware BOM
```text
Gere um BOM em USD para este cenário: PostgreSQL no OCI com 4 OCPU e 500 GB, ADB-S com 200 ECPU e 1 TB BYOL, 1 refreshable clone com o mesmo sizing e FastConnect de 1 Gbps. Aplique 11% de desconto, 12 meses, 24 horas por dia. Quero o arquivo .xlsx e um resumo claro do custo mensal e anual.
```
## Knowledge Base
The KB is the moat — field experience, not documentation regurgitation.
@@ -154,7 +191,13 @@ kb/services/dbexpert-api-reference.yaml # API endpoints and refresh procedure
### Architecture Center Catalog
**123 Oracle Architecture Center reference architectures** (`kb/architecture-center/catalog.yaml`) covering Database@Azure/AWS/Google Cloud, networking, security, AI/ML, migration, HA/DR, and more.
**123 Oracle Architecture Center reference architectures** (`kb/architecture-center/catalog.yaml`) covering Database@Azure/AWS/Google Cloud, networking, security, AI/ML, migration, HA/DR, and more. Each entry includes title, URL, tags, services, and a 1-line summary; **121 also have a cached `_description.md`** with the full "About this architecture" text fetched from docs.oracle.com.
Cached locally under `kb/diagram/assets/archcenter-refs/<slug>/`:
- `_description.md` — Oracle's architecture rationale (used by both the lookup tool and SKILL.md option 10 "Reference architecture lookup")
- `*.drawio` — official editable source for ~110 references (where Oracle ships a zip)
- `_template.yaml` — extracted `absolute_layout` scaffold so new diagrams can start from Oracle geometry instead of from scratch
- `*.svg` / `*.png` — raster fallback for the rest
During **Phase 2 (DESIGN)**, the skill automatically matches the proposed architecture against the catalog:
@@ -166,8 +209,20 @@ python tools/refresh_arch_catalog.py --whats-new # crawl What's New pages
python tools/refresh_arch_catalog.py --url <url> # add a single entry
python tools/refresh_arch_catalog.py --validate # validate catalog integrity
python tools/refresh_arch_catalog.py --check-links # check for broken URLs (404s, redirects)
# Topology lookup — base your diagram on the closest Oracle reference
python tools/archcenter_pattern_lookup.py "mysql heatwave high availability load balancer"
python tools/archcenter_pattern_lookup.py "fastconnect exacs cross region" --top 10
# Re-fetch description text after a catalog refresh
python tools/archcenter_description_fetcher.py --limit 200
# Re-download cached drawio/svg/png assets after a catalog refresh
python tools/archcenter_zip_downloader.py # idempotent; skips slugs whose folder already has a .drawio
```
The cached assets under `kb/diagram/assets/archcenter-refs/` (~83MB) are committed so the skill works offline. Lookup uses a local index for near-instant matches, and can be rebuilt manually when needed. Refresh quarterly or when `refresh_arch_catalog.py --whats-new` adds entries — both downloader and description fetcher are idempotent and only fetch what's missing.
### KB Health & Freshness
The KB is automatically monitored for staleness and broken links:
@@ -177,7 +232,8 @@ The KB is automatically monitored for staleness and broken links:
| **Broken links** | `python tools/refresh_arch_catalog.py --check-links` | Weekly (CI), or on demand |
| **Stale prices** | `python tools/refresh_sku_catalog.py --validate` | Weekly (CI), or on demand |
| **KB freshness** | `python tools/kb_freshness.py --check` | On skill startup (pre-flight) |
| **Diagram quality** | `python scripts/validate-diagram.py <file.drawio>` | After every diagram generation |
| **Diagram spec geometry** | `python tools/diagram_spec_validator.py --spec <spec.yaml>` | Auto, before every drawio/PPTX render |
| **Diagram XML output** | `python tools/drawio_visual_validator.py <file.drawio>` | Auto, after `oci_diagram_gen.py` saves |
**Automated CI/CD:**
- **Deploy workflow** (`.gitea/workflows/deploy.yaml`) — auto-deploys to MCP server on every push to `main`
@@ -283,8 +339,11 @@ Option 8 in the menu generates a business case deck for customer internal approv
| Cover | Dark - Title_Pillar | Customer name + subtitle |
| Executive Summary | Impact Statement | Bold 1-sentence opportunity |
| Business Drivers | Multi Statement | 3 key drivers: Why now |
| TCO Comparison | Blank + Table | Current vs OCI (3-5 year) |
| ROI Headline | Blank + Metric | Big number (e.g., "2080% ROI") |
| TCO Comparison | Blank + Table | Current/as-is run-rate vs target/to-be run-rate |
| BOM + Operations Breakdown | Blank + Tables | Cloud services, storage/infra, GoldenGate, operations, one-time bridge |
| Forecasted TCO | Blank + Table | 24M/36M annual run-rate snapshots, not cumulative totals |
| TCO Crossover | Native shapes | ADB-S vs ADB-D annual TCO and first cheaper period |
| Business Value Model | Blank + Table | Financial baseline, architecture benefit, risk-adjusted value, KPIs |
| Value Drivers | Blank + Cards | 4 categories: Cost, Risk, Agility, Innovation |
| Risk Assessment | Blank + 2-Column | Migration risks vs Do-nothing risks |
| Roadmap | Blank + Timeline | Implementation phases |
@@ -292,6 +351,12 @@ Option 8 in the menu generates a business case deck for customer internal approv
Uses the **Oracle FY26 official PowerPoint template** with Redwood design system.
For ADB-S to ADB-D cases, the generator keeps workload ECPU demand separate
from ADB-D physical capacity. Dedicated footprint is modeled as fixed DB server
and storage server infrastructure; projected BOMs are annual run-rate snapshots
at the horizon. Risk-reduction value is converted to USD only when the customer
provides business impact per degraded/outage hour.
```bash
python tools/oci_bizcase_gen.py --spec business-case.yaml --output business-case.pptx
```
@@ -344,6 +409,8 @@ If you paste discovery notes directly, the skill skips the menu and goes straigh
## Tools
All major generators accept either the canonical nested YAML specs or the flatter MCP payload aliases used by hosted clients.
```bash
# Slide deck generation (technical proposal)
python tools/oci_deck_gen.py --spec examples/proposal-spec.yaml --output proposal.pptx
@@ -355,19 +422,36 @@ python tools/oci_pdf_gen.py --spec examples/proposal-spec.yaml --output proposal
# Business case deck
python tools/oci_bizcase_gen.py --spec business-case.yaml --output business-case.pptx
# Architecture diagram
python tools/oci_diagram_gen.py --spec examples/diagram-spec.yaml --output arch.drawio
# Architecture diagram — see docs/skill/output-formats.md
# § "Standard diagram-generation procedure (MANDATORY)" for the full
# workflow: ref-arch lookup → pre-generation review → spec authoring
# → automatic spec validator → render → visual verification.
# Supports OCI fallback aliases for services whose official toolkit icons
# are still missing (for example PostgreSQL/Redis) plus `brand_icon` for
# third-party systems such as Slack and Jira in both drawio and PPTX.
python tools/archcenter_pattern_lookup.py "<topology keywords>" # 1. find canonical Oracle reference
python tools/oci_diagram_gen.py --spec examples/diagram-spec.yaml --output arch.drawio # 2. render (validators run automatically)
python tools/oci_pptx_render.py --pptx arch.pptx --output arch.png --width 1600 # 3. rasterize PPTX for visual review
# Validate diagram quality (icon sizes, overlaps, container overflow)
python scripts/validate-diagram.py arch.drawio
# Pre-render geometry validator (auto-invoked by both renderers; CLI for ad-hoc spec checks)
python tools/diagram_spec_validator.py --spec examples/diagram-spec.yaml --strict
# Post-render XML validator (auto-invoked inside OCIDiagramGenerator.save())
python tools/drawio_visual_validator.py arch.drawio
# Output orchestrator (multiple formats at once)
python tools/oci_output.py --spec examples/proposal-spec.yaml --format full --output-dir output/
python tools/oci_output.py --spec examples/exacs-bom-spec.yaml --format bom --output-dir output/
# BOM / AppCA workbook
python tools/oci_bom_gen.py --spec examples/exacs-bom-spec.yaml --output customer-bom.xlsx
python tools/oci_bom_gen.py --spec examples/exacs-bom-spec.yaml --output customer-appca.xlsx --appca
# Architecture Center catalog
python tools/refresh_arch_catalog.py --validate
python tools/refresh_arch_catalog.py --whats-new
python tools/refresh_arch_catalog.py --check-links
python tools/archcenter_pattern_lookup.py "adb gcp fastconnect" --rebuild-index
# Feature compatibility
python tools/feature_matrix_cli.py check "Auto Scaling" adb_s 23ai
@@ -426,6 +510,28 @@ For temporary overrides (e.g., focusing on a specific customer), create `AGENTS.
Full setup details: [`codex/README.md`](codex/README.md)
#### Keeping the Claude and Codex skills in sync
The root `SKILL.md` (read by Claude Code) and `.agents/skills/oci-deal-accelerator/SKILL.md` (read by Codex) MUST stay byte-aligned modulo an auto-generated banner. If they drift, the two agents give the user different instructions.
Three layers of defense, run from least to most enforcement:
1. **Local pre-commit hook (recommended once per clone):**
```bash
make install-hooks
```
Sets `core.hooksPath = .githooks`. From then on, any commit that touches `SKILL.md` auto-runs `scripts/sync-skill.py` and stages the regenerated `.agents/` copy in the same commit. No manual step required.
2. **Manual sync (anytime):**
```bash
make sync-skill # write the .agents/ copy from SKILL.md
make lint # check (also runs sync --check)
```
3. **CI gate (`.gitea/workflows/skill-sync.yaml`):** every push/PR runs `python scripts/sync-skill.py --check` and fails the build if the two files have drifted. Catches anyone who skipped the hook.
**Direction is always root → `.agents/`.** The `.agents/` copy is auto-generated; do NOT edit it directly — the next sync will silently overwrite your changes. Both the local pre-commit hook and the CI gate REJECT a commit/PR that stages `.agents/skills/oci-deal-accelerator/SKILL.md` without a matching root `SKILL.md` change. If you find yourself wanting to tweak the Codex side specifically, that signal belongs in `AGENTS.md` (Codex-only project instructions) — `SKILL.md` content stays unified across both agents.
## Roadmap
### ECAL Completeness (see `docs/ecal-gaps-backlog.md` for full list)

112
SKILL.md
View File

@@ -83,10 +83,10 @@ Present these options as a compact numbered list. Each option has a bold title f
```
DESIGN & PROPOSE
─────────────────
1. 📋 Full proposal — *notes → architecture + deck + diagram + costs*
2. 📐 Architecture diagram — *YAML or description → .drawio*
3. 📊 Slide deck — *architecture → .pptx*
4. 💰 Cost estimate — *services + sizing → PAYG vs BYOL*
1. 📋 Full proposal — *notes → architecture + deck + native PPTX diagram + costs*
2. 📐 Architecture diagram — *description/sketch → .excalidraw → .drawio or native PPTX*
3. 📊 Slide deck — *architecture → .pptx with native OCI diagram*
4. 💰 Cost estimate — *quick PAYG/BYOL comparison while you scope (terminal + optional deck)*
VALIDATE & CHECK
─────────────────
@@ -110,19 +110,78 @@ Present these options as a compact numbered list. Each option has a bold title f
SA TOOLS
─────────────────
13. 📦 BOM generator — *services + quantities → .xlsx Bill of Materials*
13. 📦 BOM generator — *formal .xlsx artefact you send to the customer*
14. 📤 BOM for AppCA — *BOM → .xlsx ready to import into AppCA*
━━━━━━━━━━━━━━━━━━━━━━━
Pick a number, or just describe what you need.
```
### Example Direct Requests
If the user asks for examples, or skips the menu and writes a natural-language request, prompts like these map directly to the capabilities above:
- `Generame un diagrama nativo en .pptx, simple y prolijo, de esta arquitectura: usuarios externos -> load balancer público -> 2 VMs de aplicación en subnet privada -> Autonomous Database Serverless. Quiero que quede presentable para mostrar directo en PowerPoint. No me pidas YAML ni setup adicional.`
- `Sketch this architecture first for Excalidraw: external users -> public load balancer -> private app VMs -> Autonomous Database. Give me a native .excalidraw file so I can review and collaborate before making the formal diagram.`
- `Generate a simple high-level integration diagram for this flow: Slack -> Oracle Integration Cloud (OIC) -> Jira Service Management -> My Oracle Support. Add clear Client, Oracle, and External layers. Use brand icons for Slack and Jira Service Management, and deliver both .drawio and .pptx.`
- `Generate a high-level architecture diagram for this scenario: 1 PostgreSQL in OCI Ashburn, accessed from GCP Virginia through interconnect. PostgreSQL connects internally to 1 Autonomous Database Serverless, which also has 1 refreshable clone in the same region but in a different AD. Deliver both .drawio and .pptx. Keep it simple, executive-friendly, and technically correct.`
- `Gere um BOM em USD para este cenário: PostgreSQL no OCI com 4 OCPU e 500 GB, ADB-S com 200 ECPU e 1 TB BYOL, 1 refreshable clone com o mesmo sizing e FastConnect de 1 Gbps. Aplique 11% de desconto, 12 meses, 24 horas por dia. Quero o arquivo .xlsx e um resumo claro do custo mensal e anual.`
### Behavior Rules
- If the user picks **1**, ask: "Paste your discovery notes (meeting notes, emails, whatever you have)."
- If the user picks **2**, ask: "Describe the architecture you want to diagram, or paste a YAML spec if you have one."
- If the user picks **3**, ask: "Describe the architecture or paste the spec. I'll generate the deck."
- If the user picks **4**, ask: "What services and sizing? (e.g., 'ADB-S 8 OCPU + 2 VMs + FastConnect')"
- If the user picks **2**, ask **two explicit questions** in one message and wait for both answers before doing anything else:
```
1. Describe the architecture you want to diagram (or paste a YAML spec if you have one).
2. Which output format(s) do you want? Pick one or more:
(a) sketch — native .excalidraw whiteboard draft for brainstorming
(b) .drawio — editable technical diagram
(c) .pptx — native Oracle-style PowerPoint diagram/slide
(d) sketch + .drawio
(e) sketch + .pptx
(f) all
```
If the user chooses **sketch only**, create a concise sketch spec and run `python tools/oci_excalidraw_gen.py --spec <sketch-spec.yaml> --output <output-dir>/architecture-sketch.excalidraw`. Save the generated `.excalidraw` file and companion `.md` instructions in the engagement output folder. Present the file list and the simple import/share workflow from the companion `.md` as the primary deliverable. Optionally save `architecture-sketch.mmd` as a secondary source when Mermaid is useful, but the native `.excalidraw` file is the draft artifact. Do not run the formal `absolute_layout` renderer unless the user asks to promote the sketch to `.drawio` or `.pptx`.
If the user chooses **sketch plus formal output**, produce the `.excalidraw` draft first and ask the user to confirm or adjust the intent before formal rendering. If the user explicitly says to generate all outputs without another checkpoint, generate the sketch and continue. If the user later uploads or references an edited `.excalidraw` from Excalidraw.com, treat it as visual discovery/reference input for the formal `.drawio` / `.pptx` flow; do not blindly convert its rough geometry into the final source of truth.
If the user provides an existing `.excalidraw` file and asks to convert it to `.drawio`, default to **Formal OCI diagram** unless they explicitly ask for a literal/whiteboard copy:
- **Hard rule:** do **not** hand-roll draw.io XML with inline Python for this path. Use the repo tools below. If `python` is not available, use `.venv/bin/python` or `python3`; do not fall back to a custom converter.
- **Formal OCI diagram (default)** — run `.venv/bin/python tools/excalidraw_to_oci_diagram.py --input <file.excalidraw> --output <output-dir>/<name>-oci.drawio --spec-output <output-dir>/<name>-oci.yaml`. This extracts the approved sketch intent, writes `*-analysis.yaml` and `*-review.md`, generates an `absolute_layout` YAML, then renders a new Oracle-style `.drawio` through `oci_diagram_gen.py` with OCI containers, icons, connector styles, and validators. For complex sketches (multicloud, hub-spoke, migration/cutover, cross-region DR, multiple regions/VCNs), run the same command with `--mode review` first, inspect/refine the generated analysis/spec, then render.
- **Literal sketch conversion (secondary)** — run `.venv/bin/python tools/excalidraw_to_drawio.py --input <file.excalidraw> --output <output-dir>/<name>-literal.drawio` only when the user asks to preserve the exact whiteboard look. This is an editable bridge artifact and does **not** infer OCI icons/services.
- **Both** — produce the formal OCI `.drawio` first, then the literal bridge if useful for comparison.
For any `.drawio` or `.pptx` output, **follow these steps in order — do NOT skip step 1**:
1. **Reference-architecture lookup.** Run `python tools/archcenter_pattern_lookup.py "<topology keywords>"` against `kb/architecture-center/catalog.yaml` (123 Oracle-curated entries with cached `.drawio` / `_description.md` / `_template.yaml` under `kb/diagram/assets/archcenter-refs/`). Pick the highest-scoring entry whose topology matches.
- **The cached `_template.yaml` is your YAML SCAFFOLD** — auto-extracted from the canonical `.drawio` by `tools/archcenter_drawio_to_template.py`. It carries Oracle's container geometry (region/vcn/ad/subnet bboxes), service positions, and edge waypoints in the `absolute_layout:` shape your spec uses. Copy it as the starting point, rename ids, fill in `type:` for services (the extractor leaves `type: TODO_identify` because the canonical icon TYPE is encoded in stencil bytes — pick the right alias from the renderer's TYPE_TO_ICON), and adapt to the customer's components. Lookup result surfaces it as `cached: yaml=<path>`.
- **The cached `.drawio` is the visual source of truth** if the template extractor missed something — open it (drawio.exe, the SVG companion, or the XML) for the canonical look.
- **Migration/cutover + multicloud templates.** Also check `kb/diagram/templates/catalog.yaml`. Use `renderable_templates` when the user asks for an operational cutover/runbook view (for example ADB-S → ADB-D with OGG forward/reverse replication) instead of a canonical steady-state Architecture Center topology.
- **Do NOT use `examples/` as a geometry source.** `examples/` is previous user output, not authoritative. The `_template.yaml` covers everything `examples/` was being abused for.
- **Lookup budget: max 2 queries — never loop.** If query 1 returns nothing convincing, run ONE refinement (broader phrasing or different keyword angle), then STOP. Re-querying the catalog 3+ times to find a "better" match is the dominant time-sink in this phase — the catalog has 123 entries indexed once; if two passes can't surface a topology match, none exists. Output of the lookup tool also surfaces a **`⚠ KNOWN GAP`** banner at the top whenever the query touches a documented gap (e.g. OCI-native services accessed FROM GCP via Cross-Cloud Interconnect, or OCI Cache/Redis/PostgreSQL as primary subject). When that banner appears, follow its **Recommended composition** verbatim instead of running more queries — it lists the primitives to combine. When NO gap banner appears AND no top-3 entry matches the topology, present the closest 3 to the user with: *"No exact ref-arch matches. Closest hits are X / Y / Z. I can either base the diagram on the closest of these (geometry transfers, service names don't), or compose from `<list specific slugs / patterns>`. Which?"* — let the user pick the chassis instead of guessing.
2. **Pre-generation review.** Confirm the component list with the user (REQUESTED + TECHNICAL DEPENDENCIES per the whitelist).
3. **Author the spec in `absolute_layout` shape** — this is REQUIRED. Do NOT use the legacy workload-driven shape (`tenancy → regions → compartments → services`); it does not resolve OCI icon stencils, does not run through the spec validator, and produces wireframe-looking output (rectangles with text instead of real OCI icons). Every container, service, label, and connection needs explicit `(x, y, w, h)`.
**Where to look up valid `type:` values for services:** the authoritative sources are (1) `TYPE_TO_ICON` in `tools/oci_pptx_diagram_gen.py` (PPTX path) and `ICON_TYPE_ALIASES` in `tools/oci_diagram_gen.py` (drawio path), and (2) the slug keys in `kb/diagram/oci-icons.json` (drawio) and `kb/diagram/oci-pptx-icons-index.json` (PPTX). Do NOT grep `examples/` for `type:` patterns to discover valid slugs — `examples/` are previous user outputs that may use stale or non-canonical slugs. Both renderer files and both index files are exhaustive and current.
**Newer OCI services without a toolkit icon** (OCI Cache with Redis / Valkey, OCI PostgreSQL, etc. — services GA after the v24.2 toolkit shipped): use the generic icon as the canonical fallback (Oracle's own ref archs do the same — they embed custom inline SVG over the generic icon). The renderer's alias tables already route `type: redis` / `cache` / `valkey` / `postgresql` to the generic `database` stencil. Pair with an explicit `label:` carrying the real service name (e.g. `label: "OCI Cache (Redis)"`). When Oracle ships a v25+ toolkit with these icons, update `kb/diagram/oci-icons.json` + the alias tables and the next render uses the real icon automatically.
4. **Spec validator runs automatically** before either renderer (`tools/diagram_spec_validator.py`). It runs ONLY on `absolute_layout` specs — that's another reason workload-driven is forbidden. Fix any errors before re-rendering.
5. **Render.** `oci_diagram_gen.py` for drawio, `oci_deck_gen.py` for PPTX.
6. **Visually verify.** `tools/oci_pptx_render.py` to rasterize, then read the PNG.
Full reference: `docs/skill/output-formats.md` § "Standard diagram-generation procedure (MANDATORY)".
- If the user picks **3**, ask: "Describe the architecture or paste the spec. I'll generate the deck with a native OCI PowerPoint diagram when the architecture is structured enough."
- If the user picks **4**, ask: "What services and sizing? (e.g., 'ADB-S 8 OCPU + 2 VMs + FastConnect'). License model — PAYG, BYOL, or both?"
Then follow the cost-estimate flow:
1. **Catalog first, web never.** `grep` [`kb/pricing/oci-sku-catalog.yaml`](kb/pricing/oci-sku-catalog.yaml) (auto-refreshed, authoritative) for the requested SKUs and consult [`docs/bom-cookbook.md`](docs/bom-cookbook.md) for copy-paste recipes (ExaCS X11M BYOL, ADB-Dedicated, ADB-S + Block, FastConnect, etc.). Use `kb/pricing/compute.yaml` for shape-level lookups. Do NOT reach for WebSearch / WebFetch / `oracle.com` for list prices — the catalog IS the source.
2. **Staleness gate.** Read `last_verified` at the top of the catalog. If >60 days stale, warn the user and offer `python tools/refresh_sku_catalog.py --refresh` before quoting. If <=60 days, proceed without web lookups.
3. **Catalog miss policy.** If a SKU is genuinely absent after `grep` (not "I didn't find it on first try"), state it explicitly, then run `python tools/refresh_sku_catalog.py --refresh` and re-grep. Only if a fresh catalog still doesn't surface it is `oracle.com/cloud/price-list/` an acceptable fallback — and cite the source URL next to the part number.
4. **Source extraction.** When the request references a customer artefact (`.pptx`, BOM, quote), extract the topology / sizing from the artefact first, list each scenario's components, then map to SKUs. Show the mapping (component → SKU) so the SA can audit it.
5. **Quote shape.** Per scenario list: SKU + product name + metric + list price USD + quantity + monthly subtotal. End with total $/month and total $/year. Cite the catalog's `last_verified` date in the output.
6. When both PAYG and BYOL are requested, present them side-by-side (same SKU rows, two price columns). Save the cost estimate to `examples/<customer>-cost-estimate.yaml` and present the formatted table in the terminal.
7. **Disclaimer (mandatory).** Read the `disclaimer:` field from `kb/pricing/oci-sku-catalog.yaml` and append it verbatim — as a footer line under the terminal table, and (if a deck is generated) as a final "Commercial Disclaimer" slide. Do NOT paraphrase or rewrite; the field already carries Oracle's sample-quote boilerplate plus the "reference only / no client-specific discounts" clauses. `tools/oci_bom_gen.py` already reads this field for BOM xlsx output.
8. **Deck verification (if a deck is generated).** Open the produced `.pptx` with `python-pptx` and assert: (a) slide count matches spec, (b) each slide's expected title is present, (c) chart types match what the spec asked for (e.g. `COLUMN_CLUSTERED`, `COLUMN_STACKED`), (d) the disclaimer slide is the last one. Print a one-line `deck OK: <N> slides, titles=[...]` summary so the SA can audit at a glance. Rasterizing to PNG via PowerPoint is not always available on Linux/WSL — structural validation is the floor, not optional.
- If the user picks **5**, ask: "Describe your architecture or paste the spec. I'll run the 5-pillar review." Then follow the WA review flow:
1. Parse input to build a workload profile YAML (flags) and architecture YAML
2. If input is a `.pptx` file, extract text content from all slides to infer architecture and workload context
@@ -141,13 +200,22 @@ Pick a number, or just describe what you need.
1. Parse input into `templates/business-case.yaml` structure
2. Identify business drivers and urgency from discovery notes
3. Estimate TCO comparison using `kb/pricing/oci-sku-catalog.yaml` (live SKU prices), `kb/pricing/compute.yaml` (shape-level), `kb/field-knowledge/pricing-knowledge.yaml` (billing models, BYOL rules, free tiers), and `kb/sizing/*`
4. Calculate ROI and payback period
5. Map value drivers (cost, risk, agility, innovation) with quantified evidence
6. Assess migration risks from `kb/field-knowledge/gotchas.yaml` and do-nothing risks
7. Compare with alternatives using `kb/competitive/*`
8. Generate implementation roadmap based on engagement tier
9. Produce a 8-10 slide deck using Oracle FY26 template (`config/oracle-pptx-layouts.yaml` → `business_case` type)
10. Output: business-case.pptx + business-case.yaml (reusable spec)
4. For ADB-S to ADB-D cases, use the reusable `adbs_to_adbd` model:
- keep workload/billable ECPU demand separate from dedicated physical capacity (`DB nodes × ECPU per DB node`)
- do not assume ADB-D uses 100% physical capacity; show utilization explicitly
- keep workload demand comparable between ADB-S and ADB-D unless customer data says otherwise
- model ADB-D fixed DB server + storage server infrastructure separately from workload ECPU
- keep ADB-S as-is components explicit: primaries, local ADG, cross-region standby, refreshable/read clones, read clones, GoldenGate
5. Separate financial views: current/as-is run-rate, target/to-be run-rate, forecasted TCO by horizon, and scenario comparison when applicable. Avoid ambiguous labels such as `OCI Annual`; use scenario labels like `ADB-S As-Is`, `ADB-D Dedicated`, `Incremental Investment`, and `TCO Crossover`.
6. Generate companion BOMs for current as-is, to-be steady state, and 24M/36M projected as-is/to-be annual run-rate snapshots. Projected BOMs are not cumulative multi-year totals.
7. Model read architecture explicitly: ADB-S may require refreshable/read clones because standby is not the application read path; ADB-D may use Local ADG read-only standby and retire steady-state clones. Reflect this in BOM notes, value drivers, and risk/value slides.
8. Add storage economics: ADB-S per-GB storage, ADB-D fixed footprint, customer-provided base break-even when available, recalculated break-even for the proposed footprint, and visible storage offset.
9. Treat GoldenGate as `steady_state`, `migration_bridge_only`, or `migration_plus_fallback_months`. Bridge-only GoldenGate is Year-1 / one-time and is excluded from future steady-state BOMs.
10. Add a TCO crossover chart when multi-year forecast exists, defaulting to native PowerPoint grouped bars with executive labels (`Near-term`, `Year 1`, `Year 2`, `Year 3`) and delta bullets.
11. For risk-reduction cases, generate a Business Value Model instead of generic ROI percentages. Do not invent revenue impact; convert stability to USD only when the customer provides revenue-at-risk, transaction margin, fraud loss impact, or cost per degraded/outage hour.
12. Assess migration and inaction risks against the selected scenario only. Remove obsolete risks such as `if 4x3 is selected` after the customer has chosen `5x3`.
13. Produce an executive deck using Oracle FY26 template (`config/oracle-pptx-layouts.yaml` → `business_case` type), plus business-case YAML and generated BOM artefacts where applicable.
14. **Disclaimer + deck verification.** Append the `disclaimer:` field from `kb/pricing/oci-sku-catalog.yaml` as a final "Commercial Disclaimer" slide (verbatim — see option 4 step 7). Then run structural PPTX validation that reads text boxes, table cells, and grouped shapes; check slide count/titles, disclaimer-last, required assumptions, and forbidden obsolete phrases before reporting completion.
- If the user picks **9**, ask: "What topic? (e.g., 'DEP', 'TAC', 'maintenance window', 'vector search')"
- If the user picks **10**, ask: "What kind of architecture? (e.g., 'ADB + APEX', 'cross-region DR', 'data lakehouse')"
- If the user picks **11**, switch to finding intake mode:
@@ -193,7 +261,7 @@ Pick a number, or just describe what you need.
**BOM Output Rules:**
- NEVER include "Confidential: Internal ONLY" or any confidentiality marking
- ALWAYS include the Oracle Cost Estimator disclaimer at the bottom
- ALWAYS include the disclaimer from `kb/pricing/oci-sku-catalog.yaml` `disclaimer:` field at the bottom — `tools/oci_bom_gen.py` reads it automatically (do not duplicate, paraphrase, or maintain a second copy elsewhere)
- Only include SKUs the customer actually requested — never dump the full catalog
- Show cost proportions so the customer can see where their spend concentrates
- Use Excel formulas (not static values) so the customer can adjust quantities
@@ -216,7 +284,7 @@ After delivering an output, show elapsed time and offer the natural next step.
```
✅ Done — [task description] completed in [Xm Ys]
→ [A] Generate additional outputs (drawio / doc / xlsx)
→ [A] Generate additional outputs (sketch / drawio / doc / xlsx)
→ [B] Modify the architecture (add/remove/change services)
→ [C] Run Well-Architected review on this architecture
→ [D] Build a business case from this architecture
@@ -419,7 +487,7 @@ Full DELIVER guide: [docs/deliver-phase.md](docs/deliver-phase.md)
Every skill option that produces output MUST generate **readable, human-consumable output** as the primary deliverable. YAML files are structured backing data — they are never the final output shown to the user. Specifically:
- **Options 1-4, 8:** Primary output is `.pptx` (slide deck) and/or `.drawio` (diagram). YAML specs are saved alongside but never presented as the deliverable.
- **Options 1-4, 8:** Primary output is `.pptx` (slide deck), `.drawio` (diagram), and/or native `.excalidraw` sketch when the user requests draft mode. YAML/Mermaid specs are saved alongside when useful but never presented as the final deliverable.
- **Option 5 (WA Review):** Primary output is the **formatted terminal scorecard** (banner + pillar bars + gap tables + recommendations). YAML scorecard saved to `examples/` as backing data.
- **Option 12 (ECAL Readiness):** Primary output is the **formatted terminal scorecard** (phase scores + artefact checklist + gap analysis). YAML scorecard saved to `examples/` as backing data.
- **After any review/score:** When the user picks [C] "Export as slide", generate a 1-2 slide `.pptx` with the scorecard visualization using `tools/oci_deck_gen.py`.
@@ -434,9 +502,9 @@ See [docs/skill/output-formats.md](docs/skill/output-formats.md) for the per-cus
## Cookbook: Building Tool Payloads
Before mapping customer requirements to SKUs for `generate_bom`, `generate_bom_appca`, or `generate_cost_estimate`, check [docs/bom-cookbook.md](docs/bom-cookbook.md) — it has copy-paste recipes for common patterns (ExaCS X11M BYOL, ADB-Dedicated, ADB-S + Block + FastConnect) and explicitly names the gotchas that otherwise burn exploration turns (e.g. ADB-Dedicated shares infrastructure SKUs with ExaCS — there are no separate `adb_dedicated` SKUs in the catalog).
Any pricing or SKU work — cost estimate (option 4), BOM (option 13), BOM-AppCA (option 14), business-case TCO (option 8), scenario comparison from a customer artefact (`.pptx`, BOM, quote) — starts in the local catalog, not on the web. Check [docs/bom-cookbook.md](docs/bom-cookbook.md) for copy-paste recipes (ExaCS X11M BYOL, ADB-Dedicated, ADB-S + Block + FastConnect) and the gotchas that otherwise burn exploration turns (e.g. ADB-Dedicated shares infrastructure SKUs with ExaCS — there are no separate `adb_dedicated` SKUs in the catalog).
If a requirement does not match a recipe, `grep` [`kb/pricing/oci-sku-catalog.yaml`](kb/pricing/oci-sku-catalog.yaml) and consult `kb/services/` before inventing SKUs.
If a requirement does not match a recipe, `grep` [`kb/pricing/oci-sku-catalog.yaml`](kb/pricing/oci-sku-catalog.yaml) and consult `kb/services/` before inventing SKUs. See "What You Do NOT Do" for the web-lookup rule and `kb/pricing/oci-sku-catalog.yaml`'s `last_verified` for staleness handling.
---
@@ -544,6 +612,10 @@ KB lives under `kb/`. See [kb/README.md](kb/README.md) for the directory map, fr
- You do NOT replace the architect's judgment. You accelerate it.
- You do NOT generate pixel-perfect diagrams. You generate 80% drafts the architect refines.
- You do NOT make up pricing. If you don't have current pricing, estimate ranges.
- You do NOT use WebSearch / WebFetch / `oracle.com` for OCI list prices or SKU lookups. `kb/pricing/oci-sku-catalog.yaml` is auto-refreshed via `tools/refresh_sku_catalog.py` (Oracle apexapps pricing API) and is the source of truth — including for ECPU/OCPU rates, BYOL deltas, Exadata X11M part numbers, and ADB-D ECPU SKUs. Web fallback is allowed ONLY when (a) the SKU is genuinely absent after `grep` AND a fresh `--refresh` still does not surface it, or (b) the catalog's `last_verified` is >60 days stale and a refresh is not currently possible. In either case, cite the source URL alongside the part number. Reflexively reaching for WebSearch when the catalog already has the answer is the most common cost-estimate failure mode — don't.
- You do NOT claim features exist if you're unsure. Check the KB first.
- You do NOT do detailed project management. DELIVER artifacts are lightweight handover aids.
- You do NOT add services or components the user did not request.
- **The skill ships as an MCP server.** This repo is packaged and served via the hosted MCP at `https://mcp.tech-lad.com/deal-accelerator/mcp/`. Anything you change in the skill's runtime — `tools/`, `scripts/`, `kb/`, `SKILL.md`, `AGENTS.md`, `.agents/` — must keep working in that deployed environment, not just on the SA's laptop. Concrete implications: (1) NO machine-specific paths (use `pathlib.Path(__file__).resolve().parent.parent` or env vars, never hardcoded `/mnt/c/...` or `/home/diego/...`); (2) NO required network calls during normal operation (the MCP container won't have access to drawio.exe, paid APIs, or Diego's local files — opt-in via env vars like `DRAWIO_EXE` / `ANTHROPIC_API_KEY`, never required); (3) NO writes outside the repo tree (the MCP filesystem is the cloned repo, write only under `examples/`, `tmp/`, or the artifacts the skill is meant to produce); (4) NO new dependencies that aren't in `requirements.txt` (CI installs from there, the MCP container too); (5) any new tool must work in a fresh clone with `make venv` — no manual setup steps. Before adding a feature that depends on a binary, an external service, or a privileged operation, ask whether it'll work when the SA is hitting the MCP endpoint with no laptop attached.
- **You do NOT edit skill source code or tooling when the user is in "menu mode".** When the user invoked the skill via the welcome menu (options 114) or asked for one of the menu outputs (proposal, diagram, deck, BOM, WA review, etc.), your job is to USE the existing tools, not modify them. Do NOT touch `tools/`, `scripts/`, `kb/diagram/*.json`, or any other code/index file as part of fulfilling a menu request — even if you discover a bug or a missing alias mid-task. If you hit a tool gap (missing icon alias, broken renderer, type that doesn't resolve), surface it as a follow-up at the end of your reply (e.g. "I noticed `refreshable_clone` doesn't have a PPTX icon alias — flag this for the maintainer to add to `tools/oci_pptx_diagram_gen.py::TYPE_TO_ICON`") rather than silently patching it. Code edits happen in a separate "developer mode" engagement, not while the SA is generating customer artifacts. The two exceptions: (1) `kb/field-findings/tracker.yaml` via menu option 11 (the menu's purpose IS to write that file), and (2) writing the customer's spec/output YAML files under `examples/<customer>/` — those are the deliverable, not the skill itself.

45
config/brand-icons.yaml Normal file
View File

@@ -0,0 +1,45 @@
version: 1
# Resolution policy:
# 1. Prefer officially downloaded vendor assets committed under
# kb/diagram/brand-icons/official/
# 2. Fall back to vetted local assets under
# kb/diagram/brand-icons/fallback/
#
# The renderers resolve by alias first, then walk `resolution_order`
# until they find an existing file.
resolution_order:
- official_svg
- official_png
- fallback_svg
- fallback_png
icons:
slack:
label: Slack
aliases:
- slack_app
- slack_bot
official_png: kb/diagram/brand-icons/official/slack/slack_hash_256.png
jira:
label: Jira
aliases:
- atlassian_jira
official_svg: kb/diagram/brand-icons/official/jira/Jira_icon.svg
jira_service_management:
label: Jira Service Management
aliases:
- jsm
- jira-service-management
- jira service management
official_svg: kb/diagram/brand-icons/official/jira-service-management/Jira-Service-Management_icon.svg
jirasoftware:
label: Jira Software
aliases:
- jira_software
- jira-software
- jira software
fallback_svg: kb/diagram/brand-icons/fallback/jirasoftware.svg

View File

@@ -4,7 +4,7 @@
output_selection:
description: |
The architect can specify output format when requesting deliverables:
deck ← default, just the slide deck
deck ← default, slide deck with native OCI PowerPoint diagram when applicable
deck + drawio ← deck + editable diagram
deck + doc ← deck + detailed technical document
deck + xlsx ← deck + detailed cost spreadsheet
@@ -22,12 +22,12 @@ output_selection:
deck:
extension: ".pptx"
generator: "tools/oci_deck_gen.py"
description: "10-12 slide architecture proposal"
description: "10-12 slide architecture proposal with native OCI PowerPoint diagram when applicable"
drawio:
extension: ".drawio"
generator: "tools/oci_diagram_gen.py"
description: "Editable architecture diagram (draw.io)"
description: "Editable architecture diagram (draw.io) for technical editing workflows"
doc:
extension: ".docx"
@@ -133,7 +133,7 @@ deck_structure:
- number: 3
type: architecture_diagram
content: "Full architecture diagram (85% of slide)"
content: "Full architecture diagram (85% of slide), preferring native OCI PowerPoint shapes over pasted images"
style: "White background, diagram fills slide"
- number: 4

View File

@@ -0,0 +1,117 @@
asset:
bundled_path: kb/diagram/assets/OCI_Icons.pptx
manifest_path: kb/diagram/oci-pptx-icons-manifest.yaml
index_path: kb/diagram/oci-pptx-icons-index.json
env_var: OCI_ICONS_PPTX_PATH
search_globs:
- /mnt/c/Users/*/Downloads/OCI_Icons*.pptx
- ~/Downloads/OCI_Icons*.pptx
- kb/diagram/assets/OCI_Icons*.pptx
refresh:
sync_discovered_asset_into_bundle: true
choose_newest_discovered_match: true
instruction_index:
noise_contains:
- "copyright"
- "oracle and/or its affiliates"
noise_exact:
- "tip"
semantic_markers:
connectors_logical:
title_contains: "Connectors"
all_text:
- "Open Arrowhead style"
- "Bark color"
- "relationships between icons and grouping boxes"
connector_labels:
all_text:
- "connector labels"
- "Place connector labels on the horizontal portions"
grouping:
title_contains: "Grouping"
all_text:
- "OCI Region"
- "Availability Domain"
- "Compartment"
landscape_blank_template:
all_text:
- "Landscape Blank Template"
- "Location Canvas"
- "OCI Region"
portrait_blank_template:
all_text:
- "Portrait Blank Template"
- "OCI Region"
landscape_sample_db_dr:
all_text:
- "Landscape Sample"
- "Primary"
- "Standby"
- "Database"
- "VCN"
database_icons:
title_contains: "Database"
any_text:
- "ADB-D"
- "ATP-D"
- "ADW-D"
- "Data Guard"
migration_icons:
title_contains: "Migration"
any_text:
- "Database Migration"
- "Oracle Cloud Migration Advisor"
extracted_shapes:
grouping_labels:
- "OCI Region"
- "Availability Domain"
- "Fault Domain"
- "Tier"
- "Tenancy"
- "Compartment"
- "VCN"
- "Subnet"
database_icon_labels:
- "Database"
- "Oracle Autonomous Database"
- "ADW-D"
- "ATP-D"
- "ADB-D"
- "Oracle Exadata Database Service"
- "Data Safe"
- "NoSQL Database"
- "Database Management"
- "Data Guard"
- "Data Guard Recovery"
design_tokens:
palette:
bark: "312D2A"
bark_soft: "66615C"
gray_divider: "9E9892"
gray_tick: "C8C5C1"
bg_warm: "FBF6F0"
white: "FFFFFF"
oracle_red: "C74634"
oracle_red_soft: "AE562C"
oracle_blue: "3F7CC4"
oracle_green: "00875A"
oracle_amber: "E8A92F"
tl_green: "EAF2DE"
tl_yellow: "FBF1C7"
tl_amber: "F8D9A8"
tl_red: "F6CAC4"
typography:
primary_font: "Oracle Sans"
connector_style:
line_width_emu: 12700
line_width_soft_emu: 9525
color: "312D2A"
arrowhead:
type: "triangle"
width: "sm"
length: "sm"

View File

@@ -0,0 +1,63 @@
# Business Case Flow
Option 8 produces an executive business-case deck plus reusable YAML backing
data. For ADB-S to ADB-D cases, use `business_case.adbs_to_adbd`.
## ADB-S to ADB-D Rules
- Keep workload/billable ECPU demand comparable between ADB-S and ADB-D unless
the customer provides a different target demand.
- Dedicated physical capacity is a separate fixed footprint:
`DB nodes x ECPU per DB node`.
- Never model ADB-D at 100% utilization by default. Show utilization explicitly.
- ADB-D fixed infrastructure includes DB servers and storage servers; workload
ECPU demand remains a separate line.
- Projected BOMs are annual run-rate snapshots at the horizon, not cumulative
multi-year totals.
- GoldenGate can be `steady_state`, `migration_bridge_only`, or
`migration_plus_fallback_months`. Bridge-only GoldenGate is excluded from
future steady-state BOMs.
## Read Architecture
ADB-S and ADB-D can carry the same workload demand while using different read
architectures. ADB-S may require refreshable/read clones when standby is not the
application read path. ADB-D may use Local ADG read-only standby and retire
steady-state clones. The deck should call this out in BOM notes, value drivers,
and risk/value slides.
## Storage Economics
Storage economics are shown separately from aggregate TCO:
```text
break-even TB = fixed dedicated infra monthly cost / ADB-S storage USD per GB-month / 1024
```
Apply discounts uniformly when comparing scenarios. If customer material
provides a baseline break-even, show it beside the recalculated break-even for
the proposed footprint.
## Business Value
Risk-reduction cases use a Business Value Model instead of generic ROI
percentages. Do not invent revenue impact. Convert stability to USD only when
the customer provides revenue-at-risk, transaction margin, fraud loss impact, or
cost per degraded/outage hour.
Use:
```text
avoided degraded/outage hours x business impact per hour
```
Track success metrics such as CPU utilization, read latency, clone lag retired,
ADG read lag, GoldenGate/apply lag during migration, incidents avoided, and
degraded hours avoided.
## Validation
Business-case deck validation reads text boxes, table cells, and grouped shapes.
It checks expected titles, disclaimer-last, required assumptions, and forbidden
obsolete phrases such as `OCI Annual`, stale scenario risks, and unclear
language like `FTE-year`.

View File

@@ -25,7 +25,7 @@ Default output is a **slide deck (.pptx)**. The architect can specify:
| Format | Output |
|--------|--------|
| `deck` (default) | 10-12 slide presentation |
| `deck` (default) | 10-12 slide presentation, with native OCI PowerPoint diagram when applicable |
| `deck + drawio` | + editable architecture diagram |
| `deck + doc` | + technical document (15-25 pages) |
| `deck + xlsx` | + cost spreadsheet with formulas |
@@ -43,7 +43,7 @@ Slide count adapts to engagement tier (6-8 small, 10-12 standard, 12-16 complex)
2. **Value Story** — business driver, hypothesis, desired outcomes
3. **Service Tiering** — workload-to-tier mapping (Platinum/Gold/Silver/Bronze) with SLA, RTO/RPO
4. **Architecture Principles** — selected ECAL principles (Design/Deployment/Service) that govern the architecture
5. **Architecture Diagram** — fills 85% of slide
5. **Architecture Diagram** — fills 85% of slide; prefer native OCI PowerPoint shapes inside the deck when the architecture is structured enough
6. **Architecture Decisions** — 4-6 key decisions with rationale
7. **HA/DR** — topology + RTO/RPO per tier
8. **Security & Compliance** — controls grid, compliance badges
@@ -56,11 +56,86 @@ Slide count adapts to engagement tier (6-8 small, 10-12 standard, 12-16 complex)
15. **Well-Architected Scorecard** — 5-pillar traffic-light indicators
16. **Next Steps** — concrete SMART actions with dates
Use `tools/oci_deck_gen.py` for generation. Colors: teal `#2D5967`, copper `#AA643B`, purple `#804998`. Font: Segoe UI. Design standards: `config/output-formats.yaml`.
Use `tools/oci_deck_gen.py` for generation. Decks should prefer native OCI PowerPoint diagrams over pasted images when the architecture can be rendered from structured input. Colors: teal `#2D5967`, copper `#AA643B`, purple `#804998`. Font: Segoe UI. Design standards: `config/output-formats.yaml`.
## Architecture diagram
Use `tools/oci_diagram_gen.py` with OCI official styles from `kb/diagram/oci-toolkit-styles.yaml`. Containers, service blocks, connections, and typography rules are defined there.
Use `tools/oci_diagram_gen.py` with OCI official styles from `kb/diagram/oci-toolkit-styles.yaml` when the user wants an editable technical diagram (`.drawio`). For customer-facing or presentation-ready output, prefer the native PowerPoint path via `tools/oci_deck_gen.py` and the PPTX icon library/index under `kb/diagram/`.
### Standard diagram-generation procedure (MANDATORY)
Follow these steps for every diagram, in order. Skipping a step is the single most common source of layout regressions.
1. **Reference architecture lookup.** Run `python tools/archcenter_pattern_lookup.py "<topology keywords>"` against `kb/architecture-center/catalog.yaml` (123 entries). Pick the highest-scoring entry whose topology matches what the user asked for. The lookup surfaces cached `.drawio` / `.svg` under `kb/diagram/assets/archcenter-refs/<slug>/` — open it to copy proven container nesting, padding, and AD/subnet placement instead of inventing geometry.
2. **Pre-generation review (per SKILL.md § What You Do NOT Do).** Confirm the component list with the user. Never add services the user did not mention except via the explicit auto-include whitelist.
3. **Author the spec.** Use `absolute_layout` for ref-arch reproductions or any topology where geometry matters. Honor the geometry rules below (the spec validator enforces them).
4. **Spec validation runs automatically.** Both `tools/oci_diagram_gen.py` (drawio) and `tools/oci_pptx_diagram_gen.py` (PPTX, called via `oci_deck_gen.py`) call `tools/diagram_spec_validator.py` before emitting any output. A `fail` status raises and aborts generation — fix the geometry, re-run.
5. **Render.** Generate the `.drawio` and/or `.pptx`. The drawio path additionally runs `drawio_visual_validator.py` post-render to catch anything the spec validator missed (font sizes, off-canvas, duplicate ids).
6. **Visually verify.** Rasterize the PPTX with `python tools/oci_pptx_render.py --pptx X.pptx --output X.png --width 1600` and inspect the PNG before reporting success.
### Geometry rules for `absolute_layout`
These rules are enforced by `tools/diagram_spec_validator.py` and exist because each one corresponds to a regression that previously shipped to the user:
- **Container padding ≥ 12px.** Every nested container must keep ≥12px between its bottom edge and its parent's bottom edge. Otherwise the borders visually merge (`CONTAINER_PADDING_VIOLATION`).
- **Subnet height ≥ label band + 12px.** A container labeled at 11pt needs h ≥ ~30px to avoid the label collapsing onto the bottom edge. Public-subnet bands holding an icon need to clear icon height + label band + breathing room (`CONTAINER_TOO_THIN`).
- **Labels stay inside their parent, ≥ 6px from the bottom edge.** Free-floating labels under a service icon must not cross or sit within 6px of the enclosing subnet's bottom edge (`LABEL_OVERFLOW_PARENT`).
- **AD columns nest INSIDE the VCN, never beside it.** Otherwise AD borders align with VCN borders and visually merge.
- **Subnets may span AD columns** (regional public subnet, cross-AD DB subnet) — that is the canonical Oracle pattern for HA topologies; do not split a regional subnet per AD.
### Diagram modes
The diagram generator accepts two spec shapes — but only ONE is acceptable for any output an SA shows a customer:
1. **`absolute_layout` (REQUIRED for any new diagram).** Explicit `(x, y, w, h)` for every container, service, label, and connection. Resolves real OCI stencils from `kb/diagram/oci-icons.json`, runs through `tools/diagram_spec_validator.py` (geometry rules), and produces output visually consistent with Oracle Architecture Center references. **This is the only mode the standard procedure supports.** Pair it with the ref-arch lookup (`tools/archcenter_pattern_lookup.py`) so geometry derives from a canonical Oracle reference, not invented from scratch.
2. **Workload-driven (DEPRECATED).** `tenancy → region(s) → vcn(s) → subnet(s) → service(s)`. The generator auto-lays out blocks but **does NOT resolve OCI icon stencils** — services render as colored rectangles with text labels, connector text gets baked into edge values (which the connector-label rule forbids), and the spec validator does NOT run. Output looks like a wireframe placeholder, not an architecture diagram. Kept only for back-compat with very old specs; do not author new specs in this shape.
```yaml
absolute_layout:
canvas: {width: 720, height: 420}
containers:
- {id: region, type: region, label: "OCI Region", x: 0, y: 0, w: 720, h: 420}
- {id: vcn, type: vcn, label: "VCN 10.10.0.0/16", x: 28, y: 52, w: 670, h: 348}
services:
- {id: drg, label: "", type: drg, x: 8, y: 200, w: 55, h: 66}
- {id: adb, label: "", type: adb_d, x: 230, y: 240, w: 60, h: 80}
labels:
- {id: lbl_drg, text: "DRG", x: 8, y: 268, w: 55, h: 14, fontSize: 700}
connections:
- {id: c1, from: drg, to: adb, type: standard, points: [[63, 233], [260, 240]]}
```
`fontSize` is shared with the PPTX `absolute_layout` schema — it's hundredths of a point (720 → 7.2pt). The drawio renderer auto-converts.
The Architecture Center reconstruction pipeline lives at `tools/archcenter_case_runner.py` (single case) and `tools/archcenter_batch_driver.py` (batch). Reference: `kb/diagram/reference-layouts/archcenter-batch-runner.yaml`.
### Pre-delivery validation (automatic)
Both generators run sanity checks before the file ships, so a broken artifact never reaches the user:
- **`tools/diagram_spec_validator.py`** — runs automatically *before* either renderer (drawio or PPTX). Validates the parsed `absolute_layout` for `CONTAINER_TOO_THIN`, `CONTAINER_PADDING_VIOLATION`, and `LABEL_OVERFLOW_PARENT`. A fail aborts generation. Set `OCI_DIAGRAM_VALIDATOR_SOFT=1` to demote errors to warnings.
- **`tools/drawio_visual_validator.py`** — runs automatically inside `OCIDiagramGenerator.save()`. Hard-fails on `fontSize ≥ 50pt` (catches the PPTX-cents-of-pt → drawio-pt unit confusion that produced 700pt labels), duplicate cell ids, off-canvas geometry, and dangling edge endpoints. Reports OK/warnings/errors to stderr. Pass `--strict` on the CLI to make errors fail the build.
- **`OCIDeckGenerator.save()` post-check** — verifies `[Content_Types].xml` declares a `<Default>` for every embedded media extension (PowerPoint refuses to open a deck and prompts to "repair" it when this is missing — the SVG-backed icons in `OCI_Icons.pptx` are the canonical case), and that no slide rels point to absent media or duplicate cNvPr ids.
- **`tools/drawio_fidelity_eval.py`** — pixel-diff the rebuilt drawio against a canonical Architecture Center PNG. Runs automatically when the spec carries `source.diagram_asset` (or via `--reference-png` on the CLI). Default rendering path is the SVG companion via `cairosvg` (works in any environment); the rebuilt-drawio path through the actual `draw.io` binary is opt-in via the `DRAWIO_EXE` env var (the binary is not bundled with the skill — install on demand).
CLI usage:
```bash
# Standard run (validators on by default)
python tools/oci_diagram_gen.py --spec my-spec.yaml --output out.drawio
# Fail the build if validator finds errors
python tools/oci_diagram_gen.py --spec my-spec.yaml --output out.drawio --strict
# Fidelity comparison vs canonical PNG
python tools/oci_diagram_gen.py --spec my-spec.yaml --output out.drawio \
--reference-png kb/diagram/reference-layouts/.../canonical.png
# Strict draw.io binary path (opt-in)
DRAWIO_EXE=/usr/bin/drawio python tools/oci_diagram_gen.py --spec ... --reference-png ...
```
Skip validators only when intentionally generating a fixture or test: `--no-validate`.
## Service categorization

View File

@@ -0,0 +1,89 @@
business_case:
customer_name: "Synthetic Commerce Co."
cover_subtitle: "ADB-S to ADB-D Migration Business Case"
prepared_by: "Diego Cabrera"
prepared_by_role: "Solutions Architect"
date: "2026-05-08"
executive_summary: >
Synthetic Commerce Co. is evaluating a move from ADB-S to ADB-D for a
fraud analytics workload where predictable performance, read-path cleanup,
and storage economics are more important than a pure near-term cost takeout.
drivers:
primary: "Stabilize fraud analytics performance while keeping the business case auditable."
urgency: "Validate capacity, TCO crossover, and migration bridge assumptions before procurement."
adbs_to_adbd:
license_model: BYOL
discount_pct: 0.11
ecpu_per_db_node: 760
current:
label: "ADB-S As-Is"
workload_ecpu: 2400
storage_tb: 96
read_architecture: "Refreshable/read clones serve application reads; standby is not the application read path."
target:
label: "ADB-D Dedicated"
workload_ecpu: 2400
storage_tb: 96
db_nodes: 5
storage_servers: 3
read_architecture: "Local ADG read-only standby serves application reads; steady-state clones retired."
forecasts:
- period: "24M"
display_label: "Year 2"
as_is:
workload_ecpu: 3150
storage_tb: 128
to_be:
workload_ecpu: 3150
storage_tb: 128
db_nodes: 6
storage_servers: 3
- period: "36M"
display_label: "Year 3"
as_is:
workload_ecpu: 3900
storage_tb: 166
to_be:
workload_ecpu: 3900
storage_tb: 166
db_nodes: 8
storage_servers: 3
goldengate:
mode: migration_bridge_only
ocpus: 4
bridge_months: 3
bridge_one_time_cost: 0
storage_economics:
base_break_even_tb: 91
business_impact:
business_impact_per_hour: 0
crossover_chart:
y_axis_min: 1.5
y_axis_max: 3.5
y_axis_major_unit: 0.5
roadmap:
total_duration: "12 weeks"
phases:
- name: "Define"
duration: "2 weeks"
deliverables: ["Baseline current BOM", "Confirm success metrics"]
- name: "Design"
duration: "4 weeks"
deliverables: ["Dedicated capacity plan", "Read-path validation"]
- name: "Deliver"
duration: "6 weeks"
deliverables: ["Migration bridge", "Cutover rehearsal"]
recommendation:
summary: "Proceed with detailed design for the ADB-D Dedicated target, validating the utilization, storage break-even, and GoldenGate bridge assumptions before final commercial approval."
next_steps:
- action: "Confirm workload ECPU demand and storage forecast"
owner: "Customer"
deadline: "Before design sign-off"
- action: "Validate ADB-D DB node and storage server reservation"
owner: "Oracle"
deadline: "Before procurement"
deck_validation:
forbidden_phrases:
- "OCI Annual"
- "FTE-year"
- "if 4x3 is selected"

View File

@@ -18,7 +18,7 @@ skill itself read these YAMLs at runtime.
| `architecture-center/` | Auto-curated index of Oracle Architecture Center reference architectures. | Single `catalog.yaml` |
| `field-knowledge/` | Real-world gotchas, lessons learned, undocumented limits. | Frontmatter + body |
| `field-findings/` | Tracker of newly logged field issues with confidence decay. | Single `tracker.yaml` |
| `diagram/` | OCI icon library and reference layouts for diagram generation. | Mixed |
| `diagram/` | OCI icon libraries, native PPTX icon index, and reference layouts for diagram generation. | Mixed |
## Required frontmatter
@@ -62,6 +62,7 @@ Use a directory when you need multiple files (pattern + diagrams + ADRs).
| `kb/pricing/oci-sku-catalog.yaml` | `python tools/refresh_sku_catalog.py --refresh` (Oracle pricing API) |
| `kb/pricing/compute.yaml` | `python tools/refresh_sku_catalog.py --refresh-domain compute` (same API, shape-level) |
| `kb/architecture-center/catalog.yaml` | `python tools/refresh_arch_catalog.py --whats-new` (web crawl) |
| `kb/diagram/assets/OCI_Icons.pptx` + `kb/diagram/oci-pptx-icons-index.json` | `python tools/refresh_pptx_icon_index.py [--source /path/to/OCI_Icons.pptx]` |
| Other `kb/pricing/<domain>.yaml` | Not yet automated. Add a new entry to `DOMAIN_REGISTRY` in `tools/refresh_sku_catalog.py` and write a domain-specific refresher (see `refresh_compute_yaml` as a template). |
| Everything else | **Manual** — review against Oracle docs, bump `last_verified` |
@@ -70,8 +71,84 @@ The shortcut for everyone:
```bash
make freshness # report stale files
make freshness-refresh # run automatic refreshes for files that support them
make pptx-icons-refresh # sync new OCI_Icons.pptx revision + rebuild manifest/index
```
For native PowerPoint diagram generation, the repo now carries a bundled
`kb/diagram/assets/OCI_Icons.pptx` plus a derived manifest/index. If Oracle
publishes a newer icon deck, replace it or point the refresh tool at the new
file and rebuild:
```bash
make pptx-icons-refresh
python tools/refresh_pptx_icon_index.py --source ~/Downloads/OCI_Icons.pptx
```
## Architecture Center native benchmark
This repo now has a fixed, reusable benchmark path for Oracle Architecture
Center visual fidelity. Keep this workflow stable because future sessions
must re-run it exactly, not reconstruct it from memory.
Primary validation method:
- `draw.io` fidelity is measured by exporting the generated `*-rebuilt.drawio`
with the real draw.io binary and comparing that PNG against the official
Architecture Center PNG.
- In this WSL setup, the primary binary is
`/mnt/c/Program Files/draw.io/draw.io.exe`.
- Only if the draw.io CLI is unavailable or fails should the runner fall back
to the official bundled SVG companion.
- Native `.pptx` fidelity is measured by rasterizing the editable PPTX slide
with `tools/oci_pptx_render.py`. Do not depend on `soffice` or LibreOffice.
Operational notes that must remain persisted:
- Many official Oracle `.drawio` files are compressed inside `<diagram>` as
base64 + raw-deflate XML. Extraction and validation must support that form.
- `tools/drawio_visual_validator.py` is a structural gate before raster diff:
it catches giant fonts, duplicate ids, off-canvas geometry, and dangling
edges, including in compressed official `.drawio` files.
- `tools/oci_pptx_render.py` is intentionally tolerant of unsupported
`WMF/EMF` media. It skips those assets, records them in `skipped_media`,
and keeps the benchmark running instead of aborting the case.
Standard rerun command:
```bash
make archcenter-benchmark-20
```
Equivalent explicit command:
```bash
.venv/bin/python tools/oci_archcenter_batch.py \
--limit 20 \
--threshold 0.82 \
--fidelity-threshold 0.90 \
--output-root examples/eval-2026-04-25-archcenter-native-20-v8
```
Acceptance contract:
- Official page + ZIP assets staged per case
- Editable `drawio` rebuilt successfully
- `draw.io` CLI fidelity `PASS` against official PNG, or documented SVG fallback
- Icon-cluster coverage `>= 0.55`
- Native PPTX generated with no unresolved or oversize icon refs
- Native PPTX raster fidelity `PASS` against official PNG
- Evidence written under each case: reference assets, generated outputs,
raster renders, diff images, JSON summaries, and markdown reports
Latest verified run:
- `examples/eval-2026-04-25-archcenter-native-20-v8`
- `considered=28`, `processed=20`, `skipped=8`, `PASS=20`, `FAIL=0`
- The verified pool currently has no open native benchmark failures. The
remaining gaps are confined to the skipped pool, which is still filtered
out for annotation-heavy diagrams or missing draw.io icon families such as
DNS/VPN/maximum-security-zone variants.
## Pricing files
There are exactly **two** pricing files, both auto-refreshed from the

View File

@@ -18,6 +18,78 @@ last_verified: "2026-03-16"
source: "https://docs.oracle.com/en/solutions/oracle-architecture-center/"
entry_count: 123
# =============================================================================
# KNOWN GAPS — topologies the catalog does NOT cover well
# =============================================================================
#
# Surfaced by tools/archcenter_pattern_lookup.py at the top of its output
# whenever the user's query tokens match any one of the `triggers` token
# sets below. Purpose: stop the lookup loop early when no canonical Oracle
# ref-arch exists for what the user asked, and tell the agent how to
# COMPOSE the topology from primitives instead of refining query phrasing.
#
# Schema per gap:
# id: unique slug
# triggers: list of token sets — fires when the expanded query contains
# EVERY token in at least ONE set (OR across sets, AND inside
# each set). Tokens are lowercased and synonym-expanded the
# same way as scoring tokens.
# notice: multi-line string surfaced verbatim above the score-based
# top-K. Should explain WHY this is a gap and HOW to compose
# from existing primitives. Be concrete (slugs, alias names).
#
# Add a gap entry only after a real lookup loop wasted user time on a
# topology with no canonical match. Speculation belongs elsewhere.
known_gaps:
- id: gcp-to-oci-native-services
triggers:
- [gcp, postgresql]
- [gcp, redis]
- [gcp, mysql]
- [gcp, oke]
- [gcp, cache]
- [gcp, compute]
- [google, postgresql]
- [google, redis]
- [google, mysql]
- [google, oke]
- [google, cache]
- [google, compute]
notice: |
No canonical Oracle ref-arch covers OCI-native services (PostgreSQL,
OKE, Cache, etc.) accessed FROM Google Cloud via Cross-Cloud
Interconnect. The `Database@Google Cloud` entries below are the
OPPOSITE direction (Oracle DB running ON GCP, not GCP apps reaching
OCI-native services).
Recommended composition — STOP refining the lookup query, build from:
1. A simple VCN baseline (e.g. `start-with-an-oci-virtual-cloud-network`).
2. The OCI service in a private subnet behind DRG + FastConnect VC.
3. A `GCP <region>` container on the left with `cloud_icon: gcp_compute`
(or the relevant GCP service — the renderer maps to mxgraph.gcp2.*
the same way it does for AWS).
- id: newer-oci-services-without-icon
triggers:
- [redis]
- [valkey]
- [oci_cache]
notice: |
OCI Cache with Redis/Valkey is GA after the v24.2 toolkit shipped, so
no dedicated ref-arch exists in the catalog and no toolkit icon ships
either. Oracle's own multi-service ref archs that DO mention Redis
embed inline SVG over the generic database/cache stencil.
Recommended path — don't keep searching:
1. Pick the closest topology BY SHAPE (HA pair, primary+replica,
multi-AZ) from the catalog — geometry transfers, names don't.
2. Use `type: cache` (or `type: database`) with explicit
`label: "OCI Cache (Redis)"`. The renderer's alias table already
routes `type: redis` → generic stencil.
3. Reference: SKILL.md option 2 step 3 (newer-OCI-services convention).
entries:
# ===== DATABASE — MULTICLOUD (Database@Azure) =====

View File

@@ -0,0 +1,99 @@
# Query-expansion synonyms for tools/archcenter_pattern_lookup.py
#
# Each canonical phrase is expanded with its aliases at query time so
# free-text searches like "LB HA cross AD" match catalog entries
# tagged "load balancer", "high availability", "availability domain".
#
# Add new entries when a query misses an obvious match. Keep aliases
# lower-case alphanumeric — the tokenizer drops everything else.
synonyms:
# Networking
- canonical: load balancer
aliases: [lb, lbaas, nlb, network load balancer, application load balancer, alb]
- canonical: virtual cloud network
aliases: [vcn]
- canonical: dynamic routing gateway
aliases: [drg]
- canonical: internet gateway
aliases: [igw]
- canonical: nat gateway
aliases: [natgw]
- canonical: service gateway
aliases: [sgw]
- canonical: site to site vpn
aliases: [vpn, ipsec, ipsec vpn]
- canonical: fastconnect
aliases: [fc, dx, direct connect, expressroute]
- canonical: remote peering connection
aliases: [rpc]
- canonical: web application firewall
aliases: [waf]
- canonical: network firewall
aliases: [nfw, ngfw]
# Compute / Containers
- canonical: virtual machine
aliases: [vm, ec2, gce, compute instance]
- canonical: container engine kubernetes
aliases: [oke, k8s, kubernetes, eks, gke, aks]
- canonical: bare metal
aliases: [bm, bms]
# Database
- canonical: autonomous database
aliases: [adb, adb-s, adb-d, atp, adw]
- canonical: exadata database service
aliases: [exacs, exadb, exa, exadata]
- canonical: base database service
aliases: [base db, dbcs, vm db]
- canonical: data guard
aliases: [dg, adg, active data guard]
- canonical: goldengate
aliases: [gg, ogg]
- canonical: mysql heatwave
aliases: [mysql, heatwave, mysql database service, mds]
# Availability / DR
- canonical: high availability
aliases: [ha, maa, maximum availability]
- canonical: disaster recovery
aliases: [dr, ha-dr, business continuity, bcdr]
- canonical: full stack disaster recovery
aliases: [fsdr]
- canonical: availability domain
aliases: [ad, az, availability zone]
- canonical: fault domain
aliases: [fd]
- canonical: cross region
aliases: [multi region, multiregion]
# Multicloud
- canonical: oracle database at azure
aliases: [odbaa, db at azure, dbaa, oracle@azure, azure-oracle]
- canonical: oracle database at aws
aliases: [odbaaws, db at aws, oracle@aws, aws-oracle]
- canonical: oracle database at google cloud
aliases: [odbagcp, db at gcp, oracle@gcp, gcp-oracle]
# Observability / Security
- canonical: monitoring
aliases: [mon, metrics]
- canonical: logging
aliases: [logs]
- canonical: cloud guard
aliases: [cg]
- canonical: data safe
aliases: [ds]
- canonical: security zone
aliases: [maximum security zone, msz]
# Workloads
- canonical: e business suite
aliases: [ebs, e-biz]
- canonical: peoplesoft
aliases: [psft]
- canonical: jd edwards
aliases: [jde, jd-e]
- canonical: artificial intelligence
aliases: [ai, gen ai, genai, ml]

View File

@@ -27,7 +27,7 @@
# =============================================================================
---
last_verified: "2026-03-14"
last_verified: "2026-04-24"
maintained_by: "Field Architecture Team"
versions:
@@ -338,6 +338,69 @@ features:
adb_s:
"23ai": { status: "GA_CAVEAT", notes: "--resource-pool-summary works on CLI 3.73+. --autonomous-database-maintenance-window has JSON serialization bug on CLI 3.73.1 AND 3.75.0. Must use Console for maintenance window." }
- name: "Lakehouse External Table Cache / Lake Cache"
category: "operations"
matrix:
adb_s:
"23ai":
status: "UNTESTED"
notes: "Officially documented for Lakehouse workload. Caches external-table data locally to accelerate repeat reads. Field team has not yet validated production behavior."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
"26ai":
status: "UNTESTED"
notes: "Documented for AI Lakehouse workload. Expect benefit on repeated reads over external data; validate eviction behavior and cache warmup in benchmarks."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
- name: "Apache Iceberg External Tables"
category: "operations"
matrix:
adb_s:
"23ai":
status: "LIMITED"
notes: "Official docs show support with important caveats: no partitioned Iceberg tables, no credential vending, no query-time time travel, and some snapshot/schema changes require recreating the external table."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
"26ai":
status: "LIMITED"
notes: "Same documented limitations as 23ai unless field testing proves otherwise. Treat as fit-for-purpose, not transparent parity with native Iceberg engines."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
- name: "TP / TPURGENT Service Names on Lakehouse"
category: "operations"
matrix:
adb_s:
"23ai":
status: "UNTESTED"
notes: "Need field confirmation by exact release/build. Use docs/release notes before promising availability on older estates."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
"26ai":
status: "GA_CAVEAT"
notes: "Officially released for Lakehouse workload. Useful to explain mixed-workload support, but benchmark service behavior under real concurrency before positioning as OLTP-equivalent."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
# =============================================================================
# HOW TO ADD A NEW FEATURE
# =============================================================================

Binary file not shown.

View File

@@ -0,0 +1,568 @@
{
"cache_dir_mtime": 1777171657.6658223,
"entries": {
"active-data-guard-far-sync-dba-oracle": {
"drawio": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.drawio",
"png": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.png",
"svg": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.svg",
"yaml": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/_template.yaml"
},
"active-data-guard-far-sync-oracle-db-at-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-oracle-db-at-azure/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.drawio",
"svg": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-oracle-db-at-azure/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.svg",
"yaml": "kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-oracle-db-at-azure/_template.yaml"
},
"ai-fraud-detection": {
"drawio": "kb/diagram/assets/archcenter-refs/ai-fraud-detection/ai-fraud-detection-flow-oracle/ai-fraud-detection-flow.drawio",
"svg": "kb/diagram/assets/archcenter-refs/ai-fraud-detection/ai-fraud-detection-flow-oracle/ai-fraud-detection-flow.svg",
"yaml": "kb/diagram/assets/archcenter-refs/ai-fraud-detection/_template.yaml"
},
"analytics-pipeline-db-at-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/analytics-pipeline-db-at-azure/data-lake-db-at-azure-medallion-oracle/data-lake-db-at-azure-medallion.drawio",
"svg": "kb/diagram/assets/archcenter-refs/analytics-pipeline-db-at-azure/data-lake-db-at-azure-medallion-oracle/data-lake-db-at-azure-medallion.svg",
"yaml": "kb/diagram/assets/archcenter-refs/analytics-pipeline-db-at-azure/_template.yaml"
},
"autonomous-database-db-at-azure-diagram-oracle": {
"drawio": "kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.drawio",
"png": "kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.png",
"svg": "kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.svg",
"yaml": "kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/_template.yaml"
},
"azure-pipeline-exacs-dbazure": {
"drawio": "kb/diagram/assets/archcenter-refs/azure-pipeline-exacs-dbazure/exadata-database-service-oracle/exadata-database-service.drawio",
"svg": "kb/diagram/assets/archcenter-refs/azure-pipeline-exacs-dbazure/exadata-database-service-oracle/exadata-database-service.svg",
"yaml": "kb/diagram/assets/archcenter-refs/azure-pipeline-exacs-dbazure/_template.yaml"
},
"back-up-base-database-zero-data-loss-recovery": {
"drawio": "kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/base-database-recovery-backup-architecture/base-database-recovery-backup-architecture.drawio",
"png": "kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/base-database-recovery-backup-architecture/base-database-recovery-backup-architecture.png",
"svg": "kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/base-database-recovery-backup-architecture/base-database-recovery-backup-architecture.svg",
"yaml": "kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/_template.yaml"
},
"back-up-exadata-dedicated-zero-data-loss-recovery": {
"drawio": "kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/exadata-dedicated-recovery-backup-architecture/exadata-dedicated-recovery-backup-architecture.drawio",
"png": "kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/exadata-dedicated-recovery-backup-architecture/exadata-dedicated-recovery-backup-architecture.png",
"svg": "kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/exadata-dedicated-recovery-backup-architecture/exadata-dedicated-recovery-backup-architecture.svg",
"yaml": "kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/_template.yaml"
},
"bread-multicloud-on-oci": {
"drawio": "kb/diagram/assets/archcenter-refs/bread-multicloud-on-oci/peoplesoft-migration-process-oracle/peoplesoft-migration-process.drawio",
"svg": "kb/diagram/assets/archcenter-refs/bread-multicloud-on-oci/peoplesoft-migration-process-oracle/peoplesoft-migration-process.svg",
"yaml": "kb/diagram/assets/archcenter-refs/bread-multicloud-on-oci/_template.yaml"
},
"cicd-pipeline-oci-functions": {
"drawio": "kb/diagram/assets/archcenter-refs/cicd-pipeline-oci-functions/cicd-deploy-oci-functions-oracle/cicd-deploy-oci-functions.drawio",
"svg": "kb/diagram/assets/archcenter-refs/cicd-pipeline-oci-functions/cicd-deploy-oci-functions-oracle/cicd-deploy-oci-functions.svg",
"yaml": "kb/diagram/assets/archcenter-refs/cicd-pipeline-oci-functions/_template.yaml"
},
"cis-oci-benchmark": {
"drawio": "kb/diagram/assets/archcenter-refs/cis-oci-benchmark/oci-core-landingzone-oracle/oci-core-landingzone.drawio",
"svg": "kb/diagram/assets/archcenter-refs/cis-oci-benchmark/oci-core-landingzone-oracle/oci-core-landingzone.svg",
"yaml": "kb/diagram/assets/archcenter-refs/cis-oci-benchmark/_template.yaml"
},
"cloud-native-dicom-on-oci": {
"drawio": "kb/diagram/assets/archcenter-refs/cloud-native-dicom-on-oci/oci-dicom-store-oracle/oci-dicom-store.drawio",
"svg": "kb/diagram/assets/archcenter-refs/cloud-native-dicom-on-oci/oci-dicom-store-oracle/oci-dicom-store.svg",
"yaml": "kb/diagram/assets/archcenter-refs/cloud-native-dicom-on-oci/_template.yaml"
},
"cloud-native-ecommerce": {
"drawio": "kb/diagram/assets/archcenter-refs/cloud-native-ecommerce/mushop-infrastructure-expand-oracle/mushop-infrastructure-expand.drawio",
"svg": "kb/diagram/assets/archcenter-refs/cloud-native-ecommerce/mushop-infrastructure-expand-oracle/mushop-infrastructure-expand.svg",
"yaml": "kb/diagram/assets/archcenter-refs/cloud-native-ecommerce/_template.yaml"
},
"config-jde-dr-fsdr": {
"drawio": "kb/diagram/assets/archcenter-refs/config-jde-dr-fsdr/jde-dr-fsdr/jde-dr-fsdr.drawio",
"svg": "kb/diagram/assets/archcenter-refs/config-jde-dr-fsdr/jde-dr-fsdr/jdr-dr-fsdr.svg",
"yaml": "kb/diagram/assets/archcenter-refs/config-jde-dr-fsdr/_template.yaml"
},
"connect-azure-kube-with-oracle": {
"drawio": "kb/diagram/assets/archcenter-refs/connect-azure-kube-with-oracle/azure-kube-with-exadata-db-oracle/azure-kube-with-exadata-db.drawio",
"svg": "kb/diagram/assets/archcenter-refs/connect-azure-kube-with-oracle/azure-kube-with-exadata-db-oracle/azure-kube-with-exadata-db.svg",
"yaml": "kb/diagram/assets/archcenter-refs/connect-azure-kube-with-oracle/_template.yaml"
},
"cross-az-dr-oracle": {
"drawio": "kb/diagram/assets/archcenter-refs/cross-az-dr-oracle/cross-az-dr.drawio",
"png": "kb/diagram/assets/archcenter-refs/cross-az-dr-oracle/cross-az-dr.png",
"svg": "kb/diagram/assets/archcenter-refs/cross-az-dr-oracle/cross-az-dr.svg",
"yaml": "kb/diagram/assets/archcenter-refs/cross-az-dr-oracle/_template.yaml"
},
"cross-region-dr-essbase-oci": {
"drawio": "kb/diagram/assets/archcenter-refs/cross-region-dr-essbase-oci/essbase-oci-cross-region-dr-oracle/essbase-oci-cross-region-dr.drawio",
"svg": "kb/diagram/assets/archcenter-refs/cross-region-dr-essbase-oci/essbase-oci-cross-region-dr-oracle/essbase-oci-cross-region-dr.svg",
"yaml": "kb/diagram/assets/archcenter-refs/cross-region-dr-essbase-oci/_template.yaml"
},
"data-application-integration-workloads": {
"drawio": "kb/diagram/assets/archcenter-refs/data-application-integration-workloads/integration-architecture-pattern-1-oracle/integration-architecture-pattern-1.drawio",
"svg": "kb/diagram/assets/archcenter-refs/data-application-integration-workloads/integration-architecture-pattern-1-oracle/integration-architecture-pattern-1.svg",
"yaml": "kb/diagram/assets/archcenter-refs/data-application-integration-workloads/_template.yaml"
},
"data-platform-decentralized": {
"drawio": "kb/diagram/assets/archcenter-refs/data-platform-decentralized/decentralized-data-platform-logical-oracle/decentralized-data-platform-logical.drawio",
"svg": "kb/diagram/assets/archcenter-refs/data-platform-decentralized/decentralized-data-platform-logical-oracle/decentralized-data-platform-logical.svg",
"yaml": "kb/diagram/assets/archcenter-refs/data-platform-decentralized/_template.yaml"
},
"data-platform-lakehouse": {
"drawio": "kb/diagram/assets/archcenter-refs/data-platform-lakehouse/lakehouse-architecture-oracle/lakehouse-architecture.drawio",
"svg": "kb/diagram/assets/archcenter-refs/data-platform-lakehouse/lakehouse-architecture-oracle/lakehouse-architecture.svg",
"yaml": "kb/diagram/assets/archcenter-refs/data-platform-lakehouse/_template.yaml"
},
"data-safe-exadata-adb": {
"drawio": "kb/diagram/assets/archcenter-refs/data-safe-exadata-adb/data-safe-for-exa-adb/data-safe-for-exa-adb-old.drawio",
"svg": "kb/diagram/assets/archcenter-refs/data-safe-exadata-adb/data-safe-for-exa-adb/data-safe-for-exa-adb.svg",
"yaml": "kb/diagram/assets/archcenter-refs/data-safe-exadata-adb/_template.yaml"
},
"data-safe-multicloud-ods-hybrid": {
"drawio": "kb/diagram/assets/archcenter-refs/data-safe-multicloud-ods-hybrid/datasafe-multi-odsa-01/datasafe-multi-odsa-01.drawio",
"svg": "kb/diagram/assets/archcenter-refs/data-safe-multicloud-ods-hybrid/datasafe-multi-odsa-01/datasafe-multi-odsa-01.svg",
"yaml": "kb/diagram/assets/archcenter-refs/data-safe-multicloud-ods-hybrid/_template.yaml"
},
"dataguard-exadata-dedicated-infrastructure": {
"drawio": "kb/diagram/assets/archcenter-refs/dataguard-exadata-dedicated-infrastructure/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.drawio",
"png": "kb/diagram/assets/archcenter-refs/dataguard-exadata-dedicated-infrastructure/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.png",
"svg": "kb/diagram/assets/archcenter-refs/dataguard-exadata-dedicated-infrastructure/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.svg",
"yaml": "kb/diagram/assets/archcenter-refs/dataguard-exadata-dedicated-infrastructure/_template.yaml"
},
"deploy-adb-db-at-google-cloud": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-adb-db-at-google-cloud/adb-oracle-db-at-google-cloud-region-oracle/adb-oracle-db-at-google-cloud-region.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-adb-db-at-google-cloud/adb-oracle-db-at-google-cloud-region-oracle/adb-oracle-db-at-google-cloud-region.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-adb-db-at-google-cloud/_template.yaml"
},
"deploy-agentic-ai-agent-platform": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-agentic-ai-agent-platform/agentic-ai-oci-ai-agent-arch-oracle/agentic-ai-oci-ai-agent-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-agentic-ai-agent-platform/agentic-ai-oci-ai-agent-arch-oracle/agentic-ai-oci-ai-agent-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-agentic-ai-agent-platform/_template.yaml"
},
"deploy-ai-powered-chatbot": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-ai-powered-chatbot/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch.drawio",
"png": "kb/diagram/assets/archcenter-refs/deploy-ai-powered-chatbot/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch/deploy-ai-chatbot-arch.png",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-ai-powered-chatbot/_template.yaml"
},
"deploy-autonomous-database-and-app": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-and-app/apex-app-adb-oracle/apex-app-adb.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-and-app/apex-app-adb-oracle/apex-app-adb.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-and-app/_template.yaml"
},
"deploy-autonomous-database-db-at-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-db-at-azure/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-db-at-azure/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-autonomous-database-db-at-azure/_template.yaml"
},
"deploy-data-rcvy-oci-api-gateway": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-data-rcvy-oci-api-gateway/apigw-oci-customer-managed-dr-topology-oracle/apigw-oci-customer-managed-dr-topology.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-data-rcvy-oci-api-gateway/apigw-oci-customer-managed-dr-topology-oracle/apigw-oci-customer-managed-dr-topology.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-data-rcvy-oci-api-gateway/_template.yaml"
},
"deploy-ebs-on-db-at-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-ebs-on-db-at-azure/ebs-on-db-at-azure-arch-oracle/ebs-on-db-at-azure-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-ebs-on-db-at-azure/ebs-on-db-at-azure-arch-oracle/ebs-on-db-at-azure-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-ebs-on-db-at-azure/_template.yaml"
},
"deploy-gitops-argocd-oke": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-gitops-argocd-oke/argocd/argocd.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-gitops-argocd-oke/argocd/argocd.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-gitops-argocd-oke/_template.yaml"
},
"deploy-hybrid-dr-wls-fmw": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-hybrid-dr-wls-fmw/maa-wls-hybrid-dr-tool-highlights-oracle/maa-wls-hybrid-dr-tool-highlights.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-hybrid-dr-wls-fmw/maa-wls-hybrid-dr-tool-highlights-oracle/maa-wls-hybrid-dr-tool-highlights.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-hybrid-dr-wls-fmw/_template.yaml"
},
"deploy-key-vault-database-at-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-azure/key-vault-database-at-azure-diagram-oracle/key-vault-database-at-azure-diagram.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-azure/key-vault-database-at-azure-diagram-oracle/key-vault-database-at-azure-diagram.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-azure/_template.yaml"
},
"deploy-key-vault-database-at-google": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-google/key-vault-database-google/key-vault-database-google/key-vault-database-google.drawio",
"png": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-google/key-vault-database-google/key-vault-database-google/key-vault-database-google.png",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-key-vault-database-at-google/_template.yaml"
},
"deploy-lustre-file-systems": {
"png": "kb/diagram/assets/archcenter-refs/deploy-lustre-file-systems/lustre-file-system-oci-arch/lustre-file-system-oci-arch/lustre-file-system-oci-arch.png",
"svg": "kb/diagram/assets/archcenter-refs/deploy-lustre-file-systems/lustre-file-system-oci-arch/lustre-file-system-oci-arch/lustre-file-system-oci-arch.svg"
},
"deploy-maa-for-peoplesoft-on-oci": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-maa-for-peoplesoft-on-oci/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-maa-for-peoplesoft-on-oci/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-maa-for-peoplesoft-on-oci/_template.yaml"
},
"deploy-oke-with-bastion-and-github": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-oke-with-bastion-and-github/oke-bastion-deployment-diagram-oracle/oke-bastion-deployment-diagram.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-oke-with-bastion-and-github/oke-bastion-deployment-diagram-oracle/oke-bastion-deployment-diagram.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-oke-with-bastion-and-github/_template.yaml"
},
"deploy-oracle-database-at-google-cloud": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-oracle-database-at-google-cloud/_template.yaml"
},
"deploy-oracle-db-aws": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-oracle-db-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-oracle-db-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-oracle-db-aws/_template.yaml"
},
"deploy-tcs-banc-oci-exa": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-tcs-banc-oci-exa/bancs-ref-architecture-no-fd-oracle/bancs-ref-architecture-no-fd.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-tcs-banc-oci-exa/bancs-ref-architecture-no-fd-oracle/bancs-ref-architecture-no-fd.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-tcs-banc-oci-exa/_template.yaml"
},
"deploy-wls-on-oke": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-wls-on-oke/weblogic-oke-oracle/weblogic-oke.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-wls-on-oke/weblogic-oke-oracle/weblogic-oke.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-wls-on-oke/_template.yaml"
},
"deploy-xstore-oci": {
"drawio": "kb/diagram/assets/archcenter-refs/deploy-xstore-oci/deploy-xstore-on-oci/deploy-xstore-on-oci.drawio",
"svg": "kb/diagram/assets/archcenter-refs/deploy-xstore-oci/deploy-xstore-on-oci/deploy-xstore-on-oci.svg",
"yaml": "kb/diagram/assets/archcenter-refs/deploy-xstore-oci/_template.yaml"
},
"dns-resolution-oracle-db-at-google-cloud": {
"drawio": "kb/diagram/assets/archcenter-refs/dns-resolution-oracle-db-at-google-cloud/resolve-dns-oci-google-cloud-oracle/resolve-dns-oci-google-cloud.drawio",
"svg": "kb/diagram/assets/archcenter-refs/dns-resolution-oracle-db-at-google-cloud/resolve-dns-oci-google-cloud-oracle/resolve-dns-oci-google-cloud.svg",
"yaml": "kb/diagram/assets/archcenter-refs/dns-resolution-oracle-db-at-google-cloud/_template.yaml"
},
"dr-active-dg-farsync-db-at-aws": {
"drawio": "kb/diagram/assets/archcenter-refs/dr-active-dg-farsync-db-at-aws/cross-region-dr-activedg-farsync-oracle/cross-region-dr-activedg-farsync.drawio",
"svg": "kb/diagram/assets/archcenter-refs/dr-active-dg-farsync-db-at-aws/cross-region-dr-activedg-farsync-oracle/cross-region-dr-activedg-farsync.svg",
"yaml": "kb/diagram/assets/archcenter-refs/dr-active-dg-farsync-db-at-aws/_template.yaml"
},
"dr-local-regional-standby-db-at-aws": {
"drawio": "kb/diagram/assets/archcenter-refs/dr-local-regional-standby-db-at-aws/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/dr-local-regional-standby-db-at-aws/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/dr-local-regional-standby-db-at-aws/_template.yaml"
},
"ebs-logging-analytics-oci": {
"drawio": "kb/diagram/assets/archcenter-refs/ebs-logging-analytics-oci/ebs-logging-analytics-on-oci-oracle/ebs-logging-analytics-on-oci.drawio",
"svg": "kb/diagram/assets/archcenter-refs/ebs-logging-analytics-oci/ebs-logging-analytics-on-oci-oracle/ebs-logging-analytics-on-oci.svg",
"yaml": "kb/diagram/assets/archcenter-refs/ebs-logging-analytics-oci/_template.yaml"
},
"ebs-on-db-at-aws": {
"drawio": "kb/diagram/assets/archcenter-refs/ebs-on-db-at-aws/ebs-db-at-aws-architecture-oracle/ebs-db-at-aws-architecture.drawio",
"svg": "kb/diagram/assets/archcenter-refs/ebs-on-db-at-aws/ebs-db-at-aws-architecture-oracle/ebs-db-at-aws-architecture.svg",
"yaml": "kb/diagram/assets/archcenter-refs/ebs-on-db-at-aws/_template.yaml"
},
"exadata-dedicated-cross-region-dataguard": {
"drawio": "kb/diagram/assets/archcenter-refs/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard-uncompressed.drawio",
"png": "kb/diagram/assets/archcenter-refs/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.png",
"svg": "kb/diagram/assets/archcenter-refs/exadata-dedicated-cross-region-dataguard/exadata-dedicated-cross-region-dataguard.svg",
"yaml": "kb/diagram/assets/archcenter-refs/exadata-dedicated-cross-region-dataguard/_template.yaml"
},
"exadata-dedicated-in-region-dataguard": {
"drawio": "kb/diagram/assets/archcenter-refs/exadata-dedicated-in-region-dataguard/exadata-dedicated-in-region-dataguard.drawio",
"png": "kb/diagram/assets/archcenter-refs/exadata-dedicated-in-region-dataguard/exadata-dedicated-in-region-dataguard.png",
"svg": "kb/diagram/assets/archcenter-refs/exadata-dedicated-in-region-dataguard/exadata-dedicated-in-region-dataguard.svg",
"yaml": "kb/diagram/assets/archcenter-refs/exadata-dedicated-in-region-dataguard/_template.yaml"
},
"exadb-dbaws-dr-arch-oracle": {
"drawio": "kb/diagram/assets/archcenter-refs/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.drawio",
"png": "kb/diagram/assets/archcenter-refs/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.png",
"svg": "kb/diagram/assets/archcenter-refs/exadb-dbaws-dr-arch-oracle/exadb-dbaws-dr-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/exadb-dbaws-dr-arch-oracle/_template.yaml"
},
"exadb-dr-on-db-at-azure-oracle": {
"drawio": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.drawio",
"png": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.png",
"svg": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.svg",
"yaml": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-at-azure-oracle/_template.yaml"
},
"exadb-dr-on-db-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-azure/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.drawio",
"svg": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-azure/exadb-dr-on-db-at-azure-oracle/exadb-dr-on-db-at-azure.svg",
"yaml": "kb/diagram/assets/archcenter-refs/exadb-dr-on-db-azure/_template.yaml"
},
"hub-spoke-network": {
"drawio": "kb/diagram/assets/archcenter-refs/hub-spoke-network/hub-spoke-oci.drawio",
"svg": "kb/diagram/assets/archcenter-refs/hub-spoke-network/hub-spoke-oci.svg",
"yaml": "kb/diagram/assets/archcenter-refs/hub-spoke-network/_template.yaml"
},
"hub-spoke-network-drg": {
"drawio": "kb/diagram/assets/archcenter-refs/hub-spoke-network-drg/hub-and-spoke-drg-oracle/hub-and-spoke-drg.drawio",
"svg": "kb/diagram/assets/archcenter-refs/hub-spoke-network-drg/hub-and-spoke-drg-oracle/hub-and-spoke-drg.svg",
"yaml": "kb/diagram/assets/archcenter-refs/hub-spoke-network-drg/_template.yaml"
},
"implement-goldengate-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/implement-goldengate-azure/goldengate-dbatazure-integration/goldengate-dbatazure-integration/goldengate-dbatazure-integration.drawio",
"png": "kb/diagram/assets/archcenter-refs/implement-goldengate-azure/goldengate-dbatazure-integration/goldengate-dbatazure-integration/goldengate-dbatazure-integration.png",
"svg": "kb/diagram/assets/archcenter-refs/implement-goldengate-azure/goldengate-dbatazure-integration/goldengate-dbatazure-integration/goldengate-dbatazure-integration.svg",
"yaml": "kb/diagram/assets/archcenter-refs/implement-goldengate-azure/_template.yaml"
},
"implement-rag-oci": {
"drawio": "kb/diagram/assets/archcenter-refs/implement-rag-oci/rag-oic-aug-gen-oracle/rag-oic-aug-gen.drawio",
"svg": "kb/diagram/assets/archcenter-refs/implement-rag-oci/rag-oic-aug-gen-oracle/rag-oic-aug-gen.svg",
"yaml": "kb/diagram/assets/archcenter-refs/implement-rag-oci/_template.yaml"
},
"implement-recovery-service-db-at-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/implement-recovery-service-db-at-azure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure.drawio",
"svg": "kb/diagram/assets/archcenter-refs/implement-recovery-service-db-at-azure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure/db-autonomous-recovery-dbatazure.svg",
"yaml": "kb/diagram/assets/archcenter-refs/implement-recovery-service-db-at-azure/_template.yaml"
},
"integration-access-control": {
"drawio": "kb/diagram/assets/archcenter-refs/integration-access-control/oracle-integration-rest-oauth-diagram-oracle/oracle-integration-rest-oauth-diagram.drawio",
"svg": "kb/diagram/assets/archcenter-refs/integration-access-control/oracle-integration-rest-oauth-diagram-oracle/oracle-integration-rest-oauth-diagram.svg",
"yaml": "kb/diagram/assets/archcenter-refs/integration-access-control/_template.yaml"
},
"kubernetes-artifact-snapshot-dr": {
"drawio": "kb/diagram/assets/archcenter-refs/kubernetes-artifact-snapshot-dr/kubernetes-multiregion-dr-oracle/kubernetes-multiregion-dr.drawio",
"svg": "kb/diagram/assets/archcenter-refs/kubernetes-artifact-snapshot-dr/kubernetes-multiregion-dr-oracle/kubernetes-multiregion-dr.svg",
"yaml": "kb/diagram/assets/archcenter-refs/kubernetes-artifact-snapshot-dr/_template.yaml"
},
"kubernetes-oke-logging-analytics": {
"drawio": "kb/diagram/assets/archcenter-refs/kubernetes-oke-logging-analytics/k8s-oke-monitoring-oracle/k8s-oke-monitoring.drawio",
"svg": "kb/diagram/assets/archcenter-refs/kubernetes-oke-logging-analytics/k8s-oke-monitoring-oracle/k8s-oke-monitoring.svg",
"yaml": "kb/diagram/assets/archcenter-refs/kubernetes-oke-logging-analytics/_template.yaml"
},
"learn-about-drg-solutions": {
"drawio": "kb/diagram/assets/archcenter-refs/learn-about-drg-solutions/drg-routing-operation-oracle/drg-routing-operation.drawio",
"svg": "kb/diagram/assets/archcenter-refs/learn-about-drg-solutions/drg-routing-operation-oracle/drg-routing-operation.svg",
"yaml": "kb/diagram/assets/archcenter-refs/learn-about-drg-solutions/_template.yaml"
},
"learn-about-maa-for-peoplesoft": {
"drawio": "kb/diagram/assets/archcenter-refs/learn-about-maa-for-peoplesoft/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/learn-about-maa-for-peoplesoft/peoplesoft-maa-arch-oracle/peoplesoft-maa-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/learn-about-maa-for-peoplesoft/_template.yaml"
},
"local-regional-standby-dr-db-at-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/local-regional-standby-dr-db-at-azure/local-regional-standby-dr-db-azure-arch-oracle/local-regional-standby-dr-db-azure-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/local-regional-standby-dr-db-at-azure/local-regional-standby-dr-db-azure-arch-oracle/local-regional-standby-dr-db-azure-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/local-regional-standby-dr-db-at-azure/_template.yaml"
},
"mid-tier-replication-oci-dr-arch": {
"drawio": "kb/diagram/assets/archcenter-refs/mid-tier-replication-oci-dr-arch/active-passive-dr-mid-tier-oracle/active-passive-dr-mid-tier.drawio",
"svg": "kb/diagram/assets/archcenter-refs/mid-tier-replication-oci-dr-arch/active-passive-dr-mid-tier-oracle/active-passive-dr-mid-tier.svg",
"yaml": "kb/diagram/assets/archcenter-refs/mid-tier-replication-oci-dr-arch/_template.yaml"
},
"migrate-apps-to-apex": {
"drawio": "kb/diagram/assets/archcenter-refs/migrate-apps-to-apex/forms-apps-to-apex-oracle/forms-apps-to-apex.drawio",
"svg": "kb/diagram/assets/archcenter-refs/migrate-apps-to-apex/forms-apps-to-apex-oracle/forms-apps-to-apex.svg",
"yaml": "kb/diagram/assets/archcenter-refs/migrate-apps-to-apex/_template.yaml"
},
"migrate-ebs-with-cloudmanager": {
"drawio": "kb/diagram/assets/archcenter-refs/migrate-ebs-with-cloudmanager/migrate-ebs-env-prod-oracle/migrate-ebs-env-prod.drawio",
"svg": "kb/diagram/assets/archcenter-refs/migrate-ebs-with-cloudmanager/migrate-ebs-env-prod-oracle/migrate-ebs-env-prod.svg",
"yaml": "kb/diagram/assets/archcenter-refs/migrate-ebs-with-cloudmanager/_template.yaml"
},
"migrate-to-atp": {
"png": "kb/diagram/assets/archcenter-refs/migrate-to-atp/favicon-128.png"
},
"modern-platform-oracle-db-at-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/modern-platform-oracle-db-at-azure/oracle-database-at-azure-services-platform-oracle/oracle-database-at-azure-services-platform.drawio",
"svg": "kb/diagram/assets/archcenter-refs/modern-platform-oracle-db-at-azure/oracle-database-at-azure-services-platform-oracle/oracle-database-at-azure-services-platform.svg",
"yaml": "kb/diagram/assets/archcenter-refs/modern-platform-oracle-db-at-azure/_template.yaml"
},
"modernize-app-dev-oci-postgresql-redis-opensearch": {
"drawio": "kb/diagram/assets/archcenter-refs/modernize-app-dev-oci-postgresql-redis-opensearch/dr-architecture-diagram-oracle/dr-architecture-diagram.drawio",
"svg": "kb/diagram/assets/archcenter-refs/modernize-app-dev-oci-postgresql-redis-opensearch/dr-architecture-diagram-oracle/dr-architecture-diagram.svg",
"yaml": "kb/diagram/assets/archcenter-refs/modernize-app-dev-oci-postgresql-redis-opensearch/_template.yaml"
},
"mongodb-to-atp": {
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-atp/mongodb-atp-s-arch-variant-oracle/mongodb-atp-s-arch-variant.drawio",
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-atp/mongodb-atp-s-arch-variant-oracle/mongodb-atp-s-arch-variant.svg",
"yaml": "kb/diagram/assets/archcenter-refs/mongodb-to-atp/_template.yaml"
},
"mongodb-to-atp-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-azure/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant.drawio",
"png": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-azure/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant.png",
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-azure/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant/mongodb-atp-s-azure-arch-variant.svg",
"yaml": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-azure/_template.yaml"
},
"mongodb-to-atp-google": {
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-google/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant.drawio",
"png": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-google/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant.png",
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-google/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant/mongodb-atp-s-google-arch-variant.svg",
"yaml": "kb/diagram/assets/archcenter-refs/mongodb-to-atp-google/_template.yaml"
},
"mongodb-to-auto-json-db": {
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-auto-json-db/mongodb-json-arch-variant-oracle/mongdb-json-arch-variant.drawio",
"svg": "kb/diagram/assets/archcenter-refs/mongodb-to-auto-json-db/mongodb-json-arch-variant-oracle/mongodb-json-arch-variant.svg",
"yaml": "kb/diagram/assets/archcenter-refs/mongodb-to-auto-json-db/_template.yaml"
},
"mongodb-to-exadata-machine": {
"drawio": "kb/diagram/assets/archcenter-refs/mongodb-to-exadata-machine/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch.drawio",
"png": "kb/diagram/assets/archcenter-refs/mongodb-to-exadata-machine/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch/mongodb-exadata-machine-physical-arch.png",
"yaml": "kb/diagram/assets/archcenter-refs/mongodb-to-exadata-machine/_template.yaml"
},
"multi-region-standby-dr-db-at-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-at-azure/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-at-azure/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-at-azure/_template.yaml"
},
"multi-region-standby-dr-db-azure-arch-oracle": {
"drawio": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.drawio",
"png": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.png",
"svg": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-azure-arch-oracle/multi-region-standby-dr-db-azure-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/multi-region-standby-dr-db-azure-arch-oracle/_template.yaml"
},
"multi-tenant-app-deploy": {
"drawio": "kb/diagram/assets/archcenter-refs/multi-tenant-app-deploy/multi-tenant-app-oci-oracle/multi-tenant-app-oci.drawio",
"svg": "kb/diagram/assets/archcenter-refs/multi-tenant-app-deploy/multi-tenant-app-oci-oracle/multi-tenant-app-oci.svg",
"yaml": "kb/diagram/assets/archcenter-refs/multi-tenant-app-deploy/_template.yaml"
},
"network-topology-oracle-database-at-aws": {
"drawio": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-aws/db-at-aws-main-arch-oracle/db-at-aws-main-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-aws/_template.yaml"
},
"network-topology-oracle-database-at-google-cloud": {
"drawio": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-google-cloud/google-detailed-arch-oracle/google-detailed-arch-oracle/google-detailed-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/network-topology-oracle-database-at-google-cloud/_template.yaml"
},
"oci-ai-healthcare": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-ai-healthcare/oci-ai-healthcare_arch-oracle/oci-ai-healthcare-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-ai-healthcare/oci-ai-healthcare_arch-oracle/oci-ai-healthcare-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-ai-healthcare/_template.yaml"
},
"oci-azure-multicloud-data-solution": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-azure-multicloud-data-solution/oci-azure-multicloud-data-solution-diagram-oracle/oci-azure-multicloud-data-solution-diagram.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-azure-multicloud-data-solution/oci-azure-multicloud-data-solution-diagram-oracle/oci-azure-multicloud-data-solution-diagram.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-azure-multicloud-data-solution/_template.yaml"
},
"oci-best-practices-networking": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-best-practices-networking/multi-region-deployment-full-arch-oracle/multi-region-deployment-full-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-best-practices-networking/multi-region-deployment-full-arch-oracle/multi-region-deployment-full-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-best-practices-networking/_template.yaml"
},
"oci-cpu-inference-ollama": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-cpu-inference-ollama/ollama-blueprint-architecture-oracle/ollama-blueprint-architecture.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-cpu-inference-ollama/ollama-blueprint-architecture-oracle/ollama-blueprint-architecture.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-cpu-inference-ollama/_template.yaml"
},
"oci-genai-enterprise": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-genai-enterprise/oci-genai-enterprise-arch-oracle/oci-genai-enterprise-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-genai-enterprise/oci-genai-enterprise-arch-oracle/oci-genai-enterprise-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-genai-enterprise/_template.yaml"
},
"oci-generative-ai-llm-platforms": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-generative-ai-llm-platforms/ai-llm-workflow-architecture-oracle/ai-llm-workflow-architecture.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-generative-ai-llm-platforms/ai-llm-workflow-architecture-oracle/ai-llm-workflow-architecture.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-generative-ai-llm-platforms/_template.yaml"
},
"oci-multicloud-datalake": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-multicloud-datalake/oci-multicloud-datalake-flow-oracle/oci_multicloud_datalake_flow.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-multicloud-datalake/oci-multicloud-datalake-flow-oracle/oci_multicloud_datalake_flow.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-multicloud-datalake/_template.yaml"
},
"oci-multicloud-genai-rag": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-multicloud-genai-rag/multicloud-genai-rag-architecture-oracle/multicloud-genai-rag-architecture.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-multicloud-genai-rag/multicloud-genai-rag-architecture-oracle/multicloud-genai-rag-architecture.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-multicloud-genai-rag/_template.yaml"
},
"oci-nlb-palo-alto-active-active": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-nlb-palo-alto-active-active/oci-nlb-palo-alto-active-active-arch-oracle/oci-nlb-palo-alto-active-active-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-nlb-palo-alto-active-active/oci-nlb-palo-alto-active-active-arch-oracle/oci-nlb-palo-alto-active-active-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-nlb-palo-alto-active-active/_template.yaml"
},
"oci-oad-kafka-oi": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-oad-kafka-oi/oci-oad-kafka-oi-oracle/oci-oad-kafka-oi.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-oad-kafka-oi/oci-oad-kafka-oi-oracle/oci-oad-kafka-oi.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-oad-kafka-oi/_template.yaml"
},
"oci-object-storage-modernization": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-object-storage-modernization/oci-object-storage-modernization-arch-after-oracle/oci-object-storage-modernization-arch-after.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-object-storage-modernization/oci-object-storage-modernization-arch-after-oracle/oci-object-storage-modernization-arch-after.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-object-storage-modernization/_template.yaml"
},
"oci-ops-insights-and-em-bridge": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-ops-insights-and-em-bridge/oci-ops-insights-diagram-oracle/oci-ops-insights-diagram.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-ops-insights-and-em-bridge/oci-ops-insights-diagram-oracle/oci-ops-insights-diagram.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-ops-insights-and-em-bridge/_template.yaml"
},
"oci-security-zones": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-security-zones/MSZ-01-oracle/MSZ-01.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-security-zones/MSZ-01-oracle/MSZ-01.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-security-zones/_template.yaml"
},
"oci-speech-meeting-insights-genai": {
"drawio": "kb/diagram/assets/archcenter-refs/oci-speech-meeting-insights-genai/oci-speech-adb-ai-arch-oracle/oci-speech-adb-ai-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oci-speech-meeting-insights-genai/oci-speech-adb-ai-arch-oracle/oci-speech-adb-ai-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oci-speech-meeting-insights-genai/_template.yaml"
},
"ocvs-vsan-stretched-cluster": {
"drawio": "kb/diagram/assets/archcenter-refs/ocvs-vsan-stretched-cluster/ocvs-vsan-stretched-cluster-oracle/ocvs-vsan-stretched-cluster.drawio",
"svg": "kb/diagram/assets/archcenter-refs/ocvs-vsan-stretched-cluster/ocvs-vsan-stretched-cluster-oracle/ocvs-vsan-stretched-cluster.svg",
"yaml": "kb/diagram/assets/archcenter-refs/ocvs-vsan-stretched-cluster/_template.yaml"
},
"oracle-adb-jde-exadata": {
"drawio": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata/_template.yaml"
},
"oracle-adb-jde-exadata-arch-oracle": {
"drawio": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.drawio",
"png": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata-arch-oracle/rendered.png",
"svg": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata-arch-oracle/oracle-adb-jde-exadata-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oracle-adb-jde-exadata-arch-oracle/_template.yaml"
},
"oracle-db-at-azure-migration": {
"drawio": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-migration/oracle-db-at-azure-zdm-oracle/oracle-db-at-azure-zdm.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-migration/oracle-db-at-azure-zdm-oracle/oracle-db-at-azure-zdm.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-migration/_template.yaml"
},
"oracle-db-at-azure-streaming": {
"drawio": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-streaming/oracle-db-at-azure-streaming-oracle/oracle-db-at-azure-streaming.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-streaming/oracle-db-at-azure-streaming-oracle/oracle-db-at-azure-streaming.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oracle-db-at-azure-streaming/_template.yaml"
},
"oracle-db-at-google-cloud-migration": {
"drawio": "kb/diagram/assets/archcenter-refs/oracle-db-at-google-cloud-migration/oracle_database_at_google_cloud_w_zdm-oracle/oracle_database_at_google_cloud_w_zdm.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oracle-db-at-google-cloud-migration/oracle_database_at_google_cloud_w_zdm-oracle/oracle_database_at_google_cloud_w_zdm.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oracle-db-at-google-cloud-migration/_template.yaml"
},
"oracle-maa-db-at-azure": {
"drawio": "kb/diagram/assets/archcenter-refs/oracle-maa-db-at-azure/cross-az-dr-oracle/cross-az-dr.drawio",
"svg": "kb/diagram/assets/archcenter-refs/oracle-maa-db-at-azure/cross-az-dr-oracle/cross-az-dr.svg",
"yaml": "kb/diagram/assets/archcenter-refs/oracle-maa-db-at-azure/_template.yaml"
},
"phased-migration-to-oracle-dba": {
"drawio": "kb/diagram/assets/archcenter-refs/phased-migration-to-oracle-dba/logical-architecture-diagram-oracle/logical-architecture-diagram.drawio",
"svg": "kb/diagram/assets/archcenter-refs/phased-migration-to-oracle-dba/logical-architecture-diagram-oracle/logical-architecture-diagram.svg",
"yaml": "kb/diagram/assets/archcenter-refs/phased-migration-to-oracle-dba/_template.yaml"
},
"private-dns": {
"drawio": "kb/diagram/assets/archcenter-refs/private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns.drawio",
"png": "kb/diagram/assets/archcenter-refs/private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns/architecture-deploy-private-dns.png",
"yaml": "kb/diagram/assets/archcenter-refs/private-dns/_template.yaml"
},
"remote-synchronous-block-replication-oci": {
"drawio": "kb/diagram/assets/archcenter-refs/remote-synchronous-block-replication-oci/remote-synchronous-block-replication-diagram-oracle/remote-synchronous-block-replication-diagram.drawio",
"svg": "kb/diagram/assets/archcenter-refs/remote-synchronous-block-replication-oci/remote-synchronous-block-replication-diagram-oracle/remote-synchronous-block-replication-diagram.svg",
"yaml": "kb/diagram/assets/archcenter-refs/remote-synchronous-block-replication-oci/_template.yaml"
},
"rep-fusion-saas-third-party-dw": {
"drawio": "kb/diagram/assets/archcenter-refs/rep-fusion-saas-third-party-dw/fusion-saas-to-snowflake-arch-oracle/fusion-saas-to-snowflake-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/rep-fusion-saas-third-party-dw/fusion-saas-to-snowflake-arch-oracle/fusion-saas-to-snowflake-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/rep-fusion-saas-third-party-dw/_template.yaml"
},
"run-quantized-gguf-llm-ampere-cluster": {
"drawio": "kb/diagram/assets/archcenter-refs/run-quantized-gguf-llm-ampere-cluster/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch.drawio",
"png": "kb/diagram/assets/archcenter-refs/run-quantized-gguf-llm-ampere-cluster/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch.png",
"svg": "kb/diagram/assets/archcenter-refs/run-quantized-gguf-llm-ampere-cluster/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch/gen-ai-ampere-gguf-llm-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/run-quantized-gguf-llm-ampere-cluster/_template.yaml"
},
"secure-backup-oci-object-storage": {
"drawio": "kb/diagram/assets/archcenter-refs/secure-backup-oci-object-storage/secure-backup-oci-object-storage-oracle/secure-backup-oci-object-storage.drawio",
"svg": "kb/diagram/assets/archcenter-refs/secure-backup-oci-object-storage/secure-backup-oci-object-storage-oracle/secure-backup-oci-object-storage.svg",
"yaml": "kb/diagram/assets/archcenter-refs/secure-backup-oci-object-storage/_template.yaml"
},
"select-ai-apex-framework": {
"drawio": "kb/diagram/assets/archcenter-refs/select-ai-apex-framework/hallucination-reduction-workflow-oracle/hallucination-reduction-workflow.drawio",
"svg": "kb/diagram/assets/archcenter-refs/select-ai-apex-framework/hallucination-reduction-workflow-oracle/hallucination-reduction-workflow.svg",
"yaml": "kb/diagram/assets/archcenter-refs/select-ai-apex-framework/_template.yaml"
},
"takamol-on-oci": {
"drawio": "kb/diagram/assets/archcenter-refs/takamol-on-oci/takamol-on-oci-arch-oracle/takamol-on-oci-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/takamol-on-oci/takamol-on-oci-arch-oracle/takamol-on-oci-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/takamol-on-oci/_template.yaml"
},
"tharseo-data-platform-on-oci": {
"drawio": "kb/diagram/assets/archcenter-refs/tharseo-data-platform-on-oci/tharseo-data-platform-on-oci-arch-oracle/tharseo-data-platform-on-oci-arch.drawio",
"svg": "kb/diagram/assets/archcenter-refs/tharseo-data-platform-on-oci/tharseo-data-platform-on-oci-arch-oracle/tharseo-data-platform-on-oci-arch.svg",
"yaml": "kb/diagram/assets/archcenter-refs/tharseo-data-platform-on-oci/_template.yaml"
},
"wls-on-oke-marketplace": {
"drawio": "kb/diagram/assets/archcenter-refs/wls-on-oke-marketplace/wls-oke-marketplace-oracle/wls-oke-marketplace.drawio",
"svg": "kb/diagram/assets/archcenter-refs/wls-on-oke-marketplace/wls-oke-marketplace-oracle/wls-oke-marketplace.svg",
"yaml": "kb/diagram/assets/archcenter-refs/wls-on-oke-marketplace/_template.yaml"
}
}
}

View File

@@ -0,0 +1,555 @@
# Auto-extracted absolute_layout template from
# kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.drawio
# Source: Oracle Architecture Center reference (canonical geometry).
# Use this as the starting scaffold for a new spec — copy, rename ids,
# and replace `type: TODO_identify` on services with the right OCI
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
# edge waypoints are Oracle's canonical layout; preserve unless the
# customer's topology requires a change.
absolute_layout:
canvas:
width: 850
height: 1100
containers:
- id: c1
type: region
label: ''
x: 652
y: 1
w: 676
h: 447
- id: c2
type: region
label: ''
x: 652
y: 585
w: 676
h: 447
- id: c5
type: region
label: ''
x: 965
y: 686
w: 105
h: 36
- id: c50
type: region
label: ''
x: 818
y: 161
w: 99
h: 14
- id: c53
type: region
label: ''
x: 818
y: 855
w: 99
h: 14
- id: c70
type: region
label: ''
x: 1150
y: 377
w: 2
h: 63
- id: c74
type: region
label: ''
x: 1150
y: 657
w: 2
h: 63
- id: c54
type: region
label: ''
x: 776
y: 855
w: 2
h: 50
- id: c58
type: region
label: ''
x: 956
y: 855
w: 2
h: 50
- id: c62
type: region
label: ''
x: 776
y: 161
w: 2
h: 50
- id: c66
type: region
label: ''
x: 956
y: 161
w: 2
h: 50
services:
- id: s3
type: TODO_identify
label: ''
x: 582
y: 34
w: 28
h: 31
- id: s7
type: TODO_identify
label: ''
x: 725
y: 77
w: 42
h: 40
- id: s6
type: TODO_identify
label: ''
x: 726
y: 77
w: 41
h: 39
- id: s8
type: TODO_identify
label: ''
x: 726
y: 78
w: 40
h: 38
- id: s12
type: TODO_identify
label: ''
x: 676
y: 106
w: 41
h: 41
- id: s13
type: TODO_identify
label: ''
x: 676
y: 106
w: 42
h: 42
- id: s14
type: TODO_identify
label: ''
x: 677
y: 120
w: 29
h: 26
- id: s15
type: TODO_identify
label: ''
x: 1260
y: 132
w: 41
h: 41
- id: s16
type: TODO_identify
label: ''
x: 1260
y: 132
w: 42
h: 42
- id: s17
type: TODO_identify
label: ''
x: 1261
y: 146
w: 29
h: 26
- id: s64
type: TODO_identify
label: ''
x: 756
y: 149
w: 42
h: 42
- id: s68
type: TODO_identify
label: ''
x: 936
y: 149
w: 42
h: 42
- id: s63
type: TODO_identify
label: ''
x: 757
y: 150
w: 40
h: 40
- id: s67
type: TODO_identify
label: ''
x: 937
y: 150
w: 40
h: 40
- id: s65
type: TODO_identify
label: ''
x: 758
y: 151
w: 38
h: 38
- id: s69
type: TODO_identify
label: ''
x: 938
y: 151
w: 38
h: 38
- id: s37
type: TODO_identify
label: ''
x: 500
y: 212
w: 48
h: 63
- id: s35
type: TODO_identify
label: ''
x: 1119
y: 212
w: 63
h: 63
- id: s34
type: TODO_identify
label: ''
x: 1120
y: 213
w: 62
h: 62
- id: s36
type: TODO_identify
label: ''
x: 1121
y: 214
w: 60
h: 60
- id: s19
type: TODO_identify
label: ''
x: 676
y: 241
w: 42
h: 42
- id: s18
type: TODO_identify
label: ''
x: 676
y: 242
w: 41
h: 41
- id: s20
type: TODO_identify
label: ''
x: 677
y: 256
w: 29
h: 26
- id: s31
type: TODO_identify
label: ''
x: 107
y: 314
w: 63
h: 63
- id: s30
type: TODO_identify
label: ''
x: 108
y: 315
w: 61
h: 61
- id: s32
type: TODO_identify
label: ''
x: 109
y: 315
w: 60
h: 60
- id: s33
type: TODO_identify
label: ''
x: 129
y: 322
w: 36
h: 41
- id: s72
type: TODO_identify
label: ''
x: 1129
y: 377
w: 42
h: 42
- id: s71
type: TODO_identify
label: ''
x: 1130
y: 378
w: 41
h: 41
- id: s73
type: TODO_identify
label: ''
x: 1130
y: 378
w: 40
h: 40
- id: s43
type: TODO_identify
label: ''
x: 944
y: 466
w: 57
h: 63
- id: s42
type: TODO_identify
label: ''
x: 945
y: 466
w: 55
h: 61
- id: s44
type: TODO_identify
label: ''
x: 946
y: 467
w: 54
h: 60
- id: s45
type: TODO_identify
label: ''
x: 958
y: 485
w: 29
h: 38
- id: s51
type: TODO_identify
label: ''
x: 1130
y: 505
w: 42
h: 29
- id: s52
type: TODO_identify
label: ''
x: 1136
y: 505
w: 29
h: 29
- id: s4
type: TODO_identify
label: ''
x: 582
y: 617
w: 28
h: 31
- id: s76
type: TODO_identify
label: ''
x: 1129
y: 657
w: 42
h: 42
- id: s75
type: TODO_identify
label: ''
x: 1130
y: 658
w: 41
h: 41
- id: s77
type: TODO_identify
label: ''
x: 1130
y: 658
w: 40
h: 40
- id: s10
type: TODO_identify
label: ''
x: 725
y: 661
w: 42
h: 40
- id: s9
type: TODO_identify
label: ''
x: 726
y: 662
w: 41
h: 39
- id: s11
type: TODO_identify
label: ''
x: 726
y: 662
w: 40
h: 38
- id: s22
type: TODO_identify
label: ''
x: 676
y: 690
w: 42
h: 42
- id: s21
type: TODO_identify
label: ''
x: 676
y: 691
w: 41
h: 41
- id: s23
type: TODO_identify
label: ''
x: 677
y: 705
w: 29
h: 26
- id: s24
type: TODO_identify
label: ''
x: 1260
y: 716
w: 41
h: 41
- id: s25
type: TODO_identify
label: ''
x: 1260
y: 716
w: 42
h: 42
- id: s26
type: TODO_identify
label: ''
x: 1261
y: 730
w: 29
h: 26
- id: s39
type: TODO_identify
label: ''
x: 107
y: 745
w: 63
h: 63
- id: s38
type: TODO_identify
label: ''
x: 108
y: 746
w: 61
h: 61
- id: s40
type: TODO_identify
label: ''
x: 109
y: 747
w: 60
h: 60
- id: s41
type: TODO_identify
label: ''
x: 129
y: 753
w: 36
h: 41
- id: s49
type: TODO_identify
label: ''
x: 500
y: 779
w: 48
h: 63
- id: s47
type: TODO_identify
label: ''
x: 1119
y: 821
w: 63
h: 63
- id: s46
type: TODO_identify
label: ''
x: 1120
y: 822
w: 62
h: 62
- id: s48
type: TODO_identify
label: ''
x: 1121
y: 823
w: 60
h: 60
- id: s27
type: TODO_identify
label: ''
x: 676
y: 826
w: 41
h: 41
- id: s28
type: TODO_identify
label: ''
x: 676
y: 826
w: 42
h: 42
- id: s29
type: TODO_identify
label: ''
x: 677
y: 840
w: 29
h: 26
- id: s56
type: TODO_identify
label: ''
x: 756
y: 843
w: 42
h: 42
- id: s60
type: TODO_identify
label: ''
x: 936
y: 843
w: 42
h: 42
- id: s55
type: TODO_identify
label: ''
x: 757
y: 844
w: 40
h: 40
- id: s59
type: TODO_identify
label: ''
x: 937
y: 844
w: 40
h: 40
- id: s57
type: TODO_identify
label: ''
x: 758
y: 845
w: 38
h: 38
- id: s61
type: TODO_identify
label: ''
x: 938
y: 845
w: 38
h: 38
labels: []
connections: []

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 135 KiB

View File

@@ -0,0 +1,297 @@
<!DOCTYPE html
SYSTEM "about:legacy-compat">
<html xml:lang="en-us" lang="en-us" class="solution">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="DC.Type" content="topic">
<meta name="DC.Title" content="Learn about Deploying Active Data Guard Far Sync">
<meta name="abstract" content="Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.">
<meta name="description" content="Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.">
<meta name="copyright" content="(C) Copyrightfr 2025" type="primary">
<meta name="DC.Rights.Owner" content="(C) Copyrightfr 2025" type="primary">
<meta name="copyright" content="(C) Copyrightfr 2025" type="secondary">
<meta name="DC.Rights.Owner" content="(C) Copyrightfr 2025" type="secondary">
<meta name="DC.Date.Created" content="February 2025">
<meta name="DC.Format" content="XHTML">
<meta name="DC.Identifier" content="GUID-D17BA324-11FB-488B-976A-24D25CDFD6BB">
<meta name="DC.Language" content="en-US">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="abstract" content="Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.">
<meta name="description" content="Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.">
<title>Learn about Deploying Active Data Guard Far Sync</title>
<meta property="og:site_name" content="Oracle Help Center">
<meta property="og:title" content="Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions">
<meta property="og:description" content="Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.">
<link rel="stylesheet" href="/sp_common/book-template/ohc-book-template/css/book.css">
<link rel="shortcut icon" href="/sp_common/book-template/ohc-common/img/favicon.ico">
<meta name="application-name" content="Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions">
<meta name="generator" content="DITA Open Toolkit version 1.8.5 (Mode = solution)">
<meta name="plugin" content="SP_docbuilder HTML plugin release 18.2.2">
<meta name="keywords" content="Azure, Compute, Database Services, Oracle Cloud Infrastructure (OCI), Multicloud, Networking">
<link rel="schema.dcterms" href="http://purl.org/dc/terms/">
<meta name="dcterms.created" content="2025-02-20T13:29:14-08:00">
<meta name="dcterms.title" content="Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions">
<meta name="dcterms.dateCopyrighted" content="2025">
<meta name="dcterms.category" content="solutions">
<meta name="dcterms.identifier" content="G24005-02">
<meta name="dcterms.product" content="en/solutions;en/cloud/oracle-cloud-infrastructure/oracle-database-at-azure;en/cloud/paas/exadata-cloud">
<meta name="dcterms.release" content="Test Release">
<link rel="next" href="install-oci-compute-virtual-machines-far-sync.html" title="Next" type="text/html">
<script>
document.write('<style type="text/css">');
document.write('body > .noscript, body > .noscript ~ * { visibility: hidden; }');
document.write('</style>');
</script>
<script data-main="/sp_common/book-template/ohc-book-template/js/book-config" src="/sp_common/book-template/requirejs/require.js"></script>
<script>
if (window.require === undefined) {
document.write('<script data-main="sp_common/book-template/ohc-book-template/js/book-config" src="sp_common/book-template/requirejs/require.js"><\/script>');
document.write('<link href="sp_common/book-template/ohc-book-template/css/book.css" rel="stylesheet"/>');
}
</script>
<script type="application/json" id="ssot-metadata">{"primary":{"category":{"short_name":"solutions","element_name":"Solutions","display_in_url":true},"suite":{"short_name":"develop","element_name":"Develop","display_in_url":false},"product_group":{"short_name":"deployment","element_name":"Deployment","display_in_url":false}}}</script>
<meta name="dcterms.isVersionOf" content="ACTIVE-DATA-GUARD-FAR-SYNC-ORACLE-DB-AT-AZURE">
<script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","name":"Learn about Deploying Active Data Guard Far Sync","description":"Oracle Database@Azure enables you to run your mission-critical Oracle databases using Oracle Exadata Database Service on Dedicated Infrastructure in Microsoft Azure's data center.","datePublished":"2025-02-10 CST","dateModified":"2025-02-20 CST"} </script>
<link rel="alternate" hreflang="en" href="https://docs.oracle.com/en/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<link rel="alternate" hreflang="ja" href="https://docs.oracle.com/ja/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<link rel="alternate" hreflang="fr-CA" href="https://docs.oracle.com/fr-ca/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<link rel="alternate" hreflang="ko" href="https://docs.oracle.com/ko/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<link rel="alternate" hreflang="es" href="https://docs.oracle.com/es/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<link rel="alternate" hreflang="it" href="https://docs.oracle.com/it/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<link rel="alternate" hreflang="fr" href="https://docs.oracle.com/fr/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<link rel="alternate" hreflang="zh-TW" href="https://docs.oracle.com/zh-tw/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<link rel="alternate" hreflang="de" href="https://docs.oracle.com/de/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<link rel="alternate" hreflang="pt-BR" href="https://docs.oracle.com/pt-br/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<link rel="alternate" hreflang="zh-CN" href="https://docs.oracle.com/zh-cn/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<link rel="alternate" hreflang="x-default" href="https://docs.oracle.com/en/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html">
<script>window.ohcglobal || document.write('<script src="/en/dcommon/js/global.js">\x3C/script>')</script></head>
<body>
<div class="noscript alert alert-danger text-center" role="alert">
<a href="index.html" class="pull-left"><span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>Previous</a>
<a href="install-oci-compute-virtual-machines-far-sync.html" class="pull-right">Next<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span></a>
<span class="fa fa-exclamation-triangle" aria-hidden="true"></span> JavaScript must be enabled to correctly display this content
</div>
<article>
<header>
<ol class="breadcrumb" vocab="http://schema.org/" typeof="BreadcrumbList">
<li property="itemListElement" typeof="ListItem"><a href="index.html" property="item" typeof="WebPage"><span property="name">Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions</span></a></li>
<li class="active" property="itemListElement" typeof="ListItem">Learn about Deploying Active Data Guard Far Sync</li>
</ol>
<a id="GUID-D17BA324-11FB-488B-976A-24D25CDFD6BB" name="GUID-D17BA324-11FB-488B-976A-24D25CDFD6BB"></a>
<h2 id="IAIGF-GUID-D17BA324-11FB-488B-976A-24D25CDFD6BB" class="sect2">Learn about Deploying <span>Active Data Guard Far Sync</span></h2>
</header>
<div class="ind">
<div>
<p><span>Oracle Database@Azure</span> enables you to run your mission-critical Oracle databases using <span>Oracle Exadata Database Service on Dedicated
Infrastructure</span> in <span>Microsoft Azure</span>'s data center.
</p>
<p>Take advantage of the built-in high availability, performance, and
scalability of <span>Oracle Exadata Database
Service</span> and <span>Oracle Real Application Clusters (Oracle
RAC)</span> while benefiting from low latency for <span>Azure</span> applications.
</p>
<p>Extending the architecture with a standby database hosted on another Exadata
virtual machine (VM) cluster provides disaster recovery (DR) protection against database
and cluster failures. Placing the standby in a different <span>Azure</span> availability zone (AZ) further enhances the solution, ensuring protection against an
entire AZ failure. For comprehensive regional disaster recovery, the standby database
should be deployed in a separate region.
</p>
<p><span>Oracle Data Guard</span> enables you to synchronously transport the redo to the standby database to ensure
zero data loss. However, when the standby database is geographically too far, the
latency increases, impacting the commit response time and the transaction throughput at
the primary database. <span>Active Data Guard Far Sync</span> can ensure zero data loss at any distance with minimal impact on the primary database
performance. Far Sync, a lightweight instance, provides synchronous redo protection and
zero data loss fail over without requiring a synchronous local standby database.
</p>
</div>
<div class="sect2"><a id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2" name="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2"></a><h3 id="IAIGF-GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2" class="sect3">Architecture</h3>
<div>
<p>This reference architecture shows a cross-region disaster recovery with <span>Active Data Guard</span>.
</p>
<p>Two <span>Active Data Guard</span> far sync instances are created in the corresponding <span>Oracle Cloud
Infrastructure</span> (OCI) regions. The primary database in Toronto sends the redo data in SYNC mode to
the local far sync instance in Toronto, which forwards the redo data in ASYNC mode to
the standby database in the remote Sydney region.
</p>
<p>After a role switch and the database in Sydney becomes the primary, it sends
the redo data in SYNC mode to its local far sync instance in Sydney, which forwards the
redo data in ASYNC mode to the standby database in the remote Toronto region.</p>
<p>The <span>Oracle Exadata Database
Service</span> on the <span>Oracle Database@Azure</span> network is connected to the Exadata client subnet using a dynamic routing gateway
(DRG) managed by Oracle. A DRG is also required to create a peer connection between VCNs
in different regions. Because only one DRG is allowed per VCN in OCI, a second VCN with
its own DRG is required to connect the primary and standby VCNs in each region.
</p>
<p>The application is replicated across regions to access the database in the same region
and achieve the lowest latency and highest performance.</p>
<p>The following diagram illustrates this reference architecture.</p><br><div class="imageleft"><img class="imageleft" id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__IMAGE_OPD_T33_C2C" height="977" width="1256" src="img/active-data-guard-far-sync-dba.png" alt="Description of active-data-guard-far-sync-dba.png follows" title="Description of active-data-guard-far-sync-dba.png follows" longdesc="img_text/active-data-guard-far-sync-dba.html"><br><a href="img_text/active-data-guard-far-sync-dba.html">Description of the illustration active-data-guard-far-sync-dba.png</a></div><br><p><a href="img/active-data-guard-far-sync-dba-oracle.zip" class="de-download">active-data-guard-far-sync-dba-oracle.zip</a></p>
<p><span>Microsoft Azure</span> provides the following components:
</p>
<ul style="list-style-type: disc;" id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__UL_HZN_W33_C2C">
<li><span class="bold">Azure Region</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d5e198">An <span>Azure</span> region is a geographical area in which one or more
physical <span>Azure</span> data centers, called availability zones, reside. Regions
are independent of other regions, and vast distances can
separate them (across countries or even continents).
</p>
<p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d5e205"><span>Azure</span> and OCI regions are localized geographic areas. For <span>Oracle Database@Azure</span>, an <span>Azure</span> region is connected to an OCI region, with availability
zones (AZs) in <span>Azure</span> connected to availability domains (ADs) in OCI. <span>Azure</span> and OCI region pairs are selected to minimize distance
and
latency.
</p>
</li>
<li><span class="bold">Azure VNet</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d5e267">Microsoft Azure Virtual Network (VNet) is
the fundamental building block for your private network in
Azure. VNet enables many types of Azure resources, such as
Azure virtual machines (VM), to securely communicate with
each other, the internet, and on-premises networks.</p>
</li>
<li><span class="bold">Azure Delegated Subnet</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d5e280">Subnet delegation is
Microsoft's ability to inject a managed service,
specifically a platform-as-a-service (PaaS) service,
directly into your virtual network. This allows you to
designate or delegate a subnet to be a home for an external
managed service inside of your virtual network, such that
external service acts as a virtual network resource, even
though it is an external PaaS service.</p>
</li>
<li><span class="bold">Azure VNIC</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d5e273">The services in Azure
data centers have physical network interface cards (NICs).
Virtual machine instances communicate using virtual NICs
(VNICs) associated with the physical NICs. Each instance has
a primary VNIC that's automatically created and attached
during launch and is available during the instance's
lifetime.</p>
</li>
</ul>
<p><span>Oracle Cloud
Infrastructure</span> provides the following components:
</p>
<ul style="list-style-type: disc;" id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__UL_FMY_1J3_C2C">
<li><span class="bold">Region</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e1136">An <span>Oracle Cloud
Infrastructure</span> region is a localized geographic area that contains one or more data centers, called availability domains. Regions are independent of other regions, and vast distances can separate them (across countries or even continents).
</p>
</li>
<li><span class="bold">Virtual cloud network (VCN) and subnet</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e1268">A VCN is a customizable, software-defined network that you set up in an <span>Oracle Cloud
Infrastructure</span> region. Like traditional data center networks, VCNs give you control over your network environment. A VCN can have multiple non-overlapping CIDR blocks that you can change after you create the VCN. You can segment a VCN into subnets, which can be scoped to a region or to an availability domain. Each subnet consists of a contiguous range of addresses that don't overlap with the other subnets in the VCN. You can change the size of a subnet after creation. A subnet can be public or private.
</p>
</li>
<li><span class="bold">Route table</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e1159">Virtual route tables contain rules to route traffic from subnets to destinations outside a VCN, typically through gateways.</p>
</li>
<li><span class="bold">Security list</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e1165">For each subnet, you can create security rules that specify the source, destination, and type of traffic that must be allowed in and out of the subnet.</p>
</li>
<li><span class="bold">Dynamic routing gateway (DRG)</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e437">The DRG is a virtual router that provides a path for private network traffic between VCNs in the same region, between a VCN and a network outside the region, such as a VCN in another <span>Oracle Cloud
Infrastructure</span> region, an on-premises network, or a network in another cloud provider.
</p>
</li>
<li><span class="bold">Local peering gateway (LPG)</span><p>An LPG enables you to peer one VCN with another
VCN in the same region. Peering means the VCNs communicate using private IP
addresses, without the traffic traversing the internet or routing through your
on-premises network.</p>
</li>
<li><span class="bold">Data Guard</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e285"><span>Oracle Data Guard</span> and Oracle Active Data Guard provide a comprehensive set of services that create, maintain, manage, and monitor one or more standby databases and that enable production Oracle databases to remain available without interruption. <span>Oracle Data Guard</span> maintains these standby databases as copies of the production database by using in-memory replication. If the production database becomes unavailable due to a planned or an unplanned outage, <span>Oracle Data Guard</span> can switch any standby database to the production role, minimizing the downtime associated with the outage. Oracle Active Data Guard provides the additional ability to offload read-mostly workloads to standby databases and also provides advanced data protection features.
</p>
</li>
<li><span class="bold"><span>Active Data Guard Far Sync</span></span><p>Oracle <span>Active Data Guard Far Sync</span> is a lightweight Oracle database instance that receives redo data
synchronously from the primary database and forwards it asynchronously to one or
more standby databases. It ensures zero data loss at any distance with minimal
impact on the primary database performance and without requiring a local
synchronous standby database.
</p>
</li>
<li><span class="bold">Exadata Database Service on Dedicated Infrastructure</span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e499"><span>Oracle Exadata Database Service on Dedicated
Infrastructure</span> enables you to leverage the power of Exadata in
the cloud. <span>Oracle Exadata Database
Service</span> delivers proven <span>Oracle Database</span> capabilities on purpose-built, optimized Oracle
Exadata infrastructure in the public cloud.
Built-in cloud automation, elastic resource
scaling, security, and fast performance for all
<span>Oracle Database</span> workloads helps you simplify management and
reduce costs.
</p>
</li>
<li><span class="bold"><span>Oracle Database@Azure</span></span><p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e918"><span>Oracle Database@Azure</span> is the Oracle Database service (<span>Oracle Exadata Database Service on Dedicated
Infrastructure</span> and <span>Oracle Autonomous Database Serverless</span>) running on <span>Oracle Cloud
Infrastructure</span> (OCI), deployed in Microsoft Azure data centers. The service offers features and price parity with OCI. Purchase the service on Azure Marketplace.
</p>
<p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e927"><span>Oracle Database@Azure</span> integrates <span>Oracle Exadata Database
Service</span>, <span>Oracle Real Application Clusters (Oracle
RAC)</span>, and <span>Oracle Data Guard</span> technologies into the Azure platform. Users manage the service on the Azure console and with Azure automation tools. The service is deployed in Azure Virtual Network (VNet) and integrated with the Azure identity and access management system. The OCI and <span>Oracle Database</span> generic metrics and audit logs are natively available in Azure. The service requires users to have an Azure subscription and an OCI tenancy.
</p>
<p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e938"><span>Autonomous Database</span> is built on Oracle Exadata infrastructure, is self-managing, self-securing, and self-repairing, helping eliminate manual database management and human errors. <span>Autonomous Database</span> enables development of scalable AI-powered apps with any data using built-in AI capabilities using your choice of large language model (LLM) and deployment location.
</p>
<p id="GUID-48F0D8A9-06D6-411A-AF04-2867963E98D2__d204e943">Both <span>Oracle Exadata Database
Service</span> and <span>Oracle Autonomous Database Serverless</span> are easily provisioned through the native Azure Portal, enabling access to the broader Azure ecosystem.
</p>
</li>
</ul>
</div>
</div>
<div class="sect2"><a id="GUID-DC67E72F-8C19-4792-9AFF-DE6DDBC968B8" name="GUID-DC67E72F-8C19-4792-9AFF-DE6DDBC968B8"></a><h3 id="IAIGF-GUID-DC67E72F-8C19-4792-9AFF-DE6DDBC968B8" class="sect3">Recommendations</h3>
<div>
<div><span>Use the following recommendations as a starting point.
</span>Your requirements might differ from the architecture described here.
</div>
<ul style="list-style-type: disc;" id="GUID-DC67E72F-8C19-4792-9AFF-DE6DDBC968B8__UL_FWK_JBG_RKB">
<li>The far sync instance should be far enough from the primary database to
ensure it cant be affected by the same failure or disaster but close enough to
minimize the network latency.</li>
<li>Create two far sync instances per region for high availability. Without
an alternate far sync instance, or if all far sync instances in the primary region
are unavailable, the <span>Oracle Data Guard</span> redo transport will be directly shipped to the standby database in ASYNC mode,
affecting the zero data loss protection, and, depending on the configuration and
distance, it might result in transport lag further impacting RPO.
</li>
<li>As the storage performance of the far sync instance is critical, the
IOPS capacity should be adequate to support the workload. The far sync instance's
storage should have an IOPS performance equal to or better than the primary
database's online redo logs storage.</li>
<li>Use <span>Oracle Data Guard</span> across regions for the databases provisioned in the Exadata VM cluster on <span>Oracle Database@Azure</span> by using an OCI Managed network.
</li>
</ul>
</div>
</div>
<div class="sect2"><a id="GUID-BE8EBF3A-9557-4952-B79B-35AABA5ED0D7" name="GUID-BE8EBF3A-9557-4952-B79B-35AABA5ED0D7"></a><h3 id="IAIGF-GUID-BE8EBF3A-9557-4952-B79B-35AABA5ED0D7" class="sect3">Considerations for Cross-Regional
Disaster Recovery</h3>
<div>
<p>When performing cross-regional disaster recovery for <span>Oracle Exadata Database
Service</span> on <span>Oracle Database@Azure</span>, consider the following.
</p>
<ul style="list-style-type: disc;" id="GUID-BE8EBF3A-9557-4952-B79B-35AABA5ED0D7__UL_AVT_VJ3_C2C">
<li><span>Oracle Cloud
Infrastructure</span> is the preferred network for achieving better performance, measured by latency
and throughput, and for reducing costs, as the first 10 TB/Month are free.
</li>
<li>Far sync is a lightweight instance. However, disk performance is
critical as far sync writes the received redo to disk before acknowledging back to
the primary, which might impact the application performance.</li>
<li>The network performance of the far sync instance is critical for heavy
workloads.</li>
<li>With multiple standby databases and far sync instances, the
configuration might get more complicated. Use the <span>Active Data Guard</span> broker RedoRoutes property to simplify the definition of how redo is transported
to the various destinations.
</li>
<li>Using far sync requires the <span>Active Data Guard</span> option.
</li>
</ul>
</div>
</div>
</div>
</article>
<div id="disclaimers" class="legal">
<div><a href="#copyright-information" role="button" data-toggle="collapse" aria-expanded="false" class="collapsed" aria-controls="copyright-information" id="copyright-information-btn">Title and Copyright Information</a></div>
<div class="collapse" id="copyright-information" aria-expanded="false">
<p class="legal">Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions</p>
<p class="legal">G24005-02</p>
<p class="date legal">February 2025</p>
<div class="legal" style="display:inline"><a href="/pls/topic/lookup?ctx=en/legal&id=cpyr" target="_blank">Copyright ©</a>2025, </div><div class="legal" style="display:inline">Oracle and/or its affiliates.</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,198 @@
# Deploy Active Data Guard Far Sync to protect data across Oracle Database@Azure regions
- Source: https://docs.oracle.com/en/solutions/active-data-guard-far-sync-oracle-db-at-azure/index.html
- Date: 2025-02
- Type: reference-architecture
- Services: exacs, adg, azure
- Tags: database, multicloud, azure, ha-dr
## Summary (catalog)
Far Sync instance for zero data loss protection across Azure regions. Synchronous redo transport to Far Sync, async to remote standby. Eliminates performance impact of synchronous shipping over long distances.
## Architecture (fetched from source)
Architecture
This reference architecture shows a cross-region disaster recovery with Active Data Guard .
Two Active Data Guard far sync instances are created in the corresponding Oracle Cloud
Infrastructure (OCI) regions. The primary database in Toronto sends the redo data in SYNC mode to
the local far sync instance in Toronto, which forwards the redo data in ASYNC mode to
the standby database in the remote Sydney region.
After a role switch and the database in Sydney becomes the primary, it sends
the redo data in SYNC mode to its local far sync instance in Sydney, which forwards the
redo data in ASYNC mode to the standby database in the remote Toronto region.
The Oracle Exadata Database
Service on the Oracle Database@Azure network is connected to the Exadata client subnet using a dynamic routing gateway
(DRG) managed by Oracle. A DRG is also required to create a peer connection between VCNs
in different regions. Because only one DRG is allowed per VCN in OCI, a second VCN with
its own DRG is required to connect the primary and standby VCNs in each region.
The application is replicated across regions to access the database in the same region
and achieve the lowest latency and highest performance.
The following diagram illustrates this reference architecture.
Description of the illustration active-data-guard-far-sync-dba.png
active-data-guard-far-sync-dba-oracle.zip
Microsoft Azure provides the following components:
- Azure Region
An Azure region is a geographical area in which one or more
physical Azure data centers, called availability zones, reside. Regions
are independent of other regions, and vast distances can
separate them (across countries or even continents).
Azure and OCI regions are localized geographic areas. For Oracle Database@Azure , an Azure region is connected to an OCI region, with availability
zones (AZs) in Azure connected to availability domains (ADs) in OCI. Azure and OCI region pairs are selected to minimize distance
and
latency.
- Azure VNet
Microsoft Azure Virtual Network (VNet) is
the fundamental building block for your private network in
Azure. VNet enables many types of Azure resources, such as
Azure virtual machines (VM), to securely communicate with
each other, the internet, and on-premises networks.
- Azure Delegated Subnet
Subnet delegation is
Microsoft's ability to inject a managed service,
specifically a platform-as-a-service (PaaS) service,
directly into your virtual network. This allows you to
designate or delegate a subnet to be a home for an external
managed service inside of your virtual network, such that
external service acts as a virtual network resource, even
though it is an external PaaS service.
- Azure VNIC
The services in Azure
data centers have physical network interface cards (NICs).
Virtual machine instances communicate using virtual NICs
(VNICs) associated with the physical NICs. Each instance has
a primary VNIC that's automatically created and attached
during launch and is available during the instance's
lifetime.
Oracle Cloud
Infrastructure provides the following components:
- Region
An Oracle Cloud
Infrastructure region is a localized geographic area that contains one or more data centers, called availability domains. Regions are independent of other regions, and vast distances can separate them (across countries or even continents).
- Virtual cloud network (VCN) and subnet
A VCN is a customizable, software-defined network that you set up in an Oracle Cloud
Infrastructure region. Like traditional data center networks, VCNs give you control over your network environment. A VCN can have multiple non-overlapping CIDR blocks that you can change after you create the VCN. You can segment a VCN into subnets, which can be scoped to a region or to an availability domain. Each subnet consists of a contiguous range of addresses that don't overlap with the other subnets in the VCN. You can change the size of a subnet after creation. A subnet can be public or private.
- Route table
Virtual route tables contain rules to route traffic from subnets to destinations outside a VCN, typically through gateways.
- Security list
For each subnet, you can create security rules that specify the source, destination, and type of traffic that must be allowed in and out of the subnet.
- Dynamic routing gateway (DRG)
The DRG is a virtual router that provides a path for private network traffic between VCNs in the same region, between a VCN and a network outside the region, such as a VCN in another Oracle Cloud
Infrastructure region, an on-premises network, or a network in another cloud provider.
- Local peering gateway (LPG)
An LPG enables you to peer one VCN with another
VCN in the same region. Peering means the VCNs communicate using private IP
addresses, without the traffic traversing the internet or routing through your
on-premises network.
- Data Guard
Oracle Data Guard and Oracle Active Data Guard provide a comprehensive set of services that create, maintain, manage, and monitor one or more standby databases and that enable production Oracle databases to remain available without interruption. Oracle Data Guard maintains these standby databases as copies of the production database by using in-memory replication. If the production database becomes unavailable due to a planned or an unplanned outage, Oracle Data Guard can switch any standby database to the production role, minimizing the downtime associated with the outage. Oracle Active Data Guard provides the additional ability to offload read-mostly workloads to standby databases and also provides advanced data protection features.
- Active Data Guard Far Sync
Oracle Active Data Guard Far Sync is a lightweight Oracle database instance that receives redo data
synchronously from the primary database and forwards it asynchronously to one or
more standby databases. It ensures zero data loss at any distance with minimal
impact on the primary database performance and without requiring a local
synchronous standby database.
- Exadata Database Service on Dedicated Infrastructure
Oracle Exadata Database Service on Dedicated
Infrastructure enables you to leverage the power of Exadata in
the cloud. Oracle Exadata Database
Service delivers proven Oracle Database capabilities on purpose-built, optimized Oracle
Exadata infrastructure in the public cloud.
Built-in cloud automation, elastic resource
scaling, security, and fast performance for all
Oracle Database workloads helps you simplify management and
reduce costs.
- Oracle Database@Azure
Oracle Database@Azure is the Oracle Database service ( Oracle Exadata Database Service on Dedicated
Infrastructure and Oracle Autonomous Database Serverless ) running on Oracle Cloud
Infrastructure (OCI), deployed in Microsoft Azure data centers. The service offers features and price parity with OCI. Purchase the service on Azure Marketplace.
Oracle Database@Azure integrates Oracle Exadata Database
Service , Oracle Real Application Clusters (Oracle
RAC) , and Oracle Data Guard technologies into the Azure platform. Users manage the service on the Azure console and with Azure automation tools. The service is deployed in Azure Virtual Network (VNet) and integrated with the Azure identity and access management system. The OCI and Oracle Database generic metrics and audit logs are natively available in Azure. The service requires users to have an Azure subscription and an OCI tenancy.
Autonomous Database is built on Oracle Exadata infrastructure, is self-managing, self-securing, and self-repairing, helping eliminate manual database management and human errors. Autonomous Database enables development of scalable AI-powered apps with any data using built-in AI capabilities using your choice of large language model (LLM) and deploymen

View File

@@ -0,0 +1,555 @@
# Auto-extracted absolute_layout template from
# kb/diagram/assets/archcenter-refs/active-data-guard-far-sync-oracle-db-at-azure/active-data-guard-far-sync-dba-oracle/active-data-guard-far-sync-dba.drawio
# Source: Oracle Architecture Center reference (canonical geometry).
# Use this as the starting scaffold for a new spec — copy, rename ids,
# and replace `type: TODO_identify` on services with the right OCI
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
# edge waypoints are Oracle's canonical layout; preserve unless the
# customer's topology requires a change.
absolute_layout:
canvas:
width: 850
height: 1100
containers:
- id: c1
type: region
label: ''
x: 652
y: 1
w: 676
h: 447
- id: c2
type: region
label: ''
x: 652
y: 585
w: 676
h: 447
- id: c5
type: region
label: ''
x: 965
y: 686
w: 105
h: 36
- id: c50
type: region
label: ''
x: 818
y: 161
w: 99
h: 14
- id: c53
type: region
label: ''
x: 818
y: 855
w: 99
h: 14
- id: c70
type: region
label: ''
x: 1150
y: 377
w: 2
h: 63
- id: c74
type: region
label: ''
x: 1150
y: 657
w: 2
h: 63
- id: c54
type: region
label: ''
x: 776
y: 855
w: 2
h: 50
- id: c58
type: region
label: ''
x: 956
y: 855
w: 2
h: 50
- id: c62
type: region
label: ''
x: 776
y: 161
w: 2
h: 50
- id: c66
type: region
label: ''
x: 956
y: 161
w: 2
h: 50
services:
- id: s3
type: TODO_identify
label: ''
x: 582
y: 34
w: 28
h: 31
- id: s7
type: TODO_identify
label: ''
x: 725
y: 77
w: 42
h: 40
- id: s6
type: TODO_identify
label: ''
x: 726
y: 77
w: 41
h: 39
- id: s8
type: TODO_identify
label: ''
x: 726
y: 78
w: 40
h: 38
- id: s12
type: TODO_identify
label: ''
x: 676
y: 106
w: 41
h: 41
- id: s13
type: TODO_identify
label: ''
x: 676
y: 106
w: 42
h: 42
- id: s14
type: TODO_identify
label: ''
x: 677
y: 120
w: 29
h: 26
- id: s15
type: TODO_identify
label: ''
x: 1260
y: 132
w: 41
h: 41
- id: s16
type: TODO_identify
label: ''
x: 1260
y: 132
w: 42
h: 42
- id: s17
type: TODO_identify
label: ''
x: 1261
y: 146
w: 29
h: 26
- id: s64
type: TODO_identify
label: ''
x: 756
y: 149
w: 42
h: 42
- id: s68
type: TODO_identify
label: ''
x: 936
y: 149
w: 42
h: 42
- id: s63
type: TODO_identify
label: ''
x: 757
y: 150
w: 40
h: 40
- id: s67
type: TODO_identify
label: ''
x: 937
y: 150
w: 40
h: 40
- id: s65
type: TODO_identify
label: ''
x: 758
y: 151
w: 38
h: 38
- id: s69
type: TODO_identify
label: ''
x: 938
y: 151
w: 38
h: 38
- id: s37
type: TODO_identify
label: ''
x: 500
y: 212
w: 48
h: 63
- id: s35
type: TODO_identify
label: ''
x: 1119
y: 212
w: 63
h: 63
- id: s34
type: TODO_identify
label: ''
x: 1120
y: 213
w: 62
h: 62
- id: s36
type: TODO_identify
label: ''
x: 1121
y: 214
w: 60
h: 60
- id: s19
type: TODO_identify
label: ''
x: 676
y: 241
w: 42
h: 42
- id: s18
type: TODO_identify
label: ''
x: 676
y: 242
w: 41
h: 41
- id: s20
type: TODO_identify
label: ''
x: 677
y: 256
w: 29
h: 26
- id: s31
type: TODO_identify
label: ''
x: 107
y: 314
w: 63
h: 63
- id: s30
type: TODO_identify
label: ''
x: 108
y: 315
w: 61
h: 61
- id: s32
type: TODO_identify
label: ''
x: 109
y: 315
w: 60
h: 60
- id: s33
type: TODO_identify
label: ''
x: 129
y: 322
w: 36
h: 41
- id: s72
type: TODO_identify
label: ''
x: 1129
y: 377
w: 42
h: 42
- id: s71
type: TODO_identify
label: ''
x: 1130
y: 378
w: 41
h: 41
- id: s73
type: TODO_identify
label: ''
x: 1130
y: 378
w: 40
h: 40
- id: s43
type: TODO_identify
label: ''
x: 944
y: 466
w: 57
h: 63
- id: s42
type: TODO_identify
label: ''
x: 945
y: 466
w: 55
h: 61
- id: s44
type: TODO_identify
label: ''
x: 946
y: 467
w: 54
h: 60
- id: s45
type: TODO_identify
label: ''
x: 958
y: 485
w: 29
h: 38
- id: s51
type: TODO_identify
label: ''
x: 1130
y: 505
w: 42
h: 29
- id: s52
type: TODO_identify
label: ''
x: 1136
y: 505
w: 29
h: 29
- id: s4
type: TODO_identify
label: ''
x: 582
y: 617
w: 28
h: 31
- id: s76
type: TODO_identify
label: ''
x: 1129
y: 657
w: 42
h: 42
- id: s75
type: TODO_identify
label: ''
x: 1130
y: 658
w: 41
h: 41
- id: s77
type: TODO_identify
label: ''
x: 1130
y: 658
w: 40
h: 40
- id: s10
type: TODO_identify
label: ''
x: 725
y: 661
w: 42
h: 40
- id: s9
type: TODO_identify
label: ''
x: 726
y: 662
w: 41
h: 39
- id: s11
type: TODO_identify
label: ''
x: 726
y: 662
w: 40
h: 38
- id: s22
type: TODO_identify
label: ''
x: 676
y: 690
w: 42
h: 42
- id: s21
type: TODO_identify
label: ''
x: 676
y: 691
w: 41
h: 41
- id: s23
type: TODO_identify
label: ''
x: 677
y: 705
w: 29
h: 26
- id: s24
type: TODO_identify
label: ''
x: 1260
y: 716
w: 41
h: 41
- id: s25
type: TODO_identify
label: ''
x: 1260
y: 716
w: 42
h: 42
- id: s26
type: TODO_identify
label: ''
x: 1261
y: 730
w: 29
h: 26
- id: s39
type: TODO_identify
label: ''
x: 107
y: 745
w: 63
h: 63
- id: s38
type: TODO_identify
label: ''
x: 108
y: 746
w: 61
h: 61
- id: s40
type: TODO_identify
label: ''
x: 109
y: 747
w: 60
h: 60
- id: s41
type: TODO_identify
label: ''
x: 129
y: 753
w: 36
h: 41
- id: s49
type: TODO_identify
label: ''
x: 500
y: 779
w: 48
h: 63
- id: s47
type: TODO_identify
label: ''
x: 1119
y: 821
w: 63
h: 63
- id: s46
type: TODO_identify
label: ''
x: 1120
y: 822
w: 62
h: 62
- id: s48
type: TODO_identify
label: ''
x: 1121
y: 823
w: 60
h: 60
- id: s27
type: TODO_identify
label: ''
x: 676
y: 826
w: 41
h: 41
- id: s28
type: TODO_identify
label: ''
x: 676
y: 826
w: 42
h: 42
- id: s29
type: TODO_identify
label: ''
x: 677
y: 840
w: 29
h: 26
- id: s56
type: TODO_identify
label: ''
x: 756
y: 843
w: 42
h: 42
- id: s60
type: TODO_identify
label: ''
x: 936
y: 843
w: 42
h: 42
- id: s55
type: TODO_identify
label: ''
x: 757
y: 844
w: 40
h: 40
- id: s59
type: TODO_identify
label: ''
x: 937
y: 844
w: 40
h: 40
- id: s57
type: TODO_identify
label: ''
x: 758
y: 845
w: 38
h: 38
- id: s61
type: TODO_identify
label: ''
x: 938
y: 845
w: 38
h: 38
labels: []
connections: []

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 135 KiB

View File

@@ -0,0 +1,7 @@
The diagram you downloaded is available in these formats:
- DRAWIO
- SVG
You can customize them for your organization using the associated tools:
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.

View File

@@ -0,0 +1,290 @@
<!DOCTYPE html
SYSTEM "about:legacy-compat">
<html xml:lang="en-us" lang="en-us" class="solution">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="DC.Type" content="concept">
<meta name="DC.Title" content="Deploy Oracle Autonomous Database on Oracle Database@Azure">
<meta name="abstract" content="Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.">
<meta name="description" content="Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.">
<meta name="copyright" content="(C) Copyrightfr 2024" type="primary">
<meta name="DC.Rights.Owner" content="(C) Copyrightfr 2024" type="primary">
<meta name="copyright" content="(C) Copyrightfr 2024" type="secondary">
<meta name="DC.Rights.Owner" content="(C) Copyrightfr 2024" type="secondary">
<meta name="DC.Date.Created" content="October 2024">
<meta name="DC.Format" content="XHTML">
<meta name="DC.Identifier" content="GUID-23EC4595-5EC2-4599-B574-1998B3409D9E">
<meta name="DC.Language" content="en-US">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="abstract" content="Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.">
<meta name="description" content="Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.">
<title>Deploy Oracle Autonomous Database on Oracle Database@Azure</title>
<meta property="og:site_name" content="Oracle Help Center">
<meta property="og:title" content="Deploy Autonomous Database on Oracle Database@Azure">
<meta property="og:description" content="Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.">
<link rel="stylesheet" href="/sp_common/book-template/ohc-book-template/css/book.css">
<link rel="shortcut icon" href="/sp_common/book-template/ohc-common/img/favicon.ico">
<meta name="application-name" content="Deploy Autonomous Database on Oracle Database@Azure">
<meta name="generator" content="DITA Open Toolkit version 1.8.5 (Mode = solution)">
<meta name="plugin" content="SP_docbuilder HTML plugin release 18.2.2">
<meta name="keywords" content="AI and Machine Learning,Database,Azure,HA/DR,Serverless,Multicloud">
<link rel="schema.dcterms" href="http://purl.org/dc/terms/">
<meta name="dcterms.created" content="2024-10-07T17:04:33-07:00">
<meta name="dcterms.title" content="Deploy Autonomous Database on Oracle Database@Azure">
<meta name="dcterms.dateCopyrighted" content="2024">
<meta name="dcterms.category" content="solutions">
<meta name="dcterms.identifier" content="G13089-02">
<meta name="dcterms.product" content="en/solutions;en/cloud/saas/analytics;en/cloud/paas/autonomous-data-warehouse-cloud;en/cloud/paas/autonomous-database/serverless;en/cloud/paas/atp-cloud;en/cloud/oracle-cloud-infrastructure/oracle-database-at-azure;en/cloud/paas/autonomous-json-database">
<meta name="dcterms.release" content="Test Release">
<script>
document.write('<style type="text/css">');
document.write('body > .noscript, body > .noscript ~ * { visibility: hidden; }');
document.write('</style>');
</script>
<script data-main="/sp_common/book-template/ohc-book-template/js/book-config" src="/sp_common/book-template/requirejs/require.js"></script>
<script>
if (window.require === undefined) {
document.write('<script data-main="sp_common/book-template/ohc-book-template/js/book-config" src="sp_common/book-template/requirejs/require.js"><\/script>');
document.write('<link href="sp_common/book-template/ohc-book-template/css/book.css" rel="stylesheet"/>');
}
</script>
<script type="application/json" id="ssot-metadata">{"primary":{"category":{"short_name":"solutions","element_name":"Solutions","display_in_url":true},"suite":{"short_name":"reference-architectures","element_name":"Reference Architectures","display_in_url":false},"product_group":{"short_name":"oci","element_name":"OCI Architectures","display_in_url":false}}}</script>
<meta name="dcterms.isVersionOf" content="DEPLOY-AUTONOMOUS-DATABASE-DB-AT-AZURE">
<script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","name":"Deploy Oracle Autonomous Database on Oracle Database@Azure","description":"Provision Oracle Autonomous Database as a highly resilient data store for a micro-services application deployed within a multi-availability zone Microsoft Azure region.","datePublished":"2024-10-07 22:50:46 GMT","dateModified":"2024-10-08 00:07:25 GMT"} </script>
<link rel="alternate" hreflang="en" href="https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/index.html">
<link rel="alternate" hreflang="de" href="https://docs.oracle.com/de/solutions/deploy-autonomous-database-db-at-azure/index.html">
<link rel="alternate" hreflang="es" href="https://docs.oracle.com/es/solutions/deploy-autonomous-database-db-at-azure/index.html">
<link rel="alternate" hreflang="fr-CA" href="https://docs.oracle.com/fr-ca/solutions/deploy-autonomous-database-db-at-azure/index.html">
<link rel="alternate" hreflang="zh-CN" href="https://docs.oracle.com/zh-cn/solutions/deploy-autonomous-database-db-at-azure/index.html">
<link rel="alternate" hreflang="ja" href="https://docs.oracle.com/ja/solutions/deploy-autonomous-database-db-at-azure/index.html">
<link rel="alternate" hreflang="fr" href="https://docs.oracle.com/fr/solutions/deploy-autonomous-database-db-at-azure/index.html">
<link rel="alternate" hreflang="it" href="https://docs.oracle.com/it/solutions/deploy-autonomous-database-db-at-azure/index.html">
<link rel="alternate" hreflang="pt-BR" href="https://docs.oracle.com/pt-br/solutions/deploy-autonomous-database-db-at-azure/index.html">
<link rel="alternate" hreflang="ko" href="https://docs.oracle.com/ko/solutions/deploy-autonomous-database-db-at-azure/index.html">
<link rel="alternate" hreflang="zh-TW" href="https://docs.oracle.com/zh-tw/solutions/deploy-autonomous-database-db-at-azure/index.html">
<link rel="alternate" hreflang="x-default" href="https://docs.oracle.com/en/solutions/deploy-autonomous-database-db-at-azure/index.html">
<script>window.ohcglobal || document.write('<script src="/en/dcommon/js/global.js">\x3C/script>')</script></head>
<body>
<div class="noscript alert alert-danger text-center" role="alert">
<a href="index.html" class="pull-left"><span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>Previous</a>
<a href="#" class="pull-right">Next<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span></a>
<span class="fa fa-exclamation-triangle" aria-hidden="true"></span> JavaScript must be enabled to correctly display this content
</div>
<article>
<header>
<ol class="breadcrumb" vocab="http://schema.org/" typeof="BreadcrumbList">
<li property="itemListElement" typeof="ListItem"><a href="index.html" property="item" typeof="WebPage"><span property="name">Deploy Autonomous Database on Oracle Database@Azure</span></a></li>
<li class="active" property="itemListElement" typeof="ListItem">Deploy Oracle Autonomous Database on Oracle Database@Azure</li>
</ol>
<a id="GUID-23EC4595-5EC2-4599-B574-1998B3409D9E" name="GUID-23EC4595-5EC2-4599-B574-1998B3409D9E"></a>
<h2 id="DADZD-GUID-23EC4595-5EC2-4599-B574-1998B3409D9E" class="sect2">Deploy <span>Oracle Autonomous Database</span> on <span>Oracle Database@Azure</span></h2>
</header>
<div class="ind">
<div>
<p>Provision <span>Oracle Autonomous Database</span> as a highly resilient data store for a micro-services application deployed within a
multi-availability zone Microsoft Azure region.
</p>
<p>Oracle databases provide enterprise-level business continuity by layering
core building blocks like Exadata, <span>Oracle Real Application Clusters (Oracle
RAC)</span>, <span>Data Guard</span>, and Oracle Application Continuity together. To date, these core building blocks
could be configured manually in on-premises environments, semi-manually on <span>Oracle Cloud
Infrastructure</span> (OCI) using the <span>Oracle Exadata Database
Service</span>, or be fully automated using the <span>Oracle Autonomous Database</span> service. The fully managed <span>Oracle Autonomous Database</span> service is now available in an increasing number of <span>Microsoft Azure</span> regions across the globe.
</p>
<p>Many <span>Azure</span> cloud regions provide multiple available zones (AZs) to help maximize business
continuity. These availability zones are unique physical locations that help protect
applications and data from data center failures.
</p>
</div>
<div class="sect2"><a id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B" name="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B"></a><h3 id="DADZD-GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B" class="sect3">Architecture</h3>
<div>
<p>This reference architecture describes some best practices for deploying <span>Oracle Autonomous Database</span> in a <span>Microsoft Azure</span> multi-availability zone (AZ) region.
</p>
<p>Business continuity practices and high availability topologies should always be
considered when designing mission-critical database applications. The architecture below
shows a containerized application using <span>Azure Kubernetes Service</span> (AKS). The container images are stored in the <span>Azure</span> container registry. Users access the application externally through a public load
balancer. Since <span>Oracle Autonomous Database</span> is a PaaS service, there is no administrative control over into which AZ the
Autonomous Database will be provisioned. However, in the unlikely event of an <span>Azure</span> AZ failure, Oracle ensures that a local Autonomous Data Guard standby is always
deployed in a different AZ (data center) from its primary.
</p>
<div class="infoboxnote" id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__GUID-5DE78187-7A03-49B7-9852-39A506FFC5C2">
<p class="notep1">Note:</p>If application-to-database-availability-zone affinity is required, Autonomous Database
provides a user queryable database view to determine its AZ placement. Once the AZ of
the Autonomous Database is determined, networking can be aligned as appropriate.
</div>
<p>In the diagram below, the application virtual network (VNet) connects to the database
VNet in availability zone 1 (AZ1) using VNet peering. The AKS-hosted application
accesses the database via a private endpoint that connects to the <span>Oracle Database@Azure</span> delegated subnet. If multi-AZ business continuity is required, Autonomous Data Guard
can optionally be enabled, in which case, it is availability zone 2 (AZ2). Autonomous
Data Guard keeps the primary database and local standby in sync and automatically fails
over in the case of a primary AZ outage. Oracle-managed automatic backups are always
enabled by default.
</p>
<p>The following diagram illustrates this reference architecture.</p><br><div class="imageleft"><img class="imageleft" id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__IMAGE_ZJD_5XF_LCC" height="576" width="1168" src="img/autonomous-database-db-azure-diagram.png" alt="Description of autonomous-database-db-azure-diagram.png follows" title="Description of autonomous-database-db-azure-diagram.png follows" longdesc="img_text/autonomous-database-db-azure-diagram.html"><br><a href="img_text/autonomous-database-db-azure-diagram.html">Description of the illustration autonomous-database-db-azure-diagram.png</a></div><br><p><a href="img/autonomous-database-db-azure-diagram-oracle.zip" class="de-download">autonomous-database-db-azure-diagram-oracle.zip</a></p>
<p>The architecture has the following components:</p>
<ul style="list-style-type: disc;" id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__UL_QDH_4LM_CKB">
<li><span class="bold">Region</span><p>An <span>Oracle Cloud
Infrastructure</span> region is a localized geographic area that
contains one or more data centers, called
availability domains. Regions are independent of
other regions, and vast distances can separate
them (across countries or even
continents).
</p>
</li>
<li><span class="bold">Virtual cloud network (VCN) and subnets</span><p>A VCN is a customizable,
software-defined network that you set up in an <span>Oracle Cloud
Infrastructure</span> region. Like traditional data center networks,
VCNs give you control over your network
environment. A VCN can have multiple
non-overlapping CIDR blocks that you can change
after you create the VCN. You can segment a VCN
into subnets, which can be scoped to a region or
to an availability domain. Each subnet consists of
a contiguous range of addresses that don't overlap
with the other subnets in the VCN. You can change
the size of a subnet after creation. A subnet can
be public or private.
</p>
</li>
<li><span class="bold">Autonomous
Database</span><p id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__d5e89">
<span>Oracle Autonomous Database</span> is a fully managed, preconfigured database
environments that you can use for transaction
processing and data warehousing workloads. You do
not need to configure or manage any hardware, or
install any software. <span>Oracle Cloud
Infrastructure</span> handles creating the database, as well as
backing up, patching, upgrading, and tuning the
database.
</p>
</li>
<li><span class="bold">Object storage</span><p id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__d5e725">
<span>Oracle Cloud
Infrastructure</span> Object Storage provides quick access to large
amounts of structured and unstructured data of any
content type, including database backups, analytic
data, and rich content such as images and videos.
You can safely and securely store and then
retrieve data directly from the internet or from
within the cloud platform. You can scale storage
without experiencing any degradation in
performance or service reliability. Use standard
storage for "hot" storage that you need to access
quickly, immediately, and frequently. Use archive
storage for "cold" storage that you retain for
long periods of time and seldom or rarely
access.
</p>
</li>
<li><span class="bold"><span>Azure</span> Container Registry</span><p><span>Azure</span> Container Registry (ACR) is a managed service for storing and managing
container images and related artifacts.
</p>
</li>
<li><span class="bold">Azure availability zone</span><p>An availability zone is a physically separate data
center within a region designed to be available and fault-tolerant. Availability
zones are close enough to have low-latency connections to other availability
zones.</p>
</li>
<li><span class="bold"><span>Azure Kubernetes Service</span></span><p><span>Azure Kubernetes Service</span> (AKS) is a managed Kubernetes service offered by <span>Microsoft Azure</span>.
</p>
</li>
<li><span class="bold"><span>Azure</span> Load Balancer</span><p><span>Azure</span> Load Balancer provides automated traffic distribution from a single entry
point to multiple servers in the back end.
</p>
</li>
<li><span class="bold"><span>Microsoft Azure</span> Virtual Network</span><p><span>Microsoft Azure</span> Virtual Network (VNet) is the fundamental building block for your private
network in Azure. VNet enables many <span>Azure</span> resources, such as Azure virtual machines (VMs), to securely communicate with
each other, the internet, and on-premises networks.
</p>
</li>
<li><span class="bold"><span>Oracle Database@Azure</span></span><p id="GUID-1548A5AA-D6B9-4DAD-AE43-7162769AD34B__d5e822"><span>Oracle Database@Azure</span> is an Oracle Cloud Database service that runs
Oracle Database workloads in your Azure
environment. All hardware for <span>Oracle Database@Azure</span> is colocated in Azure's data centers and uses
Azure networking. The service benefits from the
simplicity, security, and low latency of a single
operating environment within Azure. Federated
identity and access management for <span>Oracle Database@Azure</span> is provided by Microsoft Entra ID. <span>Oracle Database</span> metrics and audit logs are natively available
in Azure. The service requires that users have an
Azure tenancy and an OCI tenancy.
</p>
</li>
</ul>
</div>
</div>
<div class="sect2"><a id="GUID-8B318CF8-81D2-44E5-8D8F-AE74F4E0A422" name="GUID-8B318CF8-81D2-44E5-8D8F-AE74F4E0A422"></a><h3 id="DADZD-GUID-8B318CF8-81D2-44E5-8D8F-AE74F4E0A422" class="sect3">Recommendations</h3>
<div>
<div><span>Use the following recommendations as a starting point.
</span>Your requirements might differ from the architecture described here.
</div>
<ul style="list-style-type: disc;" id="GUID-8B318CF8-81D2-44E5-8D8F-AE74F4E0A422__UL_FWK_JBG_RKB">
<li>Primary and standby database subnets should be in distinct VNets
configured with non-overlapping IP classless inter-domain routing (CIDR)
ranges.</li>
<li>The application tier (AKS, Docker, VMs, etc.) should span at least two
AZs, with the application VNet peered to both the primary and standby VNet of the
<span>Autonomous Database</span>.
</li>
<li>Optionally, client applications can be configured to use Oracle
transparent application continuity (TAP) to maximize availability during planned and
unplanned outages.</li>
</ul>
</div>
</div>
<div class="sect2"><a id="GUID-A13AEEB5-B270-4D38-9142-F89DE81A04CF" name="GUID-A13AEEB5-B270-4D38-9142-F89DE81A04CF"></a><h3 id="DADZD-GUID-A13AEEB5-B270-4D38-9142-F89DE81A04CF" class="sect3">Explore More</h3>
<div>
<p>For more details about the components and considerations shared in this
document, please refer to the following links.</p>
<p>Review these additional resources:</p>
<ul style="list-style-type: disc;">
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&amp;id=adb-serverless" target="_blank">Oracle Autonomous
Database Serverless</a></li>
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&amp;id=oracle-database-at-azure" target="_blank">Oracle
Database@Azure</a></li>
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&amp;id=BODAT" target="_blank"><span><cite>Learn about selecting
network topologies for Oracle Database@Azure</cite></span></a></li>
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&amp;id=adb-config-app-continuity" target="_blank">Configure Application Continuity on Autonomous
Database</a> in <cite>Using Oracle Autonomous
Database Serverless</cite></li>
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&amp;id=oracle-db-at-azure-videos" target="_blank">Oracle
Database@Azure Videos</a></li>
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&amp;id=oci-doc" target="_blank"><span>Oracle Cloud
Infrastructure</span> Documentation</a></li>
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&amp;id=GVVGQ" target="_blank"><span><cite>Best practices framework
for Oracle Cloud Infrastructure</cite></span></a></li>
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&amp;id=oci-calc" target="_blank">Oracle Cloud Cost
Estimator</a></li>
<li><a href="/pls/topic/lookup?ctx=en/solutions/deploy-autonomous-database-db-at-azure&amp;id=cloud-adoption-framework" target="_blank">Cloud Adoption
Framework</a></li>
</ul>
</div>
</div>
<div class="sect2"><a id="GUID-EBDB0E20-86F8-4A31-BFD2-84D996FCE557" name="GUID-EBDB0E20-86F8-4A31-BFD2-84D996FCE557"></a><h3 id="DADZD-GUID-EBDB0E20-86F8-4A31-BFD2-84D996FCE557" class="sect3">Acknowledgments</h3>
<div>
<ul style="list-style-type: disc;">
<li><span class="bold">Authors</span>: <span translate="no">Domenick Ficarella, Can Tuzla, Martin
Gubar</span></li>
<li><span class="bold">Contributors</span>: <span translate="no">Wei Han, John Sulyok</span></li>
</ul>
</div>
</div>
</div>
</article>
<div id="disclaimers" class="legal">
<div><a href="#copyright-information" role="button" data-toggle="collapse" aria-expanded="false" class="collapsed" aria-controls="copyright-information" id="copyright-information-btn">Title and Copyright Information</a></div>
<div class="collapse" id="copyright-information" aria-expanded="false">
<p class="legal">Deploy Autonomous Database on Oracle Database@Azure</p>
<p class="legal">G13089-02</p>
<p class="date legal">October 2024</p>
<div class="legal" style="display:inline"><a href="/pls/topic/lookup?ctx=en/legal&id=cpyr" target="_blank">Copyright ©</a>2024, </div><div class="legal" style="display:inline">Oracle and/or its affiliates.</div>
</div>
</div>
</body>
</html>

Binary file not shown.

View File

@@ -0,0 +1,158 @@
# Deploy a multi-agent AI fraud detection system on OCI
- Source: https://docs.oracle.com/en/solutions/ai-fraud-detection/index.html
- Date: 2025-06
- Type: reference-architecture
- Services: genai, streaming, adb-s
- Tags: ai-ml, autonomous
## Summary (catalog)
Multi-agent AI system for real-time fraud detection. Streaming ingestion of transaction data, ML models for anomaly detection, GenAI agents for investigation and decision support.
## Architecture (fetched from source)
Architecture
This architecture shows a multi-agent AI fraud detection system on Oracle Cloud
Infrastructure (OCI).
This design uses multiple AI agents to provide key insights, gather evidence,
and produce a comprehensive fraud analysis.
At the core is a model context protocol (MCP) server that orchestrates agent
interactions. Specialized agents handle distinct tasks. For example, a data retrieval
agent queries enterprise data sources and a fraud analyzer agent evaluates and explains
anomalies. The flow begins when an event, such as a suspicious transaction alert or an
investigators query, triggers the orchestrator. The orchestrator then delegates
subtasks to the agents and consolidates their results by using a fan-in and fan-out
design pattern. Each agent uses OCI-native services to perform tasks (database queries,
LLM inference, and so on), and the orchestrator translates between agent and Oracle
system contexts, ensuring that each agent gets the information it needs in the format it
expects.
The following diagram shows process flow overview:
Description of the illustration ai-fraud-detection-flow.png
ai-fraud-detection-flow-oracle.zip
- MCP orchestrator server
The model context protocol
(MCP) server is the coordinating hub that orchestrates agent actions and
maintains the overall context or state of an investigation. It uses MCP to
standardize how agents invoke tools and exchange data. Acting as a “central
brain,” it receives the initial request (fraud alert or analysis query) and
calls the appropriate agents in sequence. It also translates high-level agent
intents into low-level operations on Oracle systems, such as converting an
agents request for customer information into an SQL query, and converting SQL
results into a natural language response. This approach decouples agents from
direct system calls by using the orchestrator as a bridge between the agent
logic and enterprise data, enabling flexible updates and centralized control. In
the first phase of this architecture, the server is a lightweight server derived
from Googles Gen AI Toolbox running on Oracle Cloud Infrastructure
Compute or OCI Kubernetes Engine .
- Data retrieval agent
The data retrieval agent is
a specialized agent responsible for fetching relevant data from enterprise
sources. For example, upon receiving a customer ID or transaction ID from the
orchestrator, it queries the Oracle Autonomous Database or other OCI data stores for information such as recent transactions, account
profiles, claims history, and so on. You can implement this agent by using OCI Functions (serverless) to call tools hosted on an MCP server for Autonomous Database . The agent contains all data-access logic. The orchestrator server may use a
predefined tool for this agent, such as a YAML-configured
LookupTransaction or GetCustomerProfile
tool that knows how to run the proper SQL on the Autonomous Database . Similar to how Google Gen AI Toolbox uses YAML-defined tools to let agents
perform database operations, this design defines database queries as
configuration-driven tools. In the first phase, the data agent simply executes
these queries without AI decision-making involvement and returns the results to
the orchestrator.
- Fraud analyzer agent
The fraud analyzer agent is
the cornerstone agent that assesses the data for signs of fraud and generates
insights. This agent ingests the context, such as the transaction details,
customer info, or historical patterns provided by the orchestrator and applies
AI/ML logic to determine if the scenario is likely fraudulent. In phase 1, this
could be a rule-based engine or an OCI Anomaly Detection model to provide a
quick, deterministic response. For example, it might flag anomalies such as a
transaction far outside normal range or multiple claims in a short time span.
The agent then produces a fraud score or classification and possibly an
explanation.
In phase 2, the fraud analyzer agent is
augmented with LLM capabilities by using OCI Generative AI or Oracle pretrained models to generate human-readable investigative
narratives. In this way, generative AI automatically creates a concise report of
the findings, summarizing why a transaction was flagged and referencing the data
directly such as how a customers recent transactions show unusual high-value
purchases overseas, which deviates from their normal pattern by 5σ (5 sigma),
indicating high fraud likelihood. Oracles own Financial Services division has
highlighted the value of such generative narratives in accelerating
investigations. In phase 2, the fraud analyzer agent can use an OCI LLM to both
analyze the data and explain the results. For example, it might use a prompt
that incorporates the data and asks the model to analyze the fraud risk, or it
could perform tool-assisted reasoning by first calling a calculation tool, and
then having the LLM elaborate on the results.
- Additional agents (as needed)
The architecture
supports the ability to plug in other agents to enrich the analysis. For
example, an external check agent could call third-party services, such as
sanctions lists or credit bureaus, to gather more evidence on the entity
involved. Another could be a notification and case management agent that, after
fraud is confirmed, logs the case in a system or triggers an alert to a human
investigator. The orchestrators ability to manage multiple agents and
coordinate complex workflows allows new agents to be added without disturbing
existing ones. This modularity makes the system extensible for demo showcases
that can start with two agents and later attach more for other demo scenarios
such as compliance checks, customer messaging, and so on.
Title and Copyright Information
Deploy a multi-agent AI fraud detection system on OCI
G34124-01
June 2025
Copyright © 2025,
Oracle and/or its affiliates.

View File

@@ -0,0 +1,198 @@
# Auto-extracted absolute_layout template from
# kb/diagram/assets/archcenter-refs/ai-fraud-detection/ai-fraud-detection-flow-oracle/ai-fraud-detection-flow.drawio
# Source: Oracle Architecture Center reference (canonical geometry).
# Use this as the starting scaffold for a new spec — copy, rename ids,
# and replace `type: TODO_identify` on services with the right OCI
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
# edge waypoints are Oracle's canonical layout; preserve unless the
# customer's topology requires a change.
absolute_layout:
canvas:
width: 850
height: 1100
containers:
- id: c5
type: region
label: ''
x: 330
y: 381
w: 252
h: 125
- id: c1
type: region
label: ''
x: 330
y: 0
w: 252
h: 49
- id: c2
type: region
label: ''
x: 330
y: 136
w: 252
h: 49
- id: c3
type: region
label: ''
x: 0
y: 247
w: 252
h: 49
- id: c4
type: region
label: ''
x: 0
y: 382
w: 252
h: 49
- id: c6
type: region
label: ''
x: 660
y: 247
w: 252
h: 49
services:
- id: s9
type: TODO_identify
label: ''
x: 584
y: 159
w: 211
h: 87
- id: s10
type: TODO_identify
label: ''
x: 219
y: 169
w: 112
h: 75
- id: s11
type: TODO_identify
label: ''
x: 254
y: 270
w: 117
h: 111
- id: s12
type: TODO_identify
label: ''
x: 542
y: 270
w: 117
h: 111
- id: s23
type: TODO_identify
label: ''
x: 425
y: 416
w: 63
h: 63
- id: s22
type: TODO_identify
label: ''
x: 426
y: 417
w: 61
h: 61
- id: s24
type: TODO_identify
label: ''
x: 426
y: 417
w: 60
h: 60
- id: s25
type: TODO_identify
label: ''
x: 452
y: 423
w: 30
h: 24
- id: s26
type: TODO_identify
label: ''
x: 431
y: 424
w: 51
h: 30
- id: s7
type: TODO_identify
label: ''
x: 119
y: 475
w: 212
h: 67
- id: s8
type: TODO_identify
label: ''
x: 584
y: 475
w: 212
h: 61
- id: s17
type: TODO_identify
label: ''
x: 429
y: 539
w: 58
h: 63
- id: s20
type: TODO_identify
label: ''
x: 768
y: 539
w: 40
h: 63
- id: s16
type: TODO_identify
label: ''
x: 430
y: 540
w: 56
h: 61
- id: s19
type: TODO_identify
label: ''
x: 769
y: 540
w: 38
h: 62
- id: s18
type: TODO_identify
label: ''
x: 430
y: 541
w: 55
h: 59
- id: s21
type: TODO_identify
label: ''
x: 769
y: 541
w: 37
h: 60
- id: s13
type: TODO_identify
label: ''
x: 95
y: 548
w: 61
h: 53
- id: s14
type: TODO_identify
label: ''
x: 95
y: 548
w: 63
h: 55
- id: s15
type: TODO_identify
label: ''
x: 96
y: 549
w: 60
h: 52
labels: []
connections: []

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -0,0 +1,9 @@
The diagram you downloaded is available in these formats:
- DRAWIO
- SVG
You can customize them for your organization using the associated tools:
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.
Note that all diagram components are ungrouped and in a single layer.

View File

@@ -0,0 +1,337 @@
# Deploy a Data Lake leveraging Power BI on Oracle Database@Azure
- Source: https://docs.oracle.com/en/solutions/analytics-pipeline-db-at-azure/index.html
- Date: 2025-02
- Type: reference-architecture
- Services: adb-s, azure, object-storage
- Tags: data-platform, multicloud, azure, autonomous
## Summary (catalog)
Analytics pipeline combining ADB-S on Database@Azure with Power BI. Data ingestion to Object Storage, transformation in ADB-S, visualization via Power BI DirectQuery or Import mode.
## Architecture (fetched from source)
Deploy a Data Lake Leveraging Power BI on Oracle Database@Azure
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Previous
Next
JavaScript must be enabled to correctly display this content
- Deploy a Data Lake leveraging Power BI on Oracle Database@Azure
- Deploy a Data Lake Leveraging
Power BI on Oracle Database@Azure
Deploy a Data Lake Leveraging
Power BI on Oracle Database@Azure
Many businesses leverage Microsoft Power BI with data lakes on Microsoft
Azure to derive actionable business insights.
You can expand these capabilities by using a medallion architecture
that includes Azure Data Factory, Azure Data Lake Storage, Azure Compute,
Oracle Database@Azure (either a fully managed Oracle Autonomous Database or a co-managed Oracle Exadata Database
Service instance), and Power BI to address several key data challenges faced by
customers:
- Data Silos and Integration : Azure Data Factory ingests data from
diverse sources into a unified data lake, breaking down silos and
providing a single source of truth.
- Data Quality and Consistency : Autonomous Data
Warehouse in the Curation Layer ensures clean, consistent, and high-quality
data through deduplication and quality rules, reducing errors and
enhancing decision-making.
- Scalability and Performance : Azure's scalable
compute resources and Autonomous Data
Warehouse 's serverless architecture or Oracle Exadata Database
Service handle large-scale data processing efficiently, while maintaining
optimal performance as data volumes and user adoption (concurrency)
grow.
- Complex Transformations : Azure Compute and Autonomous Data
Warehouse or Oracle Exadata Database
Service perform complex transformations and analytics efficiently,
reducing processing time and focusing on insights.
- Cost Management : The serverless and pay-as-you-go
models for Azure services and Autonomous Data
Warehouse or Oracle Exadata Database
Service optimize costs, ensuring that you only pay for what you use.
- Data Governance and Compliance : Structured data management layers
facilitate better governance, traceability, and regulatory
compliance.
- Built-in Analytics : Users are able to apply analytics
directly to their data by using built-in features such as artificial
intelligence (AI), machine learning (ML), graph, spatial, and text
analytics.
Typical use cases include:
- Retail Analytics : Integrates data from online sales, in-store
transactions, and customer feedback, optimizing inventory and
marketing strategies.
- Financial Services : Analyzes transaction data for fraud detection
and regulatory compliance, mitigating risks.
- Healthcare Analytics : Integrates patient data from EHRs, lab
results, and wearable devices, improving patient care and health
management.
This architecture enables enterprise customers across industries to
leverage data effectively to empower their business users to make informed
decisions to drive better business outcomes.
Logical Architecture
The analytical data lake can ingest data from multiple sources and can
provide business insights by using Power BI running on Microsoft Azure.
- Data Sources: The analytical data lake can ingest data from multiple
sources. Azure Data Factory can ingest data from Microsoft SQL Server and Azure Blob
Storage. Oracle Database@Azure can ingest data from Oracle Cloud
ERP , Oracle Cloud
Infrastructure Object Storage , Azure Cosmos Database, Azure SQL Database, various types of table storage data
(Azure, PostgresSQL, Azure MariaDB), and other types of on-premises relational
databases.
- Data Tier: Oracle Database@Azure ingests source data from Azure Data Lake Storage in conjunction with Azure Data
Factory.
- Consumption Tier: Oracle Database@Azure provides insights to Microsoft Power BI running on Microsoft Azure.
The following diagram illustrates the functional architecture:
Description of the illustration data-lake-db-azure-process.png
data-lake-db-azure-process-oracle.zip
Medallion Architecture
This section demonstrates how you can deploy Oracle Database@Azure as the data warehouse within the Azure medallion architecture.
The medallion architecture is a data management framework that
structures data handling in a data lakehouse into distinct stages (bronze,
silver, and gold), representing the different stages of data processing:
- Bronze stage: Data from various sources is ingested,
validated, and curated.
- Silver stage: The data is stored and processed for analytics
and reporting.
- Gold stage: Refined data is delivered for analysis and
reporting.
The following diagram illustrates the architecture:
Description of the illustration data-lake-db-azure-medallion.png
data-lake-db-azure-medallion-oracle.zip
The medallion stages are further divided into the following
deployment areas:
- Ingestion Framework: Ingests data from various data sources
using Azure Data Factory. Raw data is stored in Azure Data Lake
Storage Gen 2 and Delta Lake. This framework ensures data
consistency and accuracy across source and sink systems. This
framework constitutes a robust set of scripts to ensure quality by
using audit, balance and control mechanisms across platforms.
- Validation: Raw data is ingested into Oracle Autonomous Data Warehouse Serverless or Oracle Exadata Database
Service for deduplication and data quality check. This workflow performs
basic cleansing masking of PII and PHI data along with validation of
raw files through a rules-driven framework to perform schema checks.
The validation framework can be implemented using Azure Data
Factory.
- Rejection Workflow: Any record that is rejected during the
ingestion stage due to validation errors or other processing errors
is staged on a separate Azure Data Lake Storage path. Automated
email notifications using Logic App are sent to the support team
based on defined software license agreements (SLAs). Standardized
data remains in Oracle Autonomous Data Warehouse Serverless or Oracle Exadata Database
Service .
- Orchestration: A scheduling system manages data processing
jobs, scheduling, and job dependencies. Azure Data Factory can be
used for the orchestration of ETL jobs. The Orchestration stage
includes Oracle Autonomous Data Warehouse Serverless or Oracle Exadata Database
Service , Delta Lake, and Azure Data Lake Storage Gen 2.
- Reporting/Analytics: The reporting stage includes Power BI
and data services such as external feeds and data monetization.
The architecture has the following infrastructure components:
- Region
An Azure region is a
geographical area in which one or more physical Azure data
centers, called availability zones, reside. Regions are
independent of other regions, and vast distances can
separate them (across countries or even continents).
Azure and OCI regions are localized geographic
areas. For Oracle Database@Azure , an Azure region is connected to an OCI region, with
availability zones (AZs) in Azure connected to availability
domains (ADs) in OCI. Azure and OCI region pairs are
selected to minimize distance and latency.
- Availability zone
An availability zone
is a physically separate data center within a region
designed to be available and fault-tolerant. Availability
zones are close enough to have low-latency connections to
other availability zones.
- Virtual network (VNet) and subnet
A
VNet is a virtual network that you define in Azure. A VNet
can have multiple non-overlapping CIDR blocks subnets that
you can add after your create the VNet. You can segment a
VNet into subnets, which can be scoped to a region or to an
availability zones. Each subnet consists of a contiguous
range of addresses that

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 667 KiB

View File

@@ -0,0 +1,575 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/25.0.2 Chrome/128.0.6613.186 Electron/32.2.5 Safari/537.36" version="25.0.2">
<diagram name="data-lake-db-at-azure-process" id="data-lake-db-at-azure-process">
<mxGraphModel dx="1194" dy="806" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<UserObject label="" tags="Background" id="2">
<mxCell style="vsdxID=2;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry width="753" height="1176" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="3">
<mxCell style="vsdxID=4;fillColor=#f5f4f2;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry width="227" height="1175" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="4">
<mxCell style="vsdxID=5;fillColor=none;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=#9e9892;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry width="227" height="1175" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Data Sources&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="5">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=6;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="61" y="7" width="203" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="6">
<mxCell style="vsdxID=8;fillColor=#f5f4f2;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="279" width="227" height="1175" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="7">
<mxCell style="vsdxID=9;fillColor=none;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=#9e9892;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="279" width="227" height="1175" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Data Tier&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="8">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=10;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="356" y="7" width="152" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="9">
<mxCell style="vsdxID=12;fillColor=#f5f4f2;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="525" width="227" height="1175" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="10">
<mxCell style="vsdxID=13;fillColor=none;gradientColor=none;shape=stencil(vVPRDoMgDPwaHjUIidNn5/6DTFQyJqay6f5+OMimMrPEJb6V9sr1Codo1tWs5YjgToO68F4Uukb0iAgRTc1BaBMhmiOalQp4BerWFPbcshE5Rld1H28YbB8eOwh+2FOahnHyypwsmMHZVMGBozCmFg+uAYeU2IwHcYgIO4ohYIPoAlCaaaGaGb1kUPHAkAWlZNWs1PWct17ajSdFM9GSJiE9fCXfrAav7WcHOUvy93Rb1fj72e1pvG/x37usLGYHIT/8YoKP00ohpTXqtL50pklZV9P8CQ==);strokeColor=#9e9892;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="525" width="227" height="1175" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Consumption Tier&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="11">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=14;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="566" y="7" width="270" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="12">
<mxCell style="vsdxID=17;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZfdchoxDIWfZm81tuQf+TpN3iPTkMI0hQwhLX37artYxtrsktyB8fFnS9aRGejubfv4uhnQvZ2Oh5+bP7un03agbwPibr/dHHcn+TTQ/UB3z4fj5sfx8L5/mr6/Po4zx0+/Dr/HFc6TDhFCGlXo/k4jjJCmkYdJ8LLbXwmIoMROkCOQXxbMCYlXZmfw/fIpQFlZ3n1pMmDu5zsI4Xr+9/fjFB5fFbFcFJeRGAEv5znjNORbSC4jsZHONA0FGL/+n1RHYtUtwBMEAw8eEvXwApF7ODF47OGeAH1Ppwh5lS6aYvCiwWDOHiBlww8QveGL0OAJEq7iZX9k8KhDik/gisF7MKGXSTVlineQVukZHPd0jC2nlV6AsKfLjQkGLxVg6OPqq4cXFpvYSzqiwcshnO/xXi4I93hJh956srMW+KLhYPiiMbmX6xA+4AfDl2vON/jGYxLE3jJubzgD0WzDNl7cktr2G812GfJ8u341XVQgmNviHWQTruDA23DJkPUJpyVe+aU66AI+UFtYraOWhdITeFspEI1PhALJ+ISvLrAAjwTORN6p41d4TJAM3PVkcWI0YXemEc3skYBzT/a1FSk55bauHtuZmGeBm5iL++Q1eCbNXIXz7NjSGvUi14yjhkvpuWWmOZZfPbtoor1xuXqs4rk104qf9waZxdHguZb/El66TjT4ometfHZAJvaSVBt89jN3llm0WnBMM3+S3DtTcJyADB6BjD0xaxUoPtS4LeALQTDHx6vA1s6cW2W01kgm+4W1W+rDQEyJ1vjeuZ4eeNYZSwE0JSdVSKY5lFRRSk8IpUt+b84lNou4CCJ4WhZkWS99SZA1SfpirI+nDwWyHveCrJ1piRCoE8irl1cE4ov9w7Fm4JNP3huP6k8I5EN7wz/vXl6mvwDXv9s3vwxN/xfo/h8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="83" y="47" width="62" height="48" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="13">
<mxCell style="vsdxID=18;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lVnLchs5DPwaXVEkwec5j/9IbZy1ah07pThZ+e+DiQbksKmh5JtMg2qCABoN6sAffj5++fFwcObn6+nlv4f/j19fHw/88eDc8fnx4XR8lU8H/nTgD99eTg//nl5+PX+9/P3jy2K5fPr+8nv5hvNlX0jk4rLLmbfLCv/96/PF+J9fp4u1vfwzWrJqvi45Kvmycnarka9Lb+uSJ/arEa9GmVxZjXSJipuBJ0uAXSj00MmTA2jL5GyPnWIPbBNFO0WO5FMPbTMl8DslsgzghTKCJyqA7wzFuecNrF67Jc+AXygBvnM9eDaUAoA7vbId8MxjzF31QcFzIB8A3NeNFT9R8IAf9Ip28IsjGwC/VDDFL4IPkecw4JdIOfX43urd7uFLpgK+z+QBXhwrPXyQE0HSF7h7Kac1r1bsp+PzpjiLrzFeizM6ym5/gxQV2/dskHpZM69uSOrtdQSppn5DK7nrGyLF1G+Iei93Hinb6YZgyPQUJlGOE6cl4yo/3YXATNkPPkwCxwOrilds33OkJQ4TH1gqsD/SEulJHByF9D77BKlnyE5JSk6kFWBrBTDUiW/p42r4ElBkJIXWGpWAlilHEQM/elfzTrGtJed7cC7EpQe3XptBhZdwrkSyA28DBdfjc6QAFGnFL+BnoagEFC1WSBMsR5pSlDSwAP1JcjbC3UvLMhbw3cBRYlVDpPjS9dMUX/qT7/Fdap1v0wyBIyUfIlC0NLYAwkCWytR/x01M2ArGgC9FVru4qxdnIf5ycLx/e6tFsdQGwPvh+pe7husXKwPhl1hjh25W16kgIunf2pDm1oN3qcWtuge+SQLg1TIlCK1UG4ZWrHh6td60W1NwYS7o/tLELZS2WMHVLp0er9YqcezB85DZufGVoscBXao/A3quBaHoQbftgAfbNI3GgoDUgjSW2GMLEacee6vyNRb7+XFjJrg1QJipS74163XJVFY6t5aQQcuZ2oHrfY51KgU2pWkfGgHqEhlQ8dI4GFI5DiQpWWlzD15oGkvJ/QRFVGoLP2/aEWSxqeGtVbSpNa5WMUzRhdS5R5c9A3yqbPzWeqYBghQrg/hWr3GPofoUGeyH88YhUssePG8YGXVj1Rg1uxvnvULoHEf80uNLYhhkHSYTenxJS5w3UZ8O/bSMI5dpnarpCaiShVEAXXpXgYlLnIu35AzSjsVJeyt5WoNzKKbkQCim3I1mLv3oipZBLeVVkjT4pi3PrbsE5D1/Y9YvTeu3/mcAfjPUKG2YpjeVJFoO6UrQHNrV0AZHTemZQI9mABdWBZIwA3YoU73f0qvNB3EyE5neOOhcfX2YkJi/y96o3t+OQ7NpxVOBwbey6978ZGCk88r7dyKkTLMTDS5kraE7vz97mDr6Db7/9lJ01rpzSLbGTMxtq9u7vj8FHPOX409ERipVpWyG8EkARoRUG+HeY0gYQjxLohFhSaLJ1L48uIUDpOnsklIbU1sdTABKqBr6zg1xeDHy0/ecMjwKlDk75uaySjqpA3iJlGRJ0BgXndpTlBgNb3FFI7DXG4zpwRdGxae4MrwBL0MEoqdhGBDR4ebOx0FFSWMs0JYLN2GqfVnkFzSHYgkaozRvnoq4nNv7RXuIxVdgqbthyjY17+pDrMU3lmVgnt59FkZDDVkGUZJNj2032aEv4O31toJn4qkiklrHETQRvr/nqtO38z3IQbFCSbI8zEwlSYo6S27UoAdNkLhlhy6pV+1pS9o5+F4fefd+c5GSRy1KAaIe228jqhJ64Csj4Iz/51OdfGg/KH07Pj1dfo/a/h9/gJKly49X/OkP);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="82" y="46" width="63" height="50" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="14">
<mxCell style="vsdxID=19;fillColor=#2d5967;gradientColor=none;shape=stencil(lVLLDoMgEPwarhve4Nna/zARK6kVo/b194VyqJhI422ZndmdDYNYOXf1aBDF8zK5q3naZukQOyFK7dCZyS6+QqxCrGzdZC6Tuw9NfI91YIbq5h5hwivqFAeigorid0SIR77AOfJ7O6z4mgCWCZ9ykGxfwAsQqUAREJkNRIPeLlB6n08FCL69gBWZBRJI6ggDEft8fMRNOJekbjDOeMGHpmsGMr01M/vo1/7n++KXo9b2fYzhur/NnYdiZln1AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="99" y="85" width="30" height="10" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="15">
<mxCell style="vsdxID=20;fillColor=#2d5967;gradientColor=none;shape=stencil(lVLLDoMgEPwarhtegp5t+x8mYiW1atS+/r5QaipUaXrbx8zuDCxi+VgXvUIUj9PQndRNl1ON2A5RqttaDXoyEWJ7xPKqG9Rx6C5t6fK+sEgbnburnXB3PJ5BQiyL4oerEIxf+cHBG90u4HNzBlMOGduGpwwE9wiR2ZIDkb4UU4kMJ4BFqEZE1FivPkGS2f262xTScIFMt/E0gYSHDt6V9QUCiK8IQ8TA19vHxPz5sz/hJvgcUaWbxt3gsh8enSm5g2X7Jw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="99" y="78" width="30" height="10" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="16">
<mxCell style="vsdxID=21;fillColor=#2d5967;gradientColor=none;shape=stencil(lVLLDoMgEPwarmQBNXC29j9MxEJqxaD28feFkqai1dbbLszM7mwGsbxXZScRhX6w5ixvuhoUYgdEqW6VtHpwFWIFYnltrDxZM7ZV6LvSI311MVevcA88AuA5FB6hTwFT8Xo5Bnij2wk8EVikEQHWwUvlTeGURPj3Zl/hO9f+CY+PsnRJOObZuj4nGLL5BLLtNsY7BZJsGHDz911zn4E/CK74hKjWTRMyOP2fh849hcCy4gk=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="99" y="65" width="30" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="17">
<mxCell style="vsdxID=22;fillColor=#2d5967;gradientColor=none;shape=stencil(lVLLDoIwEPyaXjd90Adn1P8goUgjUgL4+ntbayJFqeG2TGd2Z8IgVoxN2WtE8TgN9qRvppoaxHaIUtM1ejCTmxDbI1bUdtDHwV66Knz3pWf66WyvfsM96GQGRHoVxY+AEIe8gEPgt6ab8RUBLCI+zUCwdUGWA48FkgBPXCAK1PKAVOt8yoFnywRv5PcBASR2hCERAG8x49OS2AzGCSv4a3uesKIYiDhqYvfWP/uf74ZPjWrTtqGF8/dl7RwUKsv2Tw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="99" y="78" width="30" height="10" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="18">
<mxCell style="vsdxID=23;fillColor=#2d5967;gradientColor=none;shape=stencil(lVLLDoMgEPwarhve4Nna/zARK6kVo/b194VyqJhI422ZndmdDYNYOXf1aBDF8zK5q3naZukQOyFK7dCZyS6+QqxCrGzdZC6Tuw9NfI91YIbq5h5hwivqFAeigorid0SIR77AOfJ7O6z4mgCWCZ9ykGxfwAsQqUAREJkNRIPeLlB6n08FCL69gBWZBRJI6ggDEft8fMRNOJekbjDOeMGHpmsGMr01M/vo1/7n++KXo9b2fYzhur/NnYdiZln1AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="99" y="85" width="30" height="10" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="19">
<mxCell style="vsdxID=24;fillColor=#2d5967;gradientColor=none;shape=stencil(nVjLchw3DPyavaJIgs+z4/yHK5ajrSiSS5YT6e+N8Q6BYVPLdfm2osDpAdFoNOfEH77df/p6dwru28vz0z93/58/v9yf+I9TCOfH+7vn84v8OvHHE3/48vR89/fz0/fHz5e/v37aIrdf/z79tz3h9bKvVipt2xXc22WFK/nwc+XPy4a/vj9fdvh9S6a879hXOBGny9Jr2IMi+f7cfYmZeN/4ynuUp1z2qH2JA4U1vKPsAd9TAfzSLKrjO6p+xC9VN3b80CjmFX4pVNuIH+TIPOCXKf+QiRvgZyoe8CNFXuJHapC/L+Qq4Ad9pY7vnb54x8+VMuSfKdUVfE6WWE+fQhnRs6cwgrsROMnx8AjsyC3zTtG2eN0CZU+efIK0iUfsWLUOSjoqS+yYKMcROytQx45MPo/YQkI48eitLvuS18SuoTviChVPBEfOwtsCmWcCdOntCP0m3NkpcAWdi+3p6PIYQDduK7pwC9p90wmo+vaoZfKiBwxH760DO76ctEYZfi0j/kZuqLzQIyz5HgBcuJKg1+QZBegeShdRBfeNGvSa6Na62SQHD5WXk0bSb3WG0gvNGLROomIY8aNsXGqt7AmgNbHN+MlU1PpQo1ijgPgpUFmnL1qYRnhRgQRS63mS+pR6YgYfJqlLuSvpFfw2KU52KgSqdZPi5DwVn6nVEVwEui6J73VadXCZaQnAHSVgXi0UoO0cBci8pb60gz+cHw+mYBfrtz433PXQYEPl98Jb1+d34yOVvAyfpgRxGE+tpndKBhUTTwFDonYXYgWT5yzZKv0NbCnSBXmEFhpOdCldgoysUQeHzuXYWb7oVUg9M7kA+IUS4jsqEfCritybTey29EW+Tb4smVdQrXQqTAetaCjU1mZvNrVTWeEHO2zVqqhsOGj1pJVOZ4fis9God3C+kb9wNaMvZp03ij8PSvGlDbRa6Net8sGX+mX+8pgI/JMp1OetDupAkL45PlOr2HM1eJ0x1+DzlP4Gjz6hTumHyaVEB9ipd8M1g+Qn6m02Go5e/JkDfybWNcGYEs4E8Cg3ranYw4oGLfdrhOEXizqMrhE+OZyS3t8waDJGUfMaukMZmwXark7e9B1TXm9onmhHhJOXLcA5kaEMU0ruIhF6TqYmtLyczno+5zbZI9E3xquQN+NjdWeo+zaPkfO1X2yuXcV4uhaIpQPKl8MM611gV5nDTbB7hoPi3IAvynGFr5rr4SbsgHZyV0B7JBOwgOKLLuYlfpUjA+JtnQj51zl/6URU3JrV1yl+uoHfHAF8clP1W7Cx3JuhKB87fDt8rjA+uqXgi4lCdyq1Bm8sQTjvK/dJZvCsfFSL5mlAH31ROVzkfi9+adPkrdWv/kq4jZD+NqVfCa4dXiMYVmJcM9Sug+rRiQfDUdmqGRqzSjsvr4EXQqfC5oGC1gSvFdFYorw9fD+zS/b4AW08rF/44iY/7Hvdl/PDw+Vz3/H/+H1Pli7fBvnjDw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="84" y="48" width="60" height="30" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Oracle Cloud ERP&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="20">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=25;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="48" y="100" width="270" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="21">
<mxCell style="vsdxID=28;fillColor=#FFFFFF;gradientColor=none;shape=stencil(vVPLDoMgEPwajhoE+/Bs7X+QikpKxSy02r8vFtJWrWliE2/L7iyzszCIprpiDUcEawPqzFuRmwrRAyJE1BUHYWyEaIZoWijgJahrnbtzw3pkH13Urb+hc3247yD47k5JEm6SZ+bowAxOtgoeHIW7rcODb8BhHLnMBOIREfYUXcA6oQNQhhmh6gG9ZFDywJIFhWTloKRbzptJ2o8nRf2hJdmHJP5KvlgNntvPCnLG5K/plqqZ7me1p5l8i//eZWYxKwj54RcbvJ1WCCmdUT/rY2falHM1zR4=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="288" y="272" width="210" height="896" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="22">
<mxCell style="vsdxID=29;fillColor=none;gradientColor=none;shape=stencil(vVPLDoMgEPwajhoE+/Bs7X+QikpKxSy02r8vFtJWrWliE2/L7iyzszCIprpiDUcEawPqzFuRmwrRAyJE1BUHYWyEaIZoWijgJahrnbtzw3pkH13Urb+hc3247yD47k5JEm6SZ+bowAxOtgoeHIW7rcODb8BhHLnMBOIREfYUXcA6oQNQhhmh6gG9ZFDywJIFhWTloKRbzptJ2o8nRf2hJdmHJP5KvlgNntvPCnLG5K/plqqZ7me1p5l8i//eZWYxKwj54RcbvJ1WCCmdUT/rY2falHM1zR4=);strokeColor=#9e9892;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="288" y="272" width="210" height="896" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Ingestion&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="23">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=30;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="356" y="279" width="152" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="24">
<mxCell style="vsdxID=33;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZTRboMwDEW/hlfLsROSPHfdf1QrXdFYqSjdur9fWIBiENF4S5xzc20rcca72/lwLTLCW9vUH8V3eWzPGb9kROXlXDRlG1YZ7zPeneqmeG/q++UY99dDR3arz/qru+ERdXkOxnUqwp8YUYh/+9eIV+VF4poF7h3kfip4uzfRQPUSBPS9pA95D2xi6EExZBis6ikaKdtDHCPaAuse4iekUvaawCzcB6vBHRfOg89gjdLW5cC83iaUHQ212VSOKBNEYC/zmxQhM050BlOOhkDZmau09Hro/mj5TIsXDK+UKvsyEYyPI8k7UFoKNGCi8cHAyfeZW/C0Lhhe+4g70O7/uGMgvSWdIEhcv6zX2dn3koJwjEoIuitMQsBgSAoMmERHHYGb8zZRcuBp20DZOH/SeFg8R92prKo4Kafn89EYQnGs8v4X);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="85" y="903" width="58" height="61" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="25">
<mxCell style="vsdxID=34;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lVfLctswDPwaXTEkwOc5Tf8j0zi1pq6dcZw2+ftSlUiRUARZN5nGavFcUB09vB2fXg8dqrfb9fLr8Ld/vh07+tYh9ufj4drf0lNHjx09vFyuh5/Xy/v5efz9+jRYDk+/L3+GN3yMOOOBcECh+hxPEMj/P/g+2v94v44APf7vECJNCM0g6gPHk4ig7WQ0HRmIZjKipdF0pA04qtlP/bnytkZM3mhQKAAsKN8CCLzfxeABzS5AACsBPBjdAiKouAcQdD6506UEiG4XgAAlwCKtwYEXChcshJYhvcIIhQsIPrQAAiWkNShwngOcEEMCYNv5KdFWAKRGYFnaBLTWLuPXJkuByRBdMFG3o2UJYjtZyQ3KRrQca5qtjERPGoJh9AVT6BEsMvo02b6lr4yoNIARxq4CrAgB97ZC6IXA4DKi4j75zVRxCWx93ZbMLYlVYhliHowSmWrDUm1ICjyrvmrD2RBV1fi2KBT3T7W+xVikoKS9igCLFXfyqxYtVivcqffLCM78jN4GiHxCYpHQTO8M+MjoQ26Xr8fZlFnMTarUunlSMEu7zLngeQjCWkiAEmYRC7QCwAAt9AuFRk+artuAU4YkRfXgIieQ9pSbbxLTGwKQtAkDl4nkopSjgZ+tTgsoXTBcvk5UmzAKSU0M3nGAF5KUm6Ayt8Ie5OauLIQ73UkAJ913bA6vApggMqi2aM6ClotmTAugPBlrNWB3hXTllFZ/WkCuDdrGvJLuBGyumxqShXCWtKw8tmyXz1arBdETNGFjc6SH+Vr/0p9O41dB/T//DEhH4ycEPf4D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="84" y="903" width="59" height="63" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="26">
<mxCell style="vsdxID=35;fillColor=#2d5967;gradientColor=none;shape=stencil(lZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXJi4m+m8Nm0By9k0kwYp5hj8oDdqowGsQEpyRgeKSQEqwLLzQffBL65lPzWZzGr0a56wc5/IHVIc7ArBvmbUknugV3jBH+iPqZ9oEvfiHVnLdz/z96GpxE9CdQI=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="139" y="955" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="27">
<mxCell style="vsdxID=36;fillColor=#2d5967;gradientColor=none;shape=stencil(lVjbchshDP0av2pAYrk8p+1/ZBqn8TSNM07SJn9ftruAEAHct/Va4ggdXfdANy8Pt8/HA6qX18v55/HP6e714UBfDoinp4fj5fQanw709UA39+fL8cfl/PZ0t/1+vl0l16df59/rCe+b3uIg4KqF6mN7Exaw/1582+S/v102Bb1rLEC0a2ihot5xF0KwYRfCLOR2pHfapdQuQlKkg00evG2wPdXg6MAtAtyA1zW4tuWshI/gRvAWwiLQFVhXoxtwVIN7D1RjM5n9jXfpoB378fTEaGIKuykerB7Zqg2gMNYRWFMbSxZ0baxbQLBkAhhTW7sK4cBaprEraFAzZk0Q5mrQ+iCZXZywV4EWBn/CbHSX8hNqsYa3CwQR1QYEuKVsD6NWQGM6usds5SmTeesTS8JT0d/oG2JTtiVjFwVeGhsgCHOL1CD/dY3PT8Z8a93AW0FUZCUnVIFXuu8tG28aKn81CtJeF4Bc4y8l/OUDLKY22DggYXAsNij8Ffmivr1cYbeXQI8VjJUK6AcKkULhEZcK9JUKmma1RKnagVHDCMKLDGaZxn0MmrKUHiZmix3zyc+wYyH3c2yEZYjNdVKdaiLdGVCiLKhplqkRLMaW5mtYVWPmmM+Q1OQ2k7n2vq2nnfB06+fgp7AzitvgyoHTgWXhN4K1g0rCFDoduDGzaKT4cGDE7EHYtP8cnb2xJwn0Ci7lwvkhkyLPWw58mMDGkky+Ro4Bbge9aT4c/q+8GD5VJWxEZWx6dBwITO0Iygma0xEBbe2JJROXXOGpnJRGGtBD9gOBZB9IzAfxtpJ7XaZTaoSurkNFheWIiDxmYAKP47SbXly7NOf0GijzaKpQbOjClpw0rZVXvdCPIuPu/cnEz49lE78Ev2ounF6+nQu5V7sjP+enO/NPeWcquo0nbCzEJjD7N5/FO3dpKkQlj7BlJzeinJEdzmWaixoyrgl1AeHhvMvTZIVco1nsRWYpyyGLZkGpiRP17GZ20kJWf8lZlB3b31+5iX1Op5dvo9no1CX7Ww6FtO31t5x4s31+vmrL0XHdG1qqqRCQIpJACU/FbqtF0YtRiiL6P5m/ilTPUy4nWsZnJ6etwTaZz63sbw3N/WdrQ+PfeY/gtJUekRafHFksAPpNooms2t4r8jA+lG9Q96fHx+0TFv9ffrOKr7bvXfT1Lw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="85" y="904" width="53" height="59" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="28">
<mxCell style="vsdxID=37;fillColor=#2d5967;gradientColor=none;shape=stencil(lZfRchoxDEW/hleNZdmy/Zwm/5FpSGGaQoaQNvn7artrG2mDmb4txvJBV/LVsqG7t93j63bj3dv5dPy5/bN/Ou829G3j/f6w2572Z3na0P2G7p6Pp+2P0/H98DR/fn2cdk5Pv46/pxM+5rhQoIQpyrvPecWBy/8WHub9399PcwAuEQ6QlwisITiHuA8/r5ADjsumugSYlk00r3gPcVn6XJYycBrBMUDUbFlp5/p6iCfN9tiyrPCwYstvLmUEl+81W6RwQbOdBk/yZg2Wn2LAsUAMIzD1Gi0rXABt0kmjU4JsBMcIHDQ7B0hD9lQkk3ZBYEMnhOA1vzB4NpojONT8kgFpxI/SSabizmk4O4im4HKs1V0ki9HAI3g/gqfcu6QnH1jzs2RqxM8R0Gv+pFrR/MQ3Oq4kQNR8zr2s3ghS6dJQZOh9D7XOjDy8ai2idju16n10mU3ixK0WLXFu9nBx1eIwb+r2UfswQIhGd7lcrPG4rruUgjRdLIOGFpfdCl8gGdVTL3GlS6LGZaTpnGk6qm1wBc6+NkXv+GZoFR4ZQtFwp8mXxk5fO/vL/vBfk+DW5Mjtel8bHZJ71qlNMSY3SrUzu5eJ3RWdH3kgo6xUJA29xKdWoMpPHryZXVIhlzWfU4O14eV6LrXYCHHYV9Kd3thJjJDNpcIEbOxMtA6GL2dlk7/IS0M7mypqzFTEbspez1/sPdr8Exh8V/faGJPR5zVepkuyo2Rdfix9V8/VuqkoEoY3S1TMpPmitS2/XC00V0t2FcPn9RgXdcfySxelcDN/6Ug2pirGkswoT91rmrFg9b5r06zYUfpF9eVCBtt90lcm/WmXmeQ3B8plTO3+BAYvE9cZ9TmCufsiEdpRijDMnWVGG1eVFyRj6TH3TV0OZ1tv7awr57tlrasAeeiv6M/7l5f5Df/ye/tKL0vz3wG6/ws=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="121" y="944" width="14" height="14" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="29">
<mxCell style="vsdxID=38;fillColor=#2d5967;gradientColor=none;shape=stencil(nZjJctswDIafxlcM9+WcJu+RaZzaUzfOOE7rvH3BSiIF0oKo3hwZiIAfH5bxTj98HJ7f9zslPq6X88/9n+PL9bDT33ZKHd8O+8vxip92+nGnH17Pl/2Py/nz7WX4+/05WaZPv86/03+4DX7BQ0hOSnwND7SBKP89eRrsT8c3am8UddAQ7bJDtCAccVAGNOPgLThLHDAivWzvHAhqLxVYzzhgRLF2UIy9Bu+JvVg21g6U7jbOWvdFUqTuTLVI3aclfmu21Kq8vpOGnF8nboIaZ3E7jFPZ3IZIChadqRbw+rQsYHfWKrUOU9yWhtScjD4tbrn7O1mWgqG57RPevGlDPpq2z1fSbQfJiqDtqFopWTsMV5hopu0adGIb02JTv/zH7F+xp7slCojUwVoI3AskSAqodRCYigUBqnKI4EjK3z8vQ0xyLCkaTNiNj5zMnXdTo1WAOFmprL0Yi33T2UpOPT4+cgYck6HHfCpi/JTC/QzxrVRDj6IzDPjMeG4TDYZhEgPQNCTvQTJQYoqmapOsw4LoTkFwVHQfqeJYBFkpPivVpDiW13iqeGHgbrRIkKfRJsqYJWvbsZE5vj/oTYm8z0HXcxVDUkxIRoChEGDSWnGK6wDe1opDLbr2ha4iuqhE1xZMpKJjxRXDlFZTF2ZEHEQmQ4XU0m25Qq3EstLOX+kLpaYAOjsPHUTlUPd2LbpCsirM51NjVFiJwnCBP0+gUWEZy3Yv8DtmnEsseTVuedFDfQ6k8cxI2NgX8jsDQvIllwEmWDkg556VfLYBCvrONpLn0Cf0XV5Ok+RYPl9JjuhrppNVM52R/GCYDBtsFX8B4FUY6BskvxLb1ktBcg4WJF0YRYel4eLKpScbhfNwCdN5lkWfVWsSHSuce0bXGNyfhk0nF9CW5m11hwT2zkkbYIt5U9OVeNISqxKoM24WqCyXxox8KnjasrIRvBrmaXtTuZty1/fBFpra80Pmk2fpwJG0OCsdUTbJvOc4h7yrsgMuNPZemS3BPFVwVWqq92yhfhXmPdW7bOoseFrn3Fmej4H52GR4irKeQjiYFTOFNh/mHQ74ofzG9Ho8nYafqObf179J4aPh9yz9+Bc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="114" y="936" width="28" height="28" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Microsoft&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="30">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=40;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="77" y="970" width="152" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;SQL Server&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="31">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=41;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="71" y="987" width="169" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;(on-premises)&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="32">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=42;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="60" y="1004" width="220" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="33">
<mxCell style="vsdxID=45;fillColor=#FFFFFF;gradientColor=none;shape=stencil(hZNNEoIwDIVP020nbYSha3/uwShIRwSnguLtBVtpU0V3Tfoe+ZIGhutrlV8KJuHamfZU3PWhqxhumJS6qQqju/HEcMtwXbamOJq2bw42vuSTcjqd29v0hcH6VoorNbkkPGxGALzinZXve2P1whlWPMucQVAHDNImXPhwoVI8RadAqnBhlvJEhVVr3QSQQAGRZ78IgdIBR0XxwhYo8RsvnAohXiiZJBxUVJbWnGc0V/RYGEvwe6N0KF6+MMMY0hvE57vIuREhKah/3eXhRDtDQf+u2Hjw61nqurbbHd7H6zym7K+A2yc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="86" y="156" width="55" height="61" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="34">
<mxCell style="vsdxID=46;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lVTRcoMgEPwaXpmDQ5TnNPmPTGOqU6sZY9r076sF5cAhJm+47HJ7xwrD3bU6Xkom4Tr03Wf5U5+GiuEbk7Juq7Kvh3HFcM9wd+768qPvbu3Jfl+OE3NafXXf0wl3q1OGGzOpJPxaRHIs/oGD5b/feisQdl9rrnKnEJEE7tIiJueoHMlBipvMkXBNcpBQXOe0elO3xC1VWKTIeC4e2aWSGcq4VKHfsSnUod9RqGVomA4LY1aiPiLXIqpPTpbzBHVcnpjEFQkT3YfjIoLEeGO3RCFW1yZ9RxiaJQFIjyoOVuh1O4hbwYVHjSnBdRQDCNuCsCWYJ7u0BOyVqAJ7KaYQejNmyePsj3bgIAHAtqY+cxJ1s2L1e/hT4zJLNkd30XA857loev6TyfQCsbogufSSRZe4OR5IW9xI2Ljwj+q5bhr7JtP9+BEeIfuA4/4P);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="86" y="155" width="56" height="63" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="35">
<mxCell style="vsdxID=47;fillColor=#2d5967;gradientColor=none;shape=stencil(lVjLctswDPwaXzF8P85p8h+Zxqk9deOMk7Tp3xesRIoAKSq6WTTIBRZYgNJB372dHl+PByXe3m/Xn8c/56f300F/Oyh1fjkdb+d3/HXQ9wd993y9HX/crh8vT9Pz62OyTL9+XX+nEz6nfVKItEeJv/Ozgvh/4WGy/v5xm8wlt58XFPhp4VNNC86DmU3mlXnHp54eTYQYZwtdW6xAagU2UFBBIQXFW1zS9H/dj/FyfqkYoXwED3bkHGMjZvPiG3rvFfWvcDhgJNuswCLJylHo5VQOk3Er5zQ30f1wKTVbxbLPmhZiNKADsXcbpVjvyLRo0Iz/qEAFyoOz4CgPQYEzlAlk2IURvJcQJYOP4CVTg4DoKLwX4FiBdgoArawayiJA9BQ/newovvIQefgxR7bUAZaTbOPXw/gbVSKvlrGPTLPiTymi4JWNLpkPgzKsNsz0mbFIpS2MZ1+R8Vw8RakVCdl9kR1ZvBUgNXV3sVpTqwZhKH598gwWDDiGX3upS9XnHGd8Hj5la1tYe+23hIuVqYd8dJSLe1g6OsI1EgSjo6Nco3OGvq5cY0Ey5XSUaxxItalcPCsOO0dHuelk1jk6yk1emk3lYvxi3Lka5SZiNYVvlYtuey6GRrop9zuUKyOovdJVJu8ZSRexPKuVjnQXq69Ltz55XbrJy23pNvFvabHR1u4N7P6HzBmywUPwI0YUqx1kI7JshLZyIbCu3xHOuIdyxWY3Cyy/ZlkIbbPwLAHD5GML4sUn2SULCbf8eqf4Nas2WrmDdlpk2ZKhl8m5tEirGbhtRNqJGrM+RPcMWgkQimI39V61kPUU40FD4Lp05HKwodipNUYGLxarqjWaNu6NS43hCa8IXW2NmBoG3nbGrYxXO2TZwQL3TZuRoqEdgyw9IF8mh/f0zRaw1562mFR/kdin0a7G9QeC6R0FoVifcXKxyoqw5b1oUIVoNb4hdCZ0ffL6hK69XJ/Q2/E3Ezri7GJDpy3DkPM8KMPxG14zoPFlQewd0F5nlY0GtLeNZtr5XIy+Pp6rc9enc+3i+nRugm+GbdnRJ7fT1R17bU85a19ZLbt5YvoV8xdlFRlby5V5xscfy4ef5/PlMn03qv/nH4pwafrIpO//AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="87" y="156" width="53" height="60" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Other relational&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="36">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=49;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="54" y="222" width="270" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;databases&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="37">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=50;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="75" y="239" width="152" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;(on-premises)&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="38">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=51;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="60" y="256" width="220" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="39">
<mxCell style="vsdxID=54;fillColor=#005ba1;gradientColor=#005ba1;shape=stencil(hZPLcoMwDEW/xluNLEGw13n8RyYhxVMCGUPa5O8LtQvIeXQniXvh+CIrXnfV/lIqwq737Wf57Y59pXijiFxTld71Q6V4q3h9an354dtrcwz9ZT8qx+rcfo1vuAVfjoA0ugjvYaJzMPw72QXD4eqDQwcBEWQ6WnTqwRuFEUZFbA1YGwUsBaKNn6xds2BEwWcyIP2ODyWbJTC5ZBtOgFryWQtmJQEzC2QlpMY3mE+ilPIUtChgxUmQ0TGhToMJlEEnoLOGX0QkQWf9k+hTyFms//5kYSTj8hz0uBD8GA+/WLV/A00NQzFv9snVdbgYy+fpTRhG4Rbx9gc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="91" y="320" width="47" height="54" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="40">
<mxCell style="vsdxID=55;fillColor=#e8e8e8;gradientColor=none;shape=stencil(lVLLDoMgEPwargR2W/Vu7X+YqpXUikFt8e8rxRck2vS2DDPMDhmCcVumTU6AtZ2Sj/wtsq4keCEAoi5zJbpxIpgQjAup8ruSfZ3Zc5Mappme8mVe0FbHGTMaYIM9nxllwRe5WvqtV5bPfcEEhCGNwEIaFijAiQWeTONqNMkGdDk7zgD0xF3v9dXJhrmuYUQxdH2Z6/kzr5cW+BJt9tzu5a5xkPUw6fb/3DW0/52z43Yv9Dl7WStR/1OFcVhrVIiqsi3c3vu1GyFbWUw+);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="91" y="311" width="47" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="41">
<mxCell style="vsdxID=56;fillColor=#50e6ff;gradientColor=none;shape=stencil(lVLLDoIwEPyaXpuyCwHPiP9BBKQRgRTQ8veCi+kjgehtO53tzDTDMB3qvC8ZiGFU3b18yWKsGZ4ZgGzrUslxmRhmDNOqU+VNdVNb0LnPV+Y6Pbrn+oKmvUCIdQfETOfwxBP8IBeiXydF/MBf2IA45lFEkAYD4cYCb00jAZHg4stBl7OjDMDD2NU2r24ywlW1vaHLwB/zemkXE4EradtyXRxEPQxqf5/rQvu/ORsTkLiqhrMXtZHtP01YBtOiSjYNldC+91u3QNRYzN4=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="96" y="314" width="36" height="11" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="42">
<mxCell style="vsdxID=57;fillColor=#198ab3;gradientColor=none;shape=stencil(lZJNcsMgDIVPw1YDCGO0TtJ7ZBqnZuLYGeK0ye0DFfmBhTvdicd7+oQtgatzvz11QsvzHKZD9+N3cy9wLbT2Y98FP8dK4Ebgaj+F7itMl3HH59M2OVN1nL5ThyvnDAG1KaXljRWERv0KH+z/vAQOqHyPIHVOZEmCJVaumhVlQT1ML8llE+ZYNuRjo0AtklNTLMnOQGtLdJrPVGgpS/L7q7NEsblZolsL1JR0IjCqpDsEKuFOA1GJf87zgJsWbLMEj21d9dGVAargaURV0v9+eP2/Bz/+az9i8VquvR8G3s33+3oZo8SLjJs7);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="100" y="320" width="28" height="4" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="43">
<mxCell style="vsdxID=58;fillColor=#f2f2f2;gradientColor=#E6E6E6;shape=stencil(pVnLchw3DPyavaJIgs+zY/+Hy5ajrSiSay0n8t8HzA5BTlPDlUs3eUyqB0CjGxid+MOP+8/f707O/Hi+PP119+/56/P9if84OXd+vL+7nJ/lpxN/PPGHb0+Xuz8vTz8fv17//f1zPVl/+vvpn/obXq73sqcc6i1nfl2fxEgm///k0/XCw/lxecESHx9P8tvKe46nQqUcX7DGvOf4bwf7/gv7/NtAvL/AntwuQ19+Xq437HaFKfjtyvaIHV0xzIvbDlnKcTu0PWKjh7hlg7hle3vkMrFdoWt+FdwlCnvwQjHvsV3Ud27ghXwG7EC+rLFdBmxP3iO4LQDOxA7BnQVwR26NbRHbtsoO2LyHtpKuhNAh7qFtbocOsbPbY9tEJULFDTkAT2TtVPEIWbfxRtYrlRLAC82RcDzF7nt+WB8lD/C+leIIPvda9Q4oUHUpRkT8QAXKXumSAF+SuxCk8cbWRsRx9b5V4CK8L1mGbGUyYf+6ph86zpYhv8yV0cQ0bLMHTp3GLXPkgKGeLDA0Ul7WyLUcKmxuN3rIlNIeWYjFSBAy2ByeeCmHomEQsvDeATsNxGwoADVML0gjC1PKa2S90nS4S3NDZrJ+D+7tVOnSkBTcx2Ykx13Z2N3Qfabo9ui1U4BnQTiCqhC0Wg0/MMUlzUU2HNA8SK9g0ePUliFowV66BGXwoRCbNR3hp57Yhp/IgxNVKgDrgmQJ4IdDDb40th7DoxdFSSy2eZqqH92sirELbGs4btJ9nH7IfpS2xegjWkIMZDD5gZIDdHm0Rvd9cGjwSWVa4Z26hOKnSZOrCkDnyam0JJ8U2k3wCeCFwZh7r4nubZ+Q+Vj6vSEMF7Z3SU1LDl6WlRYqjqbFN+hygD7JbppaJFUWUiWnzFonQhsnO7xTMC3VMFo5fUlQKZH5CH6UQrOoI2fgaXZJs0iK5SgHW0KMTtKKH/pLdqasZVLuoDVVFkD2xeAMdooMFDN+hvhFTNbDU70DnSLSGsCe5JSB8vvBQbshAbwPsFy8MoygSvo2Q4zDCMPIzJGgUcZFZXs0bSqwa91ebfa7kKxKOjlpqZY6EDMFGE3FBBjii/M+Itlta0wLUE4FCFBSFZbsljs4fDBjeuUlHXiw8M2DCY3Bt3qbG6NPZTLOPqLMCfCdgjX8QmACInptIOozn1mCi0MHsCBHCRxIuA59ZXVo0nGzEK4ktHQfmY0s9LSZFgIvImf30E5FpkFzadvuEPZ6+5bOcNDQBfdf4UAG7MExFdyRBdu/WXHZ4T3MnGIdBvDrGwHhpfU84Nc1HfXENR080pOiqjhOnSCn41v2qc+BnLHV3ViTrwZ3FD93LnfnNzhzB4Lwk+0EafCZAF3MzC3RvZ2iT7mTqjEPQhcjjdDskjPPe3A5lRdjh3SbtvrGqO1T1qvHqzCWtx+vvZx3x9PS1WTUjdCBSQZSFB5P0AVShgDd/4ruoepDaDddYu8qc2w3h3shK7iKEBNne9l2AqwWkadKVwEsU3h52WRBuhC+eMhErn7V9zhQdckMZtcPX8N6wv0yeq/Td4fvWq8sj93d+3JRYLWpAwr2uL+xVnvu27DVxAYgl0hVxPgtJdA43x8N831Yxi+mkKDLpdYG8Kt8AL4kjmFklt9lwGBuDhX1NwP9RPbQWetbAn51AnczfnHXsLbX7pM6VRRlseaf+2Dbt90AGu/D9KFVltKlxQmxAmiLTJIG4ZNybbBYj1+yin4eHr4nrcMPffEYhipwGGlRFyd4HCnrpO+m6NefO4Of2C959Sg+oX8yGFY46H6Rvvi71e+fR4YBw4LF1R6CfaXOPIBedIF9M/flTgT42lUofXka6CVtDmfaQfjfttu/wSrkh/6ntG/nh4frX+LG/8c/vcmj65/t+ON/);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="97" y="339" width="38" height="19" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Azure SQL&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="44">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=60;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="74" y="378" width="152" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Database&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="45">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=61;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="78" y="395" width="135" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="46">
<mxCell style="vsdxID=64;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLCoAwDERPk31tjuDnHoLVBmsrtf5ub0sQRdzobiZ5ycAA5pOuRwVSTMG7Xq3UBA1YgJRktfIUogIsAfPWedV5N9uG/VgnMqnBLenDxneZEOlGip09u4pRQ/aG/gTPhFf0Gf8J/otGcdXRkjHc5n3/rC+OuHosDw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="83" y="451" width="61" height="61" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="47">
<mxCell style="vsdxID=65;fillColor=#FFFFFF;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfpbmemRFIl5FBJUTESM/YAizgBlGfk5mHVz1CBKsGuHHkqifVPZSqRw0fQwMDFNUGuI0mUyHMBqxK0a0nSTG5SoEMRHJJy8zJgaQ2ZHn05AUUgiRNY1cA);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="82" y="451" width="63" height="63" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="48">
<mxCell style="vsdxID=66;fillColor=#2d5967;gradientColor=none;shape=stencil(pZrdbqMwFISfhlsLbLDxdX/eo1LTDdo0qdJ0f95+QShq6WFnPOQuDd/Y33EzKqmowt37/ultV/n6/XI+/dz9Hp4v+yrcV94Px/3uPFzGV1V4qMLdy+m8+3E+fRyf55/fniZyevV6+jWt8GfO9a7vppCv/85v5MY18zuPM38Yjl94n24O9BEGjJHKEyHOL0+orZ20fpdv5Mm8xkfliQ/nl+eT/PVy4QaflzcHyMhWSQ4QpYIA6VnvnU9SbdRASjBgjFSeCHGe9Iysb3sj8mRe46PyxIfzrGdkg5XaqAEyslWSA0SpIEB6loJrvVQbNRB7GDBGKk+EOE96Rta3vRF5Mq/xUXniw3nWM7LBSm3UABnZKskBolQQID2Lreuk20A5MH2wlPs6lSdCnCc9I+vb3og8mdf4qDzx4TzrGdlgpTZqgIxsleQAUSoIkJ51nZPuAmW+RrzVEXFoQ3HSMLy6LYyIw1GtjIhDGYqzbuHlV5qi8nDaFR+Vhz6cJ61qo+ulmz490MCANVJ5LMR50i2yvmmLzON5rY/KYx/Os4aRDWxl9AAeeUVJDmClggDpWUguS3+O9IB3uRd6IPNYiPOkZ2R90xuZx/NaH5XHPpxnPSMb2NroATzyipIcwEoFAdIzn10TlNrogRYGrJHKYyHOk56R9U1vZB7Pa31UHvtwnvWMbGBrowfwyCtKcgArFQSWp/QNrp0H3/VC4+KNgYy+/28kiQSBl+cRootBWT0GdxuP5hxtkgJr6gWB5eHE/vqf6sIdsvSLyuUfgNEkSLTmXRBANZIaIcFN58Dd7Ha2uD64Oql0UdMChcWDGQ0RV+qIuxKKzzhvJfFs1kHlpQqC06iXFnX9/3WvFzfBAN0Iwu0hOr74fEblZTgc5kdcvl7//kzL+Nb8PEx4+Ac=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="84" y="452" width="60" height="60" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Table storage&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="49">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=68;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="63" y="518" width="220" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Azure&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="50">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=69;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="92" y="535" width="84" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;PostgresSQL&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="51">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=70;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="65" y="552" width="186" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Azure MariaDB&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="52">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=71;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="56" y="569" width="220" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="53">
<mxCell style="vsdxID=74;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZjdUhsxDIWfZm89trz+u6b0PZgSSqaUMCG08Pa1ullbPs46cJds5Hz+0TnSerI3r493L7uJ9OvpePi1+7u/Pz1O9ttEtH9+3B33p/xpsreTvXk4HHc/j4e35/vl+8sdR/Kn34c//A/vyzinlXY8ivTH8sRo/f/79yX8x9txiTfLz3NSzp8HmHaEfqcSo8M55vwoJZXMOcqeo6LydI6yJSrQkB6VAXoe4yzwgwqu45MHflAz4KNKY3you2XKGBcA71WIgM/zdoD3yiXg53kP8V7NBvBBkevw1gA+zwhXL6JsiaJrfNvio1PaAN6oCPgwK4LDt1ZF2+J9xs8jPDkVYfddXKdc+CZPiVq+s+VACl8FwHPQcPVUk8rgkEpXsWNbYBsFG+9I+ThC65KpK9molFqyLidR0EbpuUVrAOdBfghusSz+gFigsvgTUBXFFszaH551XnEAdpZQRDbKnJUfJthtDTJj4dsR3KgZ9puFD3BTk7EKL0KaUyeyHOSHHkNFqh9C9uBwdpWKhFs47D7Ha9DWyrN4bEe3IHEWogd8SXypcPBXfmSGBiO8Q4ieOoOj1OKN8KG6Vsy6siHb/kaQdXWjpb1CcavOIM3dtXBS19gBkq5mmChsKHJTc6Omt/Utu2hgu64F2HddplPgWYBgrFWloqg72PWi/u2OAnNOVwupruIQ3pKdMMDG7TawOR7sHLqYHJASrhetzQmv+OR62btxuTO4qqOuhosDEWXjiwftYKNN5yy5XhGUMJGHtVYWe/5ceucRHrZbqEbUafBUoT9Rp9FXruha/u+68LkroNxL2JaezSfAgXOX0rlaGBbR3P4YLGamePOKj3lGsPHsRyBu7tHgzOfyaIPP3R8sv44pfO4kL9QUOPnSokq8G9YU0fsKPC6f+2isKeAt3J5jNQ3rDLfgte8XtRzUJl4hPoTZQUGpLyeyjXHjra+vPaKHWvvT0kqsL1Cih4J9ryG2hKSh1OuIanhz7BaesGnMrof73i+cbW/Yxcgtrb4X+40nOPRsagSdxIVzZ+u7lnT4mprHJFy/SE3hf1dznv1vjBdiEg6IOe87v2OrIsD3kq9RG3xpJsIEoaJLY+pNcNvx8hMzLjPCSoUJXrB7cBye9wW/B35aZzTwe2rx+UAM+n1+M4OWgvMBVs+Zhvi4vrsOKjzy+1sKVhpeE6Qy8L3Tubwlaa8pnvbPX7nS+WJ4/lBvjx72T0/L5ZP8HW+b8qPlpsre/gM=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="82" y="626" width="17" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="54">
<mxCell style="vsdxID=75;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZfZctswDEW/Rq8YLgKX5zT5j0zjNJ6mccZx2vjvC1YSl8sxXb/ZMugjErgX4GTvPl4e33eTUR+n4+Hn7s/+6fQy2W+TMfu3l91xf5JPk72f7N3z4bj7cTx8vj0t398fU2T69OvwO/3D17KOFSmbVhl1Xp5opf59f1jCv38el3i9/DxHUvO6QLcr1JdZYwKpuMasj2Ikp9cou0Z5slvU+igGikO4IxdbuCwxGvCOLNA9GQZ6Cdrgjoy/Qrca6IqcBzpT+l7jA5PGzVtSoeX7SNEO+Yoit3w/k3ct33oKwPeSZNi+tRRcy3duy9oFvokEh+8MadviDed8bHiWrIYWb6qyWx+xozCP8Hour7w+4jnXw8aPZGH3bMnB5skbgG8xl7ZOHoq++teVoyl0YANp16QBbIjNiKwIwTrndyPLYeKRKwqxRasWPMex1FRLFUlHjVQLIhdFR4cbVqBxCTLDs9bkocxEeAyHLQkBjUuQ9tOVPJegS3Du0BoqTCo8wHHPOtdHLTDItTzyYSjwUkK6sEBgvbtpJmVaegqagb6d2MDdoNTkkLmD47mXdFXGPoO4t7q/xA7ZR84aqyuzpfP4lq1acGpmYGrDXiZSUpBv6GQMXlK9VRGwv2mv4grYP8sJFufwoK0qF7YP+s8c10ug4L+KWRs45VSELVpahbm1uKVVabDvJBvQdZhLjys1h807tepO2GaIlyUe6Lnfl+bhs9orukW6J8cdnofNS8YUrTv+Zk+ZH4jR1sDTJCTA4JAGqTE8koGakzVd54zE6GuhG1wkykPqJYqHjh67wSFpGfaep8hz0Ttj+1TQxTi3vkt+rqCRyQru9g05l5gYr25b3GPmK9tmyLmswTZaJye7Th5iBmmXKDfsZXU1FQNQyK8qsxpccP99zScjG/MrNVVTEyi+EmblflcFn4KGRZ+cpJ/ZsKElV8LTFwe0LV78TsPpFwu85LXlYlJN69vf1E4Pik8vjk2mn2Su3lbSmhZf34IK3kLy04UK6Cbf3aqLWhiOj1Whnys54O5FaJD8pEawvDSq4kUxR6381/3bLbfaG8PlQ7lAP+9fX5f7d/07Xrjl0XJZt/d/AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="131" y="674" width="14" height="13" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="55">
<mxCell style="vsdxID=77;fillColor=#5ea0ef;gradientColor=#0078d4;shape=stencil(jVLbDoIwDP2avZKtDRKfEf/DyJBFBDJA4e9lKYatBMNbL+fs9HQVmHblrdUCZNfb5qk/Ju9LgRcBYOpSW9PPkcBMYFo0Vj9sM9Q55e3NIV30at7uhZF4sXQUkBOlSlJ+Jex9sARW1E6S6KQWggoZcgRWmGBDGpFjMBhjR3aFLwWACM+hrD/aUpKhaMw0/0p6Cj9R5pO59EfCEHHII3PoL22rMPFd73lk/1mZ+vDfz8F6NIWpKro5v8+PbC7RgWL2BQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="91" y="634" width="45" height="45" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="56">
<mxCell style="vsdxID=78;fillColor=#f2f2f2;gradientColor=none;shape=stencil(lZPdksIgDIWfhttMSNoC1/68h6PVMtbWwbqrby9d2BHojLN7lx5y+EKSCl7dut21FYS3yY3n9tsepk7wWhDZoWudnXwkeCN4dRxde3LjfTiE7+tuzpyjy/g13/AIvtqApNlF+AyK0aDUj7INhv3dBYeMCQaMjJYoScQgPKgQnlFgBq1iDi/RUeIKNH1iew/n6PRiWiS96UgLOhdwAvz48LTg34dXwJzTqxoameMxR5MBLNgI0qTo3g7JkBpoVDajMr2sFIseSdC6GJAErPMqFUHRI982U+eFLrYjr/QP6/Rvgw/e23u0fR+WPz0vt91L4U/hzQs=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="90" y="653" width="20" height="18" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="57">
<mxCell style="vsdxID=79;fillColor=#f2f2f2;gradientColor=none;shape=stencil(lZXbctwgDIafxrcahECg6zR9j0yz6Xq63c1sNm3y9sW1AUs7dqd3WBZ8iF+HgR7ejk+vh8G7t9v18uPwe3y+HQf6Mng/no+H63grq4EeB3p4uVwP36+X9/Pz/P36NHlOq5+XX9MJH/M+dG7a493n/B0Fgvy1fJ3dv71fZ3+0G7Dt8DibPrz1WQwxg9DiQ7NJBMQvXtS8OO6xhYG9plMGDJqeM0TUfBRwrPmJIUTNp2rZwKcAmTXeQ9LwROC9hntANGyEaNgInPfYnAAN24FnDWffz11MTpPLE9eHqGRXddggR4KYNBkhkyYHASJNJhATdojApOEMsht2QJBo4A5c1PSSBGIVD92rysuQTOxYMo73+BSAUfNLYN6ITgQkRvQMlA2fWqF8dtNy/BbfgxPNp5amnV80TJo/XclkvJcm24q/yLbBL8m7CLTmk613BgqGz+CS5iP2WKjJi7v8CNnIHxi8pvu71Iu9CBscMGk2t0fbYJs+xxmSIWOrwEouXYXFZD0k8+q5KLib9bmGWNlyX+tItVk2uEQIJuxS3WhyTkoL+F/NS7Mm02VL6Trz7K3trzLujl7avpovp/G8GkdM/dSNDXddmWsNt+uWCYCmRHKfAE2rANGUSB9ctV/acaiv+8/pWRZ98r6Mp9M8uNf/7aQupnnK0+Mf);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="114" y="641" width="22" height="19" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="58">
<mxCell style="vsdxID=80;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZZNctswDIVPoy2GIPi7TtN7ZBqn9tS1M47T2rcvXJGgCI3Y6c6iSX0C8PiAiZ4+9i/vu8maj+vl/GP3+/B63U/0ZbL2cNrvLocr/5roeaKnt/Nl9/1y/jy9zs/vL4+dj18/z78eb7jN53IAR49T1tznFUTw8e/K1/nAt8/LfALLEQvJlyNlicCWlZudV5IDX99blkzZQfNj5NfksqMsWXBuRA6pHWlk6snBQXY92dX3CjwgmNjDA5gx3AGqsKPEKPAIJvTwDD4peIboezja+vINekRA7OlcqKjwnFOXejzvejx3mSeIKvNoII/5flV0PuOy4sdV7nmXaKPAkgFDK375yg1+smBU6TOkSWsOdfRG0ib0AGgVnZNLQ3pqcsFWMaf48kWCJ0jU4zOzgsKz9IbBZwKyPd6i5KPi+c21HpW/yNF29JQhD0ufIKjgvYWslc869z09cPQK77Oo8d58oFRtg+/ySvqJo1eGQxFU8ClKpiueLzkq5WdWHo7wGFfJZwescrg1oeXY89ubW/YhYY9Pvspoy3YgkAp+oekaKjjlOuwXpIJfiPHebHCoe2QXV6kPRhxOYncQVOm5zspx0YNTsfsEOOw0fMYo0/EchLp2vAt7OivGxRXeK891vupjC09yxSvepdocu8pbFb1tXUkqL5tq9HITt/CQde4zkKq8UZpHEXglk3yxaC7Xqm6QuVQq7exA+sLF2jGa4H2rTfP1uiQXjrvm0G847VFfOA5cVz2IuTSzVyMGsrPp686xj+A8g1BcwZ3qNDxRRNXneJdqs5who+lspUOvYy/2us35Fd7ziKbue1JVD1buvxht/sdgx3MBpR4eDSi5J2oNpH5OkjQvupxZXzczTD0nR7d4QjHMmy6yVD23XlTpi6G2tfg++OPh9H9jMP9oQ/Tb4XicZ/Dl/3ro5qV5YKfnPw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="81" y="632" width="65" height="46" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Azure&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="59">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=82;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="92" y="691" width="84" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Cosmos DB&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="60">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=83;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="70" y="708" width="152" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="61">
<mxCell style="vsdxID=87;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZPRDoIwDEW/Zq9LWUHCs+J/EAVZRCATFP/eYYdsAzW+td2922mzMtxey6zNmYBrp5pzfpfHrmS4Y0LIusyV7HTEMGW4LRqVn1TT10fK22xUjtGluY03DOSLOEajScCDCknC482rsif9oVdkCEggeIjGEfgWGASVwChMmsQchVGgqzBpEvLQfrWStUUJDuKb+QMhuHgz8ERnteDyTnDWVBzcVTiNvnFnCN/o9Cyi2CUEFy8Ab3xWB+hLfOJVxFnuI3+AnA1L6kEsG/HJB1zOxkNfBf39Hf/V62D++4WsKlod+9zfFV2iPcP0CQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="83" y="764" width="61" height="62" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="62">
<mxCell style="vsdxID=88;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZXRdoIwDIafprc9aUOBXjv3Hp6JgzMGHsQN316whbYBQe9K/INf/iSU4e6SH84Zk3Bpm/on+y+Obc7wg0lZVHnWFG1/YrhnuDvVTfbd1NfqaJ7Ph0E5nH7rv+ENncnTyFENWRJuJiI5po/Ap9F/XRuTIGyG4pG2GYKkQCetKOE4imwo4tJGOpyLbCjmEfp/XhaVD+slTPipWKX1UlwBWhFcryZXQRoTXs8rpKpF4L4cEfJSPeXtXUoJbsJjGeI6v2+ugESGtJ7I8avkOayXsNwMyuoliFmP5ayeGXyHM5co+/IYbM7su/qtnYA3WgzrlqUqtAxCv4CaRYcQQqfWFwYCss1lAUYnT0R08iZ+GxEAbKObo+RZc1S400S+sNGCeOgYKJS3zVMpSDWvrYfTv7YdWvMkpt/JqZsjV8y1CFGJnQsfnXU310a3P7iL4FSUpblH/N/pxdGHzKWD+zs=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="82" y="763" width="63" height="63" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="63">
<mxCell style="vsdxID=90;fillColor=#2d5967;gradientColor=none;shape=stencil(lZNLDoMgEIZPw5bAUKuurb2HiVhJqRikr9sXSpoqphR3w8z3zwMYxKqpb0aOgExGqzO/i9b0iB0QgBh6roWxFmI1YlWnND9pdR1afx4bRzrrom4uw8Pr9gXOM6cC8vQeSjGUb8/RC6QYZoIix0t+V2Ia4dcFbAYSETBbf5OAwraO1gX+jLz5jhIEy1cIaPI7NSSTZAFm6TkpibDhXDH2E0zpIf0GYqQ1vh+9E1L6PZnHw8WwLr9UrH4B);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="113" y="779" width="21" height="18" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="64">
<mxCell style="vsdxID=91;fillColor=#2d5967;gradientColor=none;shape=stencil(lVTRcoMgEPwaXpnjLhZ9TpP/yDSmMrWaMaaNf18tqByMNH2Ddc/dPQ4E7W/V6VoKhFvftR/ltzn3laBXgWiaquxMP64EHQTtL21XvnftvTnb/fU0MafVZ/s1/eFh6zKYShAGu1VKYvGLHC377d5ZurIEDbLQrkSFNfBAC+VaOmRwCOYSyZEoIjlkV0iVVPdKVj/qhYv7Flc/iosvuSlgbChjIYG4tPdTJ6NwRgaM7VFEeja2V6LidmLsEOOT2cgdHXhtmn+MR3KYINlQlFnOQwEPBDyMVzCHCbJkSUHgYlrLHQYd9CzNHQT4o3+QFPVUlusCQc4FWIbGs0Yh56msK33utpJaB9fEs8Y7vpWVSSbnhDHHxfr6XExd28fL/x6+ViNkXzo6/AA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="104" y="800" width="18" height="18" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="65">
<mxCell style="vsdxID=92;fillColor=#2d5967;gradientColor=none;shape=stencil(lZJNDoMgEIVPw5bAQCuurb2HiVhILRikf7cvlDTVJlXZPWa+N5kJD7FqVM0gEZDRO3uWd916hdgBAWijpNM+KMRqxKrOOnly9mra9B6aSEZ1sbc44ZF8vMR7Hl1AnqkCHNPyXTkmQ6/NxCAoLnYzgyjwAk8Fhhw+e6ENhrWTyf/pZAZSsoB+mpvgrCVW4CC+39vpvk/pmPZ/4xBKKUqsfgE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="92" y="778" width="20" height="18" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="66">
<mxCell style="vsdxID=93;fillColor=#2d5967;gradientColor=none;shape=stencil(pZRRc4IwDMc/TV97bUIFn51+D09x9MbAq7jpt7csDNp0sO18S9Jfwj8JF4GbS7U/lwLUpXPtW/lpj10l8EUA2KYqne28JXArcHNqXfnq2mtzJP+878neem8/+go3ylsbmZs+C9SdIlqpL39HeG2bAM8kLNKHq6Pqmp5hgHVMqxtQYHDvg7vOZV4MBMYEjnqhmNenInELjYxK/o8mEnjTU4JO2/rutIg7nyaD6WLwD5v5dZHx3pHTmdT5fPUE958zZmkIQYYeUwqMp5Cx9a+k1vEYgh8OOfTzHFaxTk5znR4ALjSQMSkzTGvQDSYQzkyJa5VPLeFJ3BvTWTjZuqarEr7zM+JDdIJw+wA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="84" y="771" width="60" height="54" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="67">
<mxCell style="vsdxID=94;fillColor=#2d5967;gradientColor=none;shape=stencil(nZLbDoIwDEC/Zq9ktILwjPAfRIYsIiMDFP9eli5hw1v0re1Ol5O2DLOhKXvBgA+jVmdxk9XYMDwwANk1QstxiRjmDLNaaXHSauoqyvvSkCa6qKv5Yaa+kHPTA/zu5wXBrewc+G80SoIYXfg4abIIfdymsA+ilEoz2JIlwGuYkdJdAJEF0AVeuqWxJ8c/iaWJb8Z9q3V88GyOWwbfTMPX+2klX+AlWDdfy7alw3Hft5eylOjKMH8A);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="84" y="765" width="60" height="4" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;OCI Object&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="68">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=96;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="73" y="830" width="169" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Storage&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="69">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=97;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="84" y="847" width="118" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="70">
<mxCell style="vsdxID=100;fillColor=#2979ff;gradientColor=none;shape=stencil(jZTRcoMgEEW/htcdYFHkOU3/I9OY6tRqxpg2/ftqgWQXotM3WA9yuOwgcHdpDudaaHmZxuGj/m6PUyPwRWjd9k09ttM8ErgXuDsNY/0+Dtf+6Ofnw0Iuo8/ha/nDza+zGlAtq7T88RX5N3v1cNf2BNYWSrcOv11H/2sV8AIqE3BFeXnTgTCgIhFKCpQOEAYIQWOAYgmcWdeU4PiRjAVZbplKbmkqqCpuKrllkWuSXUOl2Nak5/IVN3sWm4mSvELJ5a5L7mWSqpRJqOQqkTNPZfM+SfBU1c6qJVd9SAQrm4vS4wQvW4K1XDULiss6B5L3aXYVqe7dLcrSG05DjLIml6Vb40r3JcmS4z3v7ixaElvUz2Rp/ryH77mSK0VK/LMBGDwPHk/Mqe06/0LR7+mTNJf8c4b7Xw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="82" y="1063" width="63" height="55" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="71">
<mxCell style="vsdxID=101;fillColor=#FFFFFF;gradientColor=none;shape=stencil(jVPLEoIwDPyaXjN98jij/ocjKB0RnAKKfy+Yaikocsumm85muyUiqfP9NSOc1o2pztldp01OxIZwrss8M7rpKyK2RCTHymQnU7Vlivi6H5hDdaluww0dzsUSpBymOH1gh1H6wjukF7oc0RWoYIl9aA3ezvCYg7J05vNpx7Fh4cPCOITYjnTCZ1gYK5DBb4XUkydBySV91FfHgSpfnlvA1/sWNzLEk/tVWxhCGHn6Fsgfp95OR8Ci9fSZTdPV3QCbW+9eY7K+ez8xD5BYkaC/gesLF9ajLgrM+vh8Gu6+hR9DbJ8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="99" y="1072" width="29" height="36" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="72">
<mxCell style="vsdxID=102;fillColor=#b1cfff;gradientColor=none;shape=stencil(nZFRD4IgFIV/Da8OuTl9N/sfLjFYBA7R8N8Hu2bYamu9nXP4zh1wCdSjaAdOGB2dNVd+l50TBI6EMakFt9IFRaAhUPfG8os1k+7QD20ko7qZOU7w2KOxweiSuhOCSuqvYFlk9JDC58ni2HyPr7aqshIw8gyjPM9YsVLPiK41DxhsAOyBjzfc2ssP8J/v3oFBvL61l0rhVtLz9zWECFcIzQM=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="122" y="1072" width="6" height="6" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="73">
<mxCell style="vsdxID=103;fillColor=#03a9f4;gradientColor=none;shape=stencil(pVrblhQ3DPyaffXx/fJMyH9wwhL2hLCcZUng76POtC25RLt7krdlkKfaupRK6nkIb75+fPfl8cHbr68vz388/v30/vXjQ/jlwfunzx8fX55e6a+H8PYhvPnw/PL4+8vzt8/vb//+8m6z3P768/mv7Ru+384FZ5LbTnn74/ZJdCa3fz/59Xbg09NnccAVE/6XvXMm+GP7YEKa7aOx8Q77bGpemFvj5+exZmWu3HOn+Yl3LhyY4+Wsncx9NJP1b99ebuYO7fcPfDH15k773d8+as3Eslv54abod6uwW1UT8261fxS8SXWF3oqJccYP0ZQG+Mm0DPjZpAb4lAcN8KuxbonvOdodv41H6vi1mdZm/GhNmuEr5THAU6jc0vmV7lpneDpTA8A7g+j02DN6qaaA84fRAXhJJnsA5+/dkYo3EHn5gB3cKs+fXj1T5PHq7NMdKyfj0wwvw7NjZSrx8HBf4LPjlHY6pXawRIGvgE8hA/xUTXOAf5b4iaosAb4oKT+sArhflmfQVuHnVT+TijwwSDiePG4AdxHtRvW0kKdO58pPnNVMzktwigIUaVGZQvF0M3jqXysTxdcZO/b6P8qTZBwQlDfVATh5B9LEmQL8kEUuhW5klxen4usZ2cFt741coUmRs1XckMHldslK/PADFhgpMnX48WBFEaIP912YiLZCpIUjezfwxgG4CEnPqcCUfTHU1GWwJEUKdXAKdZzBC3YCaoRDclxMceqwIcPFdSMgqwZ0KKowaKPudqjumQ3kgSvscaYw7rOe1UtNg906M2Xj0jJnxBGmpoQtPHXVxK4LxgFBkFWALur8SSehMxbx7eA4UTEJqpRFxYAPTHQjcZY5Syc8MAQX+8AmGoG0qd2pjO3YQZ03TF0KiGqV5xUvF1HRo14GhQnx4hE7LLFLUdRYNDXm3oWPi3VTQfW+exeSANAMhT/9MLJwcRGZjhRY/l4LOLUEJCmRRyzaVD8SKRmGlb032Ysb6mckuygjP6zQ77Ikg7bq+FjsM5fIEzubZGOX7CCP8ICDLUVeq7eUZhzKXO2wbVpc6jwZiq7zSKoAscuodp1JB3W2ALGHda5EpV1CGFUuErVqjeuAmqhMCgSLrNI6WTJTCg93OFxSJeNsSS0CtAQxRPUKfrc6gqfC0LPl+OZelBZFq3xGJsd7L195cHLaqx2c6h/jLiLU0QWVXAr8Js8QXKQTt0RQzJSZAbHTGEou5zydKaDiZDUxPDheFmZQRn2ywYqfKUIcuEQpFwTH3QdmSUMzdZ4XSiM1DvwnT7BLM9QNWUH4ajUeOiuN4RYyt9lOP0fwNM1D9jSvRmOasJHjW1TpQzM1dvZNZi8rZ6s/0MKkuj1cnxIaR5BNdwO87f2M4WtvlwfwlIVjkmR13jVChycZm6C9D6Xb0b1TG6Fuc7SMq7zvwP1cR3aJtx1ePx93cuX4s5uTRnB4c3bpEFDYLWRw+pDP+7qrURfLO6fTacx5sAbcEhOw3fjkcsZbtQuSpTQP1T+YvjIg2xkWy3zmkXkqovbql084P15Rezqr0jG30QSOXbNt4ZaDqRgdeCMCKRF5AOrYYayCRUoAtO9d7ah/K5WdrZptHIQltfHAohRw/ZEqvANQpZBG/McugDQ+aAcqVws9TOz1BA3g1omtjtwe1XZUfjM3TAi6fMgO39TC7fT62/oSmEA6VggliLtVIw51gAzLydPIb70FGqDMKF7BW+gAIjdFAwTtdJrz1FlxopfFxP0342Sr1vLSiJX0VOozLZyrhXvtZzVCQ2icV780VbR1LlZFj9tUA/2YrALokWJHGxjJWNRajly77gx0BtVsrqYAEZCVg1qkQBfQI6QeE3QmslrDE3MBFeQ8ZPuAT6PwRDI2pII4dhQDfryFOcIPyv2agomnY1bwuN7aBAk2gGF1BG8VE8pv7kzYjHcKH2rRDTFx+fJjcynBG/ieBHjGy+ch4gZ6Zll7MfTUBSKIEplTLMgs3l3kZ4ePas90mvl0Bt+6yJri1Qr6XtZn0Fa8T2iLSUee2KklmLpWkOIITy7YN+S1uprKY/O5cBipMrucPGUo+JWCh2KRYe06kqWvyJfxmoGF5Bo+80vYLmLdwBrwhZurH1a4C6ZiiTi6jBn+CL8xvfDkhoOjeIckZHRB2eD0anJYHXGF5yW309/c8YNJGh/F9KaA0P1n9/diNHLasx0/80zM/k+Qfl6QysXwCznmdFqJJQfuhZtat1E3teD90+TfOjCOMaKsuE+j92WJBm3FLyfm4p/ZQp64RC8XlMjdB+BlUuXXKXs8Wq/Gn++XIw/N//EAcbrzxwdIIJd5g11cH6gvHsgR3iXCforU0vw2j9T+4u2fdtK99ic+unCA/uCfn314+vTp9us1+f/4czX66PZTt/D2Hw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="106" y="1081" width="15" height="23" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Azure&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="74">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=105;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="92" y="1126" width="84" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Blob Storage&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="75">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=106;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="65" y="1143" width="203" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="76">
<mxCell style="vsdxID=109;fillColor=#005ba1;gradientColor=none;shape=stencil(pZXdUsIwEIWfprc7STZ/e436HowU6YiUKaD49iaU9GdrGxzv0vRsvmZ7clLg6rRbH8tCidO5qd/Lr2pz3hX4VChVHXZlU53DqMDnAlfbuinfmvpy2LTPx3VUxtFH/RlXuLZ11oKORUp8txNowcrbzEur31eHJb0EHMlfL027vpwUyFQhTDtzVZ0Gk+g+JcDLuwg7UXy+iTCJDGXYgsZwAegZ3AApDk+kDm7ATeBSLcINGMnhQk3gihh8QhaOk+8NnCNr8IaTJQNrsCa7aw2Go/W8N1CB99xMRs0XiJHYaRD+UTEREM2LyYD2ywW8a2QTvneqEOOuBY11466FddOmU9vITZwaVHbRLaHGuTE91KBjfA+K833aV8/3YInxfTLjHJ+SnXu+B4GMT6CZa8KHa8v41HcJu8Z5zPA9O6qhhp2W7n90cJP8NYQT33w4Dwu2HVY8lmnDitlQiyLMhVrcthx/bS7UYnezoRZEXfjMHu9osAl8OdSiTbKhFozT5cDvoRYdav8WaqFE50ItHo9sqEVbE2cv2OPfN+REHwb9dbyt9vv2Nh++59d3mGqvfnz+AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="378" y="175" width="47" height="41" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="77">
<mxCell style="vsdxID=110;fillColor=#005ba1;gradientColor=#005ba1;shape=stencil(nZTdTsMwDIWfJrdWbOf3emzvMbGOVpR16jrY3p6UdLRJUEHcuc5xvmPVjuDNpd6fK0HyMvTda/XRHIZa8JMgak511TdDiARvBW+OXV+99N31dIjf5/2oHKO37n284RbrtASJYxXJe8ygBPRfmV0seL72sQKjgAjYTCWY18gbxdTi3imjwapJw4XmkVmC2+a0cFoY9QaY1ozK1GTQu9wjmtSjt0AuN6l8ajKILK+CwVHGdoAZHB/uZ7gD7VM4glcZ3IFfhRNom8H93NSEYuDs7wSR1ilcAeZw/0vnCrwp4B5TuAanUjhKmaINWCrQPhnLdDq+b7j/Sy7XmprFWEzy1IC1YHTe07wTXC4b56offf5hPUMwL/exadv4NizP88cgpOJDwttP);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="361" y="159" width="31" height="57" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="78">
<mxCell style="vsdxID=111;fillColor=#FFFFFF;gradientColor=none;shape=stencil(hZNBEoIwDEVP0y0TEhVdo97DUZSOCE5FrbeXWh2aFGSXpD/tS5ooym/l7loohFtrmnPx1Ie2VLRWiLouC6PbzlK0UZQfG1OcTHOvD96/7pzSWZfm4W6wPm+ZJYuFy0J4+Qh8vK0XV7oOxCkmROPi/d34q1N/OE/m+FWnoRwsMveFUm+JC0i+P4gHDM1Vlv3DA862miWzJecLCvhGUgBOGLaEuGaQMe63kEtKh5Vx0h5CUv0ww1pIamikP+Kvgbcz6r0E7ROi77cY18JHwFLcHpqcx4nh7Yx+7I+6qvzWhOdyTbqQXzHavAE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="408" y="200" width="8" height="8" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="79">
<mxCell style="vsdxID=112;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZNBEoIwDEVP0y0TGhFdK96DEZCOCEwBLbcXrEqTysJdkv60L7+twENXpm0uJHS9bq75Q2V9KfAopFR1mWvVT5HAROChaHR+0c1QZzZv01k5R7fmPu9gbN8uDrbx3CVhtBV4ZScrrlTtiEMZIK6Lz4O2W4d2MQoi+VaHrhyMJOkoud4gFSA//yceELRlshU8oGz7TbDZUT5ngHclBKCEriVINT8Zfb+ZnFM6WB/SBYJTfTDdWZBrcMUfdtdA7fS856BLg3f9xsca6RMwHtSX8y8ziXgKlmdfqKqyv8Zd599kKtkvhskT);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="393" y="200" width="8" height="8" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="80">
<mxCell style="vsdxID=113;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZPNEoIgEICfhquzsJp17uc9mtRkMmnQSt8+DQsW4tCNXb6FjwUYbrv6eCuZgK7X6lI+ZdHXDHdMCNnWpZb9NGK4Z7itlC7PWt3bwsS340zOo6t6zCsMpm6dJ6t8rhIwmgy8o4OBG9k6MBcJpnH4dNdmaW4msyTDheYuDoMg4Si+vFgApADa/TGuB0TNniyiB9Rtkybpmvo5B1gyHIAaui1Byvx0DPvt4b6lo/UxtRK+1UfTPQv6DEb649010HYGvfdFbQEPrjPUGukTGAKpr+dfzSTwNLDPvpJNY36NO+9/kyllvhjuXw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="378" y="200" width="8" height="8" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="81">
<mxCell style="vsdxID=114;fillColor=#eaeaea;gradientColor=none;shape=stencil(lVJdD4IwDPw1eyWjFabPiP+DCMgiAhmg49/LLF9bgsa39nbt9ZZjGLVF0mQMeNup+p69ZNoVDM8MQFZFpmQ3VgxjhlFeq+ym6r5KqW8SwzTVo36aDZrmfM7NDPCB+sPJw+CDXIh+7RXxfXdgAoTw0CdIwwKFwcQCZ0wjAcG8Bm3CjizAfNcivK6cNLgtKY5eCLaoo/nTrGMVuMeFrbm9yz5jz+hXm9ufs2/Q7kcO6wXCVlwpez5LWf2TgbFY85PLsqT4bd/dvI0QZRXjNw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="361" y="153" width="31" height="11" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="82">
<mxCell style="vsdxID=115;fillColor=#50e6ff;gradientColor=none;shape=stencil(lVLRDoIwDPyavS5bK0yeFf+DCMgiAhmg8PeCReaWoPGtvV17vewYHtoiaTIGou1Mfc0eOu0KhkcGoKsiM7qbKoYxw0Nem+xi6r5KqW+SmTlXt/o+bxhoTgoxz4AYqd9FHHYv5ET0c2+IL/2BBVCKy5CgAVYolAsLvLEBCQjea9AlbMgCcIxcYbty0RCupNpzqVxRT/OnWc8qCI7S1QRcodE9wxrlMnB1vzpVIY88p55P+wXvIyTfo6tqOVteS139k4OpsBnKdVlSBD/f/cxNEOUV4yc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="365" y="155" width="24" height="7" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="83">
<mxCell style="vsdxID=116;fillColor=#198ab3;gradientColor=none;shape=stencil(jZLRFoIgDIafhlsObiF6XfYentTkZOohK337pFEKF9bdNv7934Ax3N/qvC8ZiNtgukv51MVQMzwwAN3WpdHDHDHMGO6rzpRn093bgvI+t0obXbuHdRipTwrbAmKiFHiUvgtHEp/uhtQRnSNyEbsOV3IGI1AaxTxSTvEpSZ6gU6HXNLl0l3KhtrjWFXxuglz5aDscBmghfLAMyKnisAWOY54qH7x4wneSJPG5q+Ew6Pr7ztYWA/TqJWEZUPrwH1cO/7jR7f8LMQfLKlW6aWgT1+fh6s0lWlvMXg==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="368" y="159" width="19" height="2" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Azure&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="84">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=118;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="371" y="220" width="84" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Data Factory&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="85">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=119;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="345" y="237" width="203" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="86">
<mxCell style="vsdxID=122;fillColor=#c74634;gradientColor=#c74634;shape=stencil(pZnJchMxEEC/xtcu7csZwn9QEIiLkKScBMLf08NYW7ekUYqbx+5drX4j+aQ/PN99fro9KfH8cnn8cfv7/PXl7qQ/npQ6P9zdXs4v+Omkb076w7fHy+33y+Prw9f9+enzJrl9+vn4a7PwtutZsako8Wd/9A6i/ffNp136y+tlF5e7gFKg41VFUh3xpvavktHro1dg5VVCtxLXR+dBmNrv/fmhirINMgqQsxhFG1+0YH0bX53F9SspRBuhJSEmgYFT78HJ1nExSX0kp3VomsrofrZtZYr4oJA0zqIg+eIonoviizwoEOudNtKjTmv7MioQvlEIEtw0sxBAkdYMCoJucwsGdGhzCxo8WYUgwJg2PVQ0etoBFrwj/i1sz01tBURH/FtwqvXvHMhA/GepgX9nQWjm3xH/zoAgrY+Z0fxrKV2qNPdf6ZT6O7L1tigV8S8hLOSfpUb1F+DJDqwtq7xKyjL/abGTfx/BE/cCXJy2nwajiHuRmzi3nwepW/foK+X6VvZ8TiVFFEBMJ3PEXMnO9kC8466KpPnRrtLEuwZNsscY1bT5Uccblj1tfpSS/kSLT93j1udr7yajZWFYvFthiknjYVqNDiWzygiSBmeVaytBBqz2yeoCJJ1MW2+NkggOadoAO5T0kgGLYSCLrJOyNjtipSs7Z8jKLWk3rhCFJSvoISy3RSLvOh1Y4lonEo2qVERWYEn77V3CR2C1Cvx8snGwWg0xtnXogNUaiGTJOmC1+BI09d8Bq3V5RNVgJYMdpRjYOFiK1DpYa8tjsGJmkYKNgxWrFOb+OVix/hRsHbDiysaF/LPUOlhry2OwopQl+4CD1cq0pdbBijoULR2wWgGacL0DVoNom7nnXDWhTOoxWNGupljnYN1iDFP3CFbLss+Wx2DF4hvCkw5ZUapxf8RJNizerTAF6/SI1aEqOWBRpLIVoGc65MVksBJaqDQG1oiKdCGo6ADVSDYiGCqyyDpQa7MjoGJ8huxOBtQtZzUuEAWqVKnBl4HK5zjn6cHJXIwDnLXXERcxNj/dmh0uKsvmYoeLCs++5D6kw0Xlj16kOBdVAE3fT/iBE6U8GQ0dLhSpdS7WlsdcxMxo/h0uYpXC3D/nItY/kMuMDhdxZeNC/llqnYu15TEXUcqSwcS5qHS6u1jnIuocY3GbQmTkdLCoZCrIMheVgECOEB0uomFNucS5uAU5LX7nwInZ0+bvcBGLT0/7HS6yzX/Euf9XmIJRhgP4YOdLshmLTq6HyeMp33vim3xbjUqmYNJMX9EqldScpciKB5gIlCowHO36YAT7/O5csFuMlltWQTwHduNWC62mHfkAlDiT6G1qFaPiKzO6bqYLPgUbk8YP5cr/2/n+fv/HoP6d/kWAX+1/L+ibvw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="382" y="467" width="43" height="47" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="87">
<mxCell style="vsdxID=123;fillColor=#32bedd;gradientColor=#50e6ff;shape=stencil(pZTdbsIwDIWfprdWbMf5uWbsPdAooxqjqMDG3n7pEqAOWjVpd+6pT77YSdzw4rhdHdqGzPE09G/tZ7c+bRt+aoi6/bYdulOKGl42vNj0Q/s69Of9On8fVmPmGL33H+MKl+wTBPSji8xXVrwDlB/lORt23X7eICB+ang5DxmBj5YiOQuCWbpQWYZAbMkqkngQLlmcJTSm5BRBHDg7R48OgtV06yB6TY8GiDWdIwTU9ECAVvM5AMscPyBY0Xx04KPmuwAYNd9othBw0GwDbrbxYwWabICdBlMAW7UdDUTScLJgRMNpFp3WcKTZFIGqM0/bqYq2FmzU7OrAHV139ws6kTU4MPiqauT7oVB1s241B/Cs2TGV4ObYqUapWn733OhsHuhx0pzrzcKbccJHnH+bV8efDf99/bUhBfdhs+l2uzyrpv/r4ZSkPNh4+Q0=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="361" y="450" width="39" height="28" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Oracle Database&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="88">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=125;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="331" y="518" width="254" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;@Azure&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="89">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=126;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="363" y="535" width="101" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="90">
<mxCell style="vsdxID=129;fillColor=#3e3e3e;gradientColor=none;shape=stencil(jZPdbsMgDIWfhlsLbAhw3bXvUbXpgpYlFU239u2XyGQJSP25MyeffXQIFrS5NPtzLVBehth/1b/hODSCPgRi6Jo6hmGsBG0FbU59rD9jf+2OfD7vJ3KqvvufacKN++TUgfK+Pu0YbEP3EDQIXq3hwzXyWMWABaNTR1JMBeRZuiFLyoKlRCXJONAuUcQS+mUWldQDe62AqsJ/NXk2syCx8De5eaVhlmZz7cHZp9kRpCvMTe7sNPjXyZWUL3Ln/2jh8/N7sHl6oQaszzMpPd/DfywEsnkqB1TcaBHp7SeXgWOxvOhTaFteiPX3cgNGibeHtn8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="370" y="772" width="23" height="54" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="91">
<mxCell style="vsdxID=130;fillColor=#a0a1a2;gradientColor=none;shape=stencil(nVTRcoMgEPwaX2/gAIXnNPmPTGOqU6sZY9r07wsFUc5RO33Dc+92bw8uE4d7db6VGbL70Hfv5Vd9GapMvGSIdVuVfT3YUyaOmThcu75867tHe/Hft7NDutNH9+kqPH0eB1W4JGTfISDB5L+Rk8e/PnqfwAMgwDnFsyf6EJtq4hIkAiggxAptU7czmSzRaAwU6q9gztg6lP8XqjQIsWmTgjx1yqYwnTqFNiRTq5QETawS1hue2iWpA5ReIiChnxUeuRQgEvrYV6TPDWhM6Xe71xIkX7QfKwcyY0WSm6JI73bU8TKN5AgK1+c0z4hiELfUzlN4lCYNccsOy6RqXSIxC0Sq1kKM3CJ3vlByW5aMaryaE7V1gXBPGLHSOLnRLH0pbNOjArRKZWqQxCE59rr18vliojuPf39H2cO04K510/j9OP9PF6IN+WUqjj8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="394" y="772" width="24" height="54" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="92">
<mxCell style="vsdxID=131;fillColor=#3999c6;gradientColor=none;shape=stencil(lVPRcsIgEPwaXm8ODkh4tvofjsaGaZo4GFv9+yY9UoFp1b4dewu7s9wJWp3a7bERCk9jGN6aT78fW0EvQinft03w41QJWgtaHYbQvIbh3O/5fNzOzLl6Hz7mFy58z2rQZr6l8MoIfp82TN6dA7MlN40FR5EeIYkga4YuiiGtwejIipCsABcWMaQcLMpUkv6Ql5NbW8gnD0etCowq1BU4natjLm0BKVXufJ+khFlCtoZK3bOJucXawOOAnANLuUWJhckF+NXjjf1kmLUG90SYCmSZZvLj9DNGNvd6x+mDmfsXeSpuo33wXcebkfbLVZggXiNafwE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="370" y="799" width="23" height="27" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="93">
<mxCell style="vsdxID=132;fillColor=#59b4d9;gradientColor=none;shape=stencil(lZNLcsIwDIZP463GlvxcU7gHA6HJNE2YEFq4fZPaKbEypO1Okn/rky1J0OZS7s+FQHnpu/at+KyOfSnoRSBWTVl0VT9YgraCNqe2K1679toco3/ej8rRem8/xgy3eE9JOd5BeY++9WDCd2QX5XXVrMgNGJqrD9cuZlfxPCDYdCFFFILWMXTDGPKYJMlXDqRPEkplBfAqqYirnrCNA4sMPsucYFqBZ3gJiuFJg87pco2MDoxj5FnSiaMXZAuGkeUvj87bkzdnataTKhU4zYuUeYkElvjnyLxAA+RYjevYoS1B5dwQQCH7nJ9Bm4bELLry0ExT4sHh34f3n7O+kA/GY61OVV3HrZyf8zUcQnGFafsF);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="394" y="799" width="23" height="27" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="94">
<mxCell style="vsdxID=133;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZdLctswDIZPoy2GBPhcp8k9Mo1Te+raGcdp3dsXqsQXZEnWTqIBfcZPAAQ7evrcv37sOlSf18v55+7P4e267+hbh3g47XeXw5WfOnru6On9fNn9uJy/Tm/D+8drb9k//Tr/7r9wG/xMBDS9F6q/w4pW6v/7y2D+/esy2OvsYGl00K2HumG28Xa0QWlDw4JVoBKYHiJ7D3qNHANE3ZJ9zKCbAGWyRejf59nFY1ywGoxu2cUGc4hBr5EXQ55gEcGHFsuymNiChdS8HdG12EUqQ4xpuUJmEWj9r6i1eChMESRHNO7GHLBWfwa4uqOgosAGCNRiayVShkVwE3m1X8zk4+G0peQ2mrcFXdfVaE6pJmakYBcntCg+WYtecxRFXVkV3ZUUY5VPYOw634B363w35RugZb4Dj4KffQrfA3nBr6wSP4DCCd8u8h3rbyb8KErAEWjR2rQFiy3f2QQrfJc69hzfg9x+D9YIvAMnw3cQRWflT6EV+Ny25/q6nuC5i1vR5VxJ61ScGqxv8dzrjcAjqx+X8MFCEOqTymWf+CFOso/CZPdrq9QdWKSwyK98UkJacCL+4CAIvtO5bDOfJRHxu7yVc/zKR0ufwi8dN/Mrq8Ins5HvTanYtGRBJj9OJoqgcqotzBTFagZPXNZiqqi/nHJNaF/9w5TmAfzW0GufeenZyooD/o70vRVu5bvcZTLfgheHIHcZIyqfe5GVk40pxxTlBDWLpad1mdZS6vM04wRfgVCfDwwkgVe5GHPlhZXKr3109tFhgieR+YaFDet8n771OB/vzCB8olDLZ621kP/OjFes7s4VDwwKmx34oVw03g/H43BPqX+XFxNeGi419PwP);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="370" y="763" width="47" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="95">
<mxCell style="vsdxID=134;fillColor=#7fba00;gradientColor=none;shape=stencil(jZHRDoIwDEW/Zq/NWAeTZ4T/IDJkERkZoPj3snRGRmLiW3t6t5O0DIupq0fNBJ9mZ2/6aZq5Y3hmQpih087MW8WwZFi01umrs8vQUD/WPumru334H1Z6x/0LwV/7rqLgZXGUTGiYQqpCOhBMIZeEVkFIclAYUgEpDoGsSCThH+0B/DBLAVkSq7MTqCxWK8A8NqMEGZsP3sjam+G/xWzFd52t6Xu6xn5+XP+G6HRYvgE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="375" y="772" width="1" height="2" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="96">
<mxCell style="vsdxID=135;fillColor=#7fba00;gradientColor=none;shape=stencil(jVLREoIgEPwaXhngNPXZ7D+c1GQydVDL/j7oKIUZs7dj2bu9hSWQDnXel0SwYVTdtXzIYqwJHIkQsq1LJUddEcgIpFWnyovqprbAc58bpqlu3d1MmLGPmQ7BnngKGY3iN3JC8nlSyOZI4JwebIdFYkYDC80CIZHQyJIswpnVmeEjZAngEjZkI0bBlV0mWok4poErut7Mk/nq7hrWY3nkSSc0FK643o95lncM/7SrHzDx/Hpu9T+A/8artcD93C2zjWz/j4IulhBVsmkwg+t7P3QawsBC9gI=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="379" y="773" width="29" height="4" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="97">
<mxCell style="vsdxID=136;fillColor=#b8d432;gradientColor=none;shape=stencil(lZbbUgIxDIafZm8zbdLjNep7OAqyI4KzouLbG+xht2FY3LslJP2a9E/ajlYf28f3dYfq4zgcXtff/fNx29Fdh9jvt+uhP/JXR/cdrTaHYf0yHD73z+n3++PZ8/z1dvg6r3BKcQaCPQeh+kmGEMDjn+Uh+T99DilAJwcHpHNEtkSE4JLphHkV0CY7ZUt04HLciZJJK8ACryY1x55G6DaiotnHUMsefUayxWXkCCa25GAgirSJwLuW7S1Y19JNrIGFPnpdq7oDLTKfrlzKrkAJ/nSXGRYiUFyU/TTiWt3Zx/obdWcf5xaRWTZkWjIvoqI8cyWqzmoL8sxVS3YanJ1Xm2rJZqLhImt7UXFSEEjk7UFpkTeLYLbPAoIXjaYJouB7P+qybKmeVcF7ztSI5MuGrtC9qqhCt3WRClegxZFbQKE2x50j4Dx04g2xG2zhNCaVSY7GQZRNWKdDhXNDyEYHPVt3G0FLrZeQCrcBSGSuwAu49WDFfKtO1+AWBHuybGEb0E6yy24qGy8m3GyfWZaIJAss7yQI7M25Nsvk8yKaZYquRl+ldKLW4789LTqa21deXYLJMrM3mAZwVs7j6dTRjRejG0ELNfMwD9iSeZaLVuLrOs/HDN/1+0XX+1J//hjfEpt+t0tPken/8u3BpvRuoftf);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="375" y="766" width="37" height="9" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Azure Data&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="98">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=138;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="351" y="830" width="169" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Lake Storage&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="99">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=139;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="344" y="847" width="203" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="100">
<mxCell style="vsdxID=142;fillColor=#e6ad10;gradientColor=#c87e0e;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWED+G5QZTmZObhUQrjY1VMtlISHECuUiADERxpmTk5kNBElkcPPqAQJOiNXQE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="642" y="451" width="28" height="62" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="101">
<mxCell style="vsdxID=143;fillColor=#000000;gradientColor=none;fillOpacity=20;shape=stencil(nZFNEoIwDIVPky1TGlBYI96DkWI71pYpoHh7qcG/jrJg917ypZn0ARadrFoBnHW9sydxVXUvAXfAuTJSONVPCrAELBrrxNHZwdTk28qTXp3txb8w0lzMmJ/h7EY+jdLNo7AnWiuzQD/9T3g1ugBm2yjJ/sOHwdFxMTXzJMJ8xuOvVSMPL5oL/LVgxBDBNX8U0pN4h9EorSnLz34Y3lSi4LG8Aw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="624" y="466" width="28" height="46" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="102">
<mxCell style="vsdxID=144;fillColor=#000000;gradientColor=none;fillOpacity=18;shape=stencil(nZFNEoIwDIVPky1TGlBYI96DkWI71pYpoHh7qcG/jrJg917ypZn0ARadrFoBnHW9sydxVXUvAXfAuTJSONVPCrAELBrrxNHZwdTk28qTXp3txb8w0lzMmJ/h7EY+jdLNo7AnWiuzQD/9T3g1ugBm2yjJ/sOHwdFxMTXzJMJ8xuOvVSMPL5oL/LVgxBDBNX8U0pN4h9EorSnLz34Y3lSi4LG8Aw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="624" y="467" width="28" height="46" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="103">
<mxCell style="vsdxID=145;fillColor=#f6d751;gradientColor=#e6ad10;shape=stencil(nZFNEoIwDIVPky1TGlBYI96DkWI71pYpoHh7qcG/jrJg917ypZn0ARadrFoBnHW9sydxVXUvAXfAuTJSONVPCrAELBrrxNHZwdTk28qTXp3txb8w0lzMmJ/h7EY+jdLNo7AnWiuzQD/9T3g1ugBm2yjJ/sOHwdFxMTXzJMJ8xuOvVSMPL5oL/LVgxBDBNX8U0pN4h9EorSnLz34Y3lSi4LG8Aw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="624" y="466" width="28" height="46" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="104">
<mxCell style="vsdxID=146;fillColor=#f9e589;gradientColor=#f6d751;shape=stencil(nZHRDoIwDEW/Zq/LaDHAM+J/EBmyiIyMgfj3bumMk0QTebu9PV27XIbl1NWjZCAma/RV3lVjO4ZHBqCGThplnWJYMSxbbeTF6HloqB5rT3p104t/YaU54SdAPOLqRGCvhq9gIn6gr+YuOOd4iOnzbOjeZMsHA3kG5KxATpFyLAIEH9evGJZkPM0DgX9+fR/oxDuCVvU9JRj3t5E5i+LG6gk=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="607" y="482" width="28" height="31" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Power BI&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="105">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=147;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="605" y="518" width="135" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="106">
<mxCell style="vsdxID=148;fillColor=none;gradientColor=none;shape=stencil(nZBNDkIhDIRP0z3SIyDegwSQRgQC+PNu/yCNkRjjwt1M+7XpFFC1YIoDKVqv+eIeZHsAPIKUlIKr1IcC1IDK5+rONd+SZV/MJKe65vvc8OQ5MSek2FZ3YjBSWsCD+Bt9+a/wT3SI9+GeYuTca/8z6Cjxk1Dv);strokeColor=#312d2a;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="152" y="67" width="101" height="729" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="107">
<mxCell style="vsdxID=149;fillColor=none;gradientColor=none;shape=stencil(dU9bDoAgDDvN/pEdwcc9TEBZRCCIr9sLWYzGxL92bbcOsF5MHzRIsaToJ72TSgawASnJGR0pZQTYAtaDj3qMfnWKeeiLs6DZb2XDwTlRElKczCrBvGOrJfey3uKPOYPnyEDWcse3/i2VR/wQthc=);strokeColor=#312d2a;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="152" y="339" width="101" height="1" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="108">
<mxCell style="vsdxID=150;fillColor=none;gradientColor=none;shape=stencil(dU9bDoAgDDvN/pEdwcc9TEBZRCCIr9sLWYzGxL92bbcOsF5MHzRIsaToJ72TSgawASnJGR0pZQTYAtaDj3qMfnWKeeiLs6DZb2XDwTlRElKczCrBvGOrJfey3uKPOYPnyEDWcse3/i2VR/wQthc=);strokeColor=#312d2a;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="152" y="187" width="101" height="1" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="109">
<mxCell style="vsdxID=151;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTRboMwDPyavFqOHUjy3HX/Ua10oDGoKN3o3zcsUUeCAHV7C8fZd7EdC95dysO5EISXvms/iu/q2JeCXwRR1ZRFV/XuJHgveHdqu+K9a6/N0X+fDyNzPH22X2OGwcdZC3oMIrx5IFOg1Q/y6vlv184HSE+QiCEgABmBJA8NlHICoDQYEzg8Uw6IyoDyqXRdNVOrzpmJvBLkcs2qi1A6NouxUctgTWwVE5sMuYl9bsoysElqBMQzZU6ULai0RnNx6aq9UiMDmMf9xBX2JL1HjAb75NUsQkbbd3PN05uXsxp4S98m+o9ZG2je9XQeH9qTWVrSTmq1+VCe5ccPEWNyHqKXcsvsX3zlOrTMxz9z132sc93hd0udqrr2S276P91qDvIbkfd3);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="152" y="484" width="136" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="110">
<mxCell style="vsdxID=152;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTLcsMgDPwarhqQeJhzmvxHpnFqT107Q5w2/fvi4rpAJnjS3uT1il0kIUabc7M/1Qz5eXTDa/3RHsaG0RNDbPumdu3oI0ZbRpvj4OoXN1z6Q/g+7SfmFL0N79MJ15BnLRg9ZSH/DIiSYOQ3sgsJzxcXMkQgCM7nhBlQCAIDdMWcMwPSQFXNHLqVniGpAE2s3bV9bFZBJRKzCBpLXn2G0qlbnjr1DGFSrzzzKcFS6nNVVoK2WZEAKVOOSD8QyLxIt+LCl7tQowqkTBvKC+zo+IBUBqx48G6Wg8L1y/nBMqu3swbIrrR0aVg+kVFTl7bnE7loR8N0Tzsr1vpbeTghfY08JWsoPQYLhP/iSwK6z+d/5pZ9lLk++F1Vx7brwqaL/+erzUNhLdL2Cw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="431" y="485" width="170" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="111">
<mxCell style="vsdxID=153;fillColor=#312d2a;gradientColor=none;shape=stencil(pZTRboMwDEW/Jq9WYieEPHftf1QrHWgMKkq37u8XllTFaQGhvsXhmHvtJBa0OZf7UyFQnvuu/Sx+qkNfCnoTiFVTFl3V+5WgraDNse2Kj669NIcQn/YDOay+2u/hD9eQZzRYPWSh/A07EvA/3gX8/dIFXsUEBIUxIW7JEF4xhNpCnkcCOUGRMIBZJOipal01I5MIGTKPBNrMmZTcIEFmuEfJ/RE4yy2OJG+mQdnZxgASl9VAlss60ElnRkzUUQjSzUvz7hjJeqMA82k4t+AU45fqchIMLhbmr5FdqsxZoHxdU5V8OEqXSN8RfDjtaeH0BiUtXXoVK/HkzWVgGX0r4fnPU9qfRzaNawJ6BV/n5SXaL+5j6VjVdZhq4+/pGPNbYQTS9g8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="385" y="555" width="15" height="207" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="112">
<mxCell style="vsdxID=154;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTLcoMwDPwaXzWy5Qc+p8l/ZBpSmFLIENLSv6+pPQk2g5m0N7GsvCtLFqPdtTpeSibwOvTde/lVn4aK0QsTom6rsq8HFzHaM9qdu75867tbe/Lfl+PEnKKP7nM6YfR51oKZkgR+e0BJMPoXOXj+6633CdwTOGJICIASwKWHRpFyAiANFDpwaKEcEKlAyLl0U7dzq85Z7FWA5jmrLkOa2CzGRi2BNbFVTGwS6MTnpiwBJbKuMlooU6JsQapNcS4AdeaSCkAVNxQz7Nn5HikMWPlkcRZBqe3qHu3LlGcNkN3Qt4n+fdpGsex7OpF37dk0rWknl7X5VJ7lx08RY7IO2Wtnc/UvvnQdWufjn7l5H3muCx576lw3jV9z8//pXnOQ34m0/wE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="152" y="1083" width="136" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="113">
<mxCell style="vsdxID=155;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTRcoMgEPwaXm8ODkSe0+Q/Mo2pTq1mjGnt3xcLkwCOOGnfznWP3buDY7S71sdLxQRex6F/r76a01gzemFCNF1dDc1oI0Z7RrtzP1RvQ3/rTu77cpyZc/TRf84nTC7PGNBzksBvBygJWv4iB8d/vQ0ugTsCR/QJHlACuHDQJFKOB6SGsvQcWih7RCoQRSjdNl1o1TqLvQooeM6qzZA6NouxUUNgdGwVE5sEReJzU5aAEllbGS2UKVE2INMeLcW57XamRyWgiueJGXZwvENKDebJ0gyCEtu1PYaXKc5ooC19k+jf79okllNP7+NdO7hLa9pJrzYfyrP8+CFiTC589trZXP2LL+2E1vn4Z27eR55rg8eWOjdt65Zc+D/dahZyG5H2Pw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="152" y="924" width="136" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="114">
<mxCell style="vsdxID=156;fillColor=none;gradientColor=none;shape=stencil(dU9bDoAgDDvN/pEdwcc9TEBZRCCIr9sLWYzGxL92bbcOsF5MHzRIsaToJ72TSgawASnJGR0pZQTYAtaDj3qMfnWKeeiLs6DZb2XDwTlRElKczCrBvGOrJfey3uKPOYPnyEDWcse3/i2VR/wQthc=);strokeColor=#312d2a;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="152" y="653" width="101" height="1" as="geometry" />
</mxCell>
</UserObject>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,368 @@
<svg width="712" height="1112" viewBox="0 0 712 1112" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="data-lake-db-at-azure-process">
<rect width="712" height="1112" fill="white"/>
<g id="Data Sources">
<rect x="0.5" y="0.5" width="215" height="1111" rx="3.5" fill="#F5F4F2"/>
<rect x="0.5" y="0.5" width="215" height="1111" rx="3.5" stroke="#9E9892"/>
<text id="OCI Region" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="58.0703" y="21.816">Data Sources</tspan></text>
</g>
<g id="Data Sources_2">
<rect x="264.5" y="0.5" width="215" height="1111" rx="3.5" fill="#F5F4F2"/>
<rect x="264.5" y="0.5" width="215" height="1111" rx="3.5" stroke="#9E9892"/>
<text id="OCI Region_2" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="336.883" y="21.816">Data Tier</tspan></text>
</g>
<g id="Data Sources_3">
<rect x="496.5" y="0.5" width="215" height="1111" rx="3.5" fill="#F5F4F2"/>
<rect x="496.5" y="0.5" width="215" height="1111" rx="3.5" stroke="#9E9892"/>
<text id="OCI Region_3" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="535.453" y="21.816">Consumption Tier</tspan></text>
</g>
<g id="Other relational databases">
<g id="Services-Enterprise-resource-Planning-Cloud-Service-ERP">
<g id="Group 514">
<path id="Vector" d="M92.0093 83.148L98.786 79.7514L92.0093 76.3691L94.7771 74.9419H78.7698L78.9268 72.8726C79.1192 70.4761 79.9217 68.1688 81.2577 66.1703C82.5938 64.1718 84.4189 62.5487 86.5595 61.4554C87.0189 61.2188 87.419 60.8816 87.7303 60.469C88.0415 60.0564 88.2557 59.5789 88.3571 59.0721C88.837 56.6085 90.1584 54.3885 92.0949 52.7925C94.0314 51.1965 96.4624 50.3237 98.9715 50.3237C99.3088 50.302 99.6471 50.302 99.9844 50.3237H100.327C100.776 50.3288 101.221 50.24 101.634 50.0631C102.046 49.8861 102.418 49.6249 102.724 49.2961C104.185 47.7348 106.001 46.5492 108.018 45.8402C110.035 45.1313 112.193 44.9198 114.309 45.2238C116.425 45.5278 118.437 46.3383 120.173 47.5865C121.909 48.8346 123.318 50.4835 124.281 52.393C124.508 52.8751 124.842 53.2991 125.257 53.6329C125.672 53.9667 126.158 54.2016 126.677 54.3197C128.198 54.6517 129.647 55.2509 130.957 56.0893C133.868 57.9264 135.974 60.7993 136.85 64.1286C137.727 67.4579 137.308 70.9957 135.68 74.0286L135.138 75.0418H121.784L124.366 76.469L117.59 79.7942L124.423 83.2194L108.074 91.1686L92.0093 83.148Z" fill="white"/>
<path id="Vector_2" d="M112.397 45.7577C114.737 45.7481 117.033 46.3957 119.023 47.627C121.013 48.8582 122.617 50.6236 123.653 52.7222C123.933 53.2828 124.334 53.7738 124.828 54.159C125.322 54.5443 125.895 54.814 126.507 54.9485C127.953 55.2744 129.332 55.8439 130.587 56.6326C133.354 58.3654 135.357 61.0872 136.189 64.2446C137.021 67.4019 136.62 70.7578 135.067 73.6299L134.724 74.2721H119.031L122.826 76.3843L115.978 79.738L118.047 80.7656L122.826 83.1489L108.074 90.3846L93.6078 83.1489L98.3301 80.7799L100.384 79.7523L93.6078 76.37L97.7879 74.3006H79.5408L79.6407 72.9876C79.7984 70.7062 80.5365 68.5029 81.785 66.587C83.0335 64.6712 84.7509 63.1065 86.774 62.0414C87.3257 61.7579 87.8068 61.3544 88.182 60.8604C88.5573 60.3665 88.8172 59.7947 88.9426 59.1872C89.2551 57.5854 89.9502 56.0831 90.9688 54.8082C91.9873 53.5334 93.299 52.5239 94.7919 51.8659C96.0794 51.3052 97.468 51.0138 98.8722 51.0096H99.8138H100.228C100.763 51.0023 101.292 50.8873 101.782 50.6716C102.272 50.4558 102.714 50.1437 103.081 49.7537C104.273 48.4799 105.717 47.4672 107.32 46.7795C108.924 46.0917 110.652 45.7438 112.397 45.7577ZM112.397 44.3306C110.471 44.3321 108.566 44.7309 106.801 45.5019C105.036 46.2729 103.449 47.3997 102.139 48.8118C101.9 49.0666 101.61 49.2691 101.288 49.4066C100.967 49.5441 100.62 49.6137 100.27 49.611H99.985C99.6286 49.5897 99.2713 49.5897 98.915 49.611C96.2374 49.6159 93.6442 50.5484 91.5764 52.2501C89.5087 53.9517 88.094 56.3173 87.573 58.9445C87.4917 59.3455 87.3213 59.7231 87.0743 60.0492C86.8274 60.3753 86.5102 60.6416 86.1463 60.8284C83.9103 61.9969 82.0087 63.7159 80.6208 65.8234C79.233 67.9308 78.4047 70.3571 78.214 72.8735L78.1141 74.1865L78 75.7278H91.7531L90.4263 76.3985L92.9658 77.6687L97.2458 79.7809L92.9658 81.893L90.4263 83.1775L92.9658 84.4476L107.432 91.6833L108.074 91.9972L108.702 91.6833L123.454 84.4334L126.036 83.1632L123.454 81.8788L119.174 79.738L123.454 77.6544L125.908 76.4556L124.481 75.6992H135.523L135.923 74.9571L136.265 74.3149C137.321 72.3737 137.912 70.2137 137.991 68.0051C138.07 65.7966 137.635 63.5999 136.721 61.5881C135.807 59.5762 134.438 57.8043 132.722 56.4119C131.007 55.0195 128.991 54.0447 126.835 53.5642C126.432 53.4784 126.053 53.3064 125.723 53.0601C125.393 52.8137 125.12 52.4988 124.923 52.1371C123.775 49.7935 121.992 47.8194 119.778 46.4394C117.563 45.0593 115.006 44.3287 112.397 44.3306Z" fill="white"/>
<path id="Vector_3" d="M115.278 82.1214L117.29 83.1347L108.088 87.6445L99.0998 83.149L101.069 82.15L98.3294 80.7799L93.6071 83.149L108.074 90.3846L122.825 83.149L118.046 80.7656L115.278 82.1214Z" fill="#2D5967"/>
<path id="Vector_4" d="M108.074 83.6063L122.825 76.3849L118.046 73.9873L115.278 75.3431L117.29 76.3564L108.088 80.8661L99.0998 76.3706L101.069 75.3859L98.3294 74.0158L93.6071 76.3706L108.074 83.6063Z" fill="#2D5967"/>
<path id="Vector_5" d="M122.825 69.6053L108.202 62.2983L93.6071 69.5911L108.074 76.8267L122.825 69.6053ZM108.202 65.0385L117.29 69.5768L108.088 74.0866L99.0998 69.5911L108.202 65.0385Z" fill="#2D5967"/>
<path id="Vector_6" d="M115.278 75.3431L117.29 76.3564L108.088 80.8661L99.0998 76.3706L101.069 75.3859L98.3294 74.0158L93.6071 76.3706L108.074 83.6063L122.825 76.3849L118.046 73.9873L115.278 75.3431Z" fill="#2D5967"/>
<path id="Vector_7" d="M115.278 82.1214L117.29 83.1347L108.088 87.6445L99.0998 83.149L101.069 82.15L98.3294 80.7799L93.6071 83.149L108.074 90.3846L122.825 83.149L118.046 80.7656L115.278 82.1214Z" fill="#2D5967"/>
<path id="Vector_8" d="M130.6 56.6328C129.341 55.8426 127.956 55.2731 126.506 54.9487C125.894 54.8142 125.32 54.5445 124.827 54.1592C124.333 53.774 123.932 53.283 123.652 52.7224C122.616 50.6238 121.011 48.8584 119.021 47.6272C117.031 46.3959 114.736 45.7483 112.396 45.7579C110.666 45.7614 108.955 46.1204 107.37 46.8127C105.785 47.505 104.358 48.5159 103.18 49.7825C102.759 50.2308 102.239 50.5751 101.662 50.7881C101.085 51.0011 100.467 51.077 99.8555 51.0098C98.1399 50.8561 96.4131 51.1358 94.8336 51.8233C93.3407 52.4813 92.029 53.4908 91.0105 54.7656C89.992 56.0404 89.2968 57.5428 88.9843 59.1445C88.8589 59.7521 88.599 60.3239 88.2238 60.8178C87.8485 61.3118 87.3674 61.7153 86.8158 61.9988C84.7926 63.0639 83.0752 64.6286 81.8268 66.5444C80.5783 68.4602 79.8401 70.6635 79.6824 72.945L79.5397 74.3008H91.5523V71.8176H82.2789C82.5979 70.2005 83.2764 68.6759 84.2643 67.3567C85.2521 66.0375 86.524 64.9575 87.9856 64.1966C88.8649 63.7409 89.6297 63.0921 90.2226 62.2987C90.8156 61.5054 91.2214 60.588 91.4096 59.6155C91.6482 58.4031 92.1762 57.2663 92.9488 56.3021C93.7214 55.338 94.7155 54.575 95.8466 54.0782C97.0385 53.5524 98.3439 53.3364 99.6415 53.4502C100.624 53.5533 101.616 53.4279 102.542 53.0838C103.467 52.7397 104.301 52.1862 104.977 51.4665C105.926 50.4467 107.074 49.6328 108.35 49.0755C109.626 48.5182 111.003 48.2294 112.396 48.2269C114.277 48.2124 116.125 48.7298 117.725 49.7196C119.325 50.7093 120.613 52.1312 121.441 53.8213C121.889 54.7126 122.53 55.4929 123.317 56.1052C124.104 56.7174 125.018 57.1463 125.992 57.3606C127.166 57.6388 128.282 58.1219 129.288 58.7878C131.413 60.1332 132.981 62.2006 133.704 64.6101C134.428 67.0195 134.258 69.6092 133.225 71.9032H124.665V74.3008H134.738L135.08 73.6586C136.642 70.7838 137.047 67.4212 136.215 64.2571C135.382 61.0931 133.374 58.3661 130.6 56.6328Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label">
<text id="IconLabel" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="45.3906" y="109.816">Oracle Cloud ERP</tspan></text>
</g>
</g>
<g id="Group 1550">
<g id="Data Sources_4">
<rect x="272.71" y="257.604" width="199" height="847" rx="3.5" fill="white"/>
<rect x="272.71" y="257.604" width="199" height="847" rx="3.5" stroke="#9E9892"/>
<text id="Fault Domain" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="337.241" y="278.92">Ingestion</tspan></text>
</g>
<g id="Microsoft SQL Server">
<g id="Database-Action-gear">
<g id="Group 309">
<path id="Vector_9" d="M117.15 912.736L117.065 911.966C113.58 912.358 110.077 912.558 106.57 912.565C103.911 912.565 80.5455 912.351 80.5455 904.73V862.223C80.5455 854.388 103.911 854.16 106.57 854.16C109.229 854.16 132.609 854.388 132.609 862.223V889.758L134.5 891.667L132.68 893.946L135.524 894.274V902.921L132.68 903.248L134.5 905.528L128.385 911.653L126.465 910.115L126.067 910.243L125.783 912.736H117.15Z" fill="white"/>
<path id="Vector_10" d="M106.569 854.872C115.386 854.872 131.896 856.41 131.896 862.222V890.057L133.546 891.709L131.896 893.789V894.573L134.869 894.9V902.293L131.896 902.621V903.405L133.546 905.484L128.341 910.698L126.606 909.273L125.412 909.644L125.156 911.98H117.775L117.69 911.14C114 911.593 110.286 911.831 106.569 911.852C97.8229 911.852 81.2554 910.427 81.2554 904.729V862.222C81.2554 856.41 97.8229 854.872 106.569 854.872ZM106.569 853.447C102.103 853.447 79.8333 853.875 79.8333 862.222V904.729C79.8333 912.892 102.103 913.276 106.569 913.276C109.865 913.27 113.16 913.094 116.438 912.749L116.509 913.447H126.464L126.606 912.179L126.72 911.197L127.488 911.809L128.483 912.607L129.379 911.709L134.598 906.481L135.494 905.584L134.698 904.587L134.086 903.818L135.068 903.704L136.333 903.561V893.59L135.068 893.447L134.044 893.333L134.655 892.564L135.452 891.567L134.556 890.669L133.318 889.43V862.222C133.318 853.875 111.119 853.447 106.569 853.447Z" fill="white"/>
<path id="Vector_11" d="M131.498 902.906L131.569 902.721L131.498 902.906Z" fill="#2D5967"/>
<path id="Vector_12" d="M110.582 909.216C109.273 909.216 107.936 909.287 106.571 909.287C100.932 909.345 95.3031 908.771 89.7904 907.577C84.7704 906.424 83.647 905.084 83.647 904.728V893.931C88.4679 896.78 99.5318 897.663 106.287 897.677V895.298C100.744 895.349 95.2117 894.79 89.7904 893.631C84.7562 892.435 83.6328 891.082 83.6328 890.711V880.141C88.539 882.99 99.8447 883.888 106.557 883.888C109.259 883.888 112.7 883.745 116.17 883.404H116.341C121.446 882.876 126.594 881.879 129.495 880.17V885.17L129.595 885.255L131.885 887.549V862.791C131.891 862.71 131.891 862.629 131.885 862.549C131.892 862.435 131.892 862.321 131.885 862.207C131.885 857.278 118.759 855.084 106.557 855.084C94.3554 855.084 81.2578 857.278 81.2578 862.207C81.2508 862.321 81.2508 862.435 81.2578 862.549C81.2517 862.629 81.2517 862.71 81.2578 862.791V904.728C81.2578 910.255 97.8253 911.708 106.571 911.708C108.406 911.708 110.567 911.708 112.843 911.495L110.582 909.216ZM106.571 857.421C112.213 857.343 117.844 857.922 123.352 859.144C128.4 860.384 129.51 861.78 129.51 862.207C129.51 862.634 128.4 864.016 123.352 865.255C117.844 866.478 112.213 867.056 106.571 866.979C100.93 867.057 95.2986 866.478 89.7904 865.255C84.7562 864.016 83.647 862.634 83.647 862.207C83.647 861.78 84.7562 860.384 89.7904 859.144C95.2986 857.921 100.93 857.343 106.571 857.421ZM123.352 879.842C117.838 881.022 112.209 881.581 106.571 881.509C100.933 881.581 95.3046 881.022 89.7904 879.842C84.7562 878.646 83.6328 877.292 83.6328 876.908V865.512C87.8991 868.161 97.5124 869.386 106.557 869.386C115.602 869.386 125.172 868.161 129.495 865.512V876.908C129.51 877.292 128.386 878.646 123.352 879.842Z" fill="#2D5967"/>
<path id="Vector_13" d="M121.558 892.037C120.264 892.051 119.004 892.448 117.935 893.178C116.866 893.908 116.037 894.938 115.552 896.139C115.066 897.34 114.947 898.659 115.208 899.928C115.469 901.197 116.099 902.36 117.018 903.272C117.938 904.183 119.106 904.801 120.376 905.049C121.645 905.297 122.96 905.162 124.154 904.663C125.348 904.164 126.367 903.323 127.085 902.244C127.802 901.166 128.185 899.899 128.185 898.603C128.185 897.735 128.013 896.875 127.679 896.074C127.345 895.272 126.856 894.545 126.239 893.935C125.623 893.324 124.892 892.842 124.088 892.516C123.285 892.19 122.425 892.027 121.558 892.037ZM121.558 902.777C120.73 902.78 119.919 902.536 119.23 902.077C118.54 901.618 118.002 900.964 117.684 900.199C117.365 899.433 117.281 898.589 117.442 897.776C117.603 896.962 118.002 896.214 118.587 895.628C119.173 895.041 119.919 894.642 120.731 894.481C121.544 894.32 122.386 894.404 123.15 894.723C123.915 895.041 124.567 895.58 125.026 896.271C125.484 896.962 125.727 897.774 125.724 898.603C125.724 899.71 125.285 900.772 124.504 901.555C123.723 902.338 122.663 902.777 121.558 902.777Z" fill="#2D5967"/>
<path id="Vector_14" d="M131.598 894.544L131.498 894.288L133.546 891.709L128.341 886.496L125.767 888.547L125.511 888.447L125.156 885.171H117.775L117.419 888.447L117.163 888.547L114.589 886.496L109.385 891.709L111.432 894.288L111.333 894.544L108.062 894.9V902.293L111.333 902.65L111.432 902.906L109.385 905.484L114.589 910.698L117.163 908.647L117.419 908.746L117.775 912.023H125.156L125.511 908.746L125.767 908.647L128.341 910.698L133.546 905.484L131.498 902.906L131.598 902.65L134.869 902.293V894.9L131.598 894.544ZM132.451 900.157L129.806 900.442L129.564 901.182C129.424 901.646 129.238 902.094 129.01 902.521L128.654 903.219L130.332 905.299L128.185 907.578L126.108 905.897L125.341 906.154C124.914 906.383 124.466 906.569 124.004 906.709L123.278 906.952L122.98 909.601H119.908L119.652 906.98L118.913 906.738C118.451 906.595 118.003 906.409 117.576 906.182L116.808 905.826L114.774 907.578L112.542 905.299L114.205 903.219L113.964 902.521C113.735 902.094 113.55 901.646 113.409 901.182L113.096 900.456L110.451 900.171V897.037L113.096 896.752L113.338 896.011C113.481 895.549 113.667 895.1 113.893 894.672L114.248 893.989L112.542 891.909L114.732 889.701L116.808 891.367L117.491 891.011C117.918 890.785 118.365 890.599 118.827 890.456L119.567 890.214L119.851 887.564H122.966L123.264 890.214L123.99 890.456C124.452 890.596 124.9 890.783 125.326 891.011L126.023 891.367L128.185 889.687L130.361 891.909L128.682 894.003L129.038 894.687C129.264 895.115 129.45 895.563 129.593 896.026L129.834 896.766L132.479 897.051L132.451 900.157Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_2">
<text id="IconLabel_2" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="73.5703" y="931.263">Microsoft</tspan></text>
<text id="IconLabel_3" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="67.8594" y="947.263">SQL Server</tspan></text>
<text id="IconLabel_4" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="57.5391" y="963.263">(on-premises)</tspan></text>
</g>
</g>
<g id="Other relational databases_2">
<g id="Database">
<g id="Group 15">
<path id="Vector_15" d="M108.189 206.027C105.518 206.027 82.0462 205.813 82.0462 198.17V155.541C82.0462 147.684 105.518 147.456 108.189 147.456C110.86 147.456 134.346 147.684 134.346 155.541V198.17C134.346 205.813 110.875 206.027 108.189 206.027Z" fill="white"/>
<path id="Vector_16" d="M108.19 148.17C117.048 148.17 133.633 149.713 133.633 155.541V198.17C133.633 203.884 116.99 205.313 108.19 205.313C99.3905 205.313 82.7619 203.884 82.7619 198.17V155.541C82.7619 149.713 99.4047 148.17 108.19 148.17ZM108.19 146.741C103.705 146.741 81.3333 147.17 81.3333 155.541V198.17C81.3333 206.355 103.705 206.741 108.19 206.741C112.676 206.741 135.062 206.327 135.062 198.17V155.541C135.062 147.17 112.762 146.741 108.19 146.741Z" fill="white"/>
<path id="Vector_17" d="M133.634 155.542C133.634 149.713 117.048 148.17 108.191 148.17C99.3338 148.17 82.7623 149.713 82.7623 155.542V198.17C82.7623 203.885 99.4052 205.313 108.191 205.313C116.977 205.313 133.634 203.885 133.634 198.17V155.542ZM130.777 184.113C130.777 184.37 129.705 185.656 124.805 186.842C119.345 188.005 113.772 188.551 108.191 188.47C102.589 188.546 96.9967 187.99 91.5195 186.813C86.6195 185.628 85.6195 184.342 85.6195 184.085V173.599C90.7338 176.385 101.691 177.228 108.262 177.228C114.834 177.228 125.805 176.385 130.919 173.599L130.777 184.113ZM130.777 170.085C130.777 170.342 129.705 171.642 124.805 172.813C119.345 173.976 113.772 174.522 108.191 174.442C102.589 174.518 96.9967 173.962 91.5195 172.785C86.6195 171.613 85.6195 170.313 85.6195 170.056V159.17C90.7338 162.028 101.691 162.899 108.262 162.899C114.834 162.899 125.805 162.042 130.919 159.17L130.777 170.085ZM91.5338 152.67C97.0041 151.481 102.594 150.93 108.191 151.028C113.796 150.953 119.39 151.528 124.862 152.742C129.905 153.885 130.848 155.313 130.848 155.542C130.848 155.77 129.834 157.17 124.862 158.399C119.39 159.612 113.796 160.187 108.191 160.113C102.592 160.191 97.0019 159.621 91.5338 158.413C86.5623 157.17 85.6195 155.828 85.6195 155.542C85.6195 155.256 86.6338 153.899 91.6052 152.685L91.5338 152.67ZM124.877 200.87C119.395 202.048 113.797 202.604 108.191 202.528C102.589 202.603 96.9967 202.048 91.5195 200.87C86.6195 199.699 85.6195 198.399 85.6195 198.17V187.628C90.7338 190.413 101.691 191.256 108.262 191.256C114.834 191.256 125.805 190.413 130.919 187.628V198.17C130.919 198.428 129.848 199.728 124.948 200.899" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_3">
<text id="IconLabel_5" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="51.7266" y="224.557">Other relational</tspan></text>
<text id="IconLabel_6" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="71.3281" y="240.557">databases</tspan></text>
<text id="IconLabel_7" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="57.5391" y="256.557">(on-premises)</tspan></text>
</g>
</g>
<g id="Azure SQL Database">
<g id="Azure-SQL-Database">
<g id="Group">
<g id="group1000-1">
<g id="group1001-2">
<g id="group1002-3">
<g id="group1003-4">
<g id="group1004-5">
<g id="shape1005-6">
<path id="Vector_18" fill-rule="evenodd" clip-rule="evenodd" d="M108.835 310.868C96.4151 310.868 86.3333 307.324 86.3333 302.667V346.3C86.3333 350.775 96.2325 354.409 108.506 354.482H108.835C121.254 354.482 131.318 350.939 131.318 346.3V302.667C131.318 307.215 121.254 310.868 108.835 310.868Z" fill="url(#paint0_linear_17642_377913)"/>
</g>
</g>
<g id="group1006-10">
<g id="shape1007-11">
<path id="Vector_19" fill-rule="evenodd" clip-rule="evenodd" d="M131.318 302.683C131.318 307.231 121.254 310.865 108.835 310.865C96.4151 310.865 86.3333 307.322 86.3333 302.683C86.3333 298.026 96.4151 294.482 108.835 294.482C121.254 294.482 131.318 298.026 131.318 302.683Z" fill="#E8E8E8"/>
</g>
</g>
<g id="group1008-13">
<g id="shape1009-14">
<path id="Vector_20" fill-rule="evenodd" clip-rule="evenodd" d="M126.101 302.007C126.101 304.893 118.339 307.23 108.841 307.23C99.3258 307.23 91.5635 304.893 91.5635 302.007C91.5635 299.121 99.3258 296.82 108.841 296.82C118.339 296.82 126.101 299.139 126.101 302.007Z" fill="#50E6FF"/>
</g>
</g>
<g id="group1010-16">
<g id="shape1011-17">
<path id="Vector_21" fill-rule="evenodd" clip-rule="evenodd" d="M108.819 303.322C104.19 303.203 99.5756 303.883 95.1753 305.331C99.58 306.751 104.196 307.394 108.819 307.231C113.457 307.369 118.083 306.676 122.48 305.185C118.061 303.803 113.444 303.174 108.819 303.322Z" fill="#198AB3"/>
</g>
</g>
<g id="group1012-19">
<g id="shape1013-20">
<path id="Vector_22" fill-rule="evenodd" clip-rule="evenodd" d="M122.521 332.955V320.956H119.361V335.531H127.982V332.955H122.521ZM97.4623 327.056C96.8101 326.792 96.2054 326.421 95.6724 325.96C95.5301 325.809 95.4194 325.632 95.3466 325.437C95.2739 325.243 95.2408 325.035 95.2492 324.828C95.2388 324.621 95.2821 324.414 95.3748 324.229C95.4676 324.043 95.6066 323.885 95.7783 323.77C96.2077 323.472 96.7222 323.324 97.2432 323.348C98.4942 323.298 99.7269 323.664 100.75 324.389V321.339C99.6284 320.926 98.4366 320.74 97.2432 320.791C95.8706 320.716 94.5165 321.137 93.426 321.978C92.9493 322.347 92.5666 322.824 92.3094 323.37C92.0521 323.916 91.9278 324.516 91.9466 325.12C91.9466 326.928 93.0607 328.334 95.4533 329.394C96.227 329.721 96.9571 330.145 97.6267 330.654C97.7917 330.793 97.9245 330.966 98.0159 331.161C98.1073 331.357 98.155 331.57 98.1558 331.786C98.157 332.001 98.1067 332.214 98.0091 332.405C97.9115 332.597 97.7694 332.762 97.595 332.887C97.1175 333.164 96.5701 333.296 96.0195 333.266C94.6047 333.257 93.2414 332.731 92.184 331.786V335.074C93.3457 335.674 94.6414 335.963 95.9464 335.914C97.4195 336.002 98.8793 335.59 100.092 334.745C100.517 334.338 100.842 333.838 101.042 333.283C101.241 332.729 101.31 332.135 101.243 331.549C101.263 330.641 100.951 329.757 100.366 329.065C99.5487 328.198 98.5594 327.514 97.4623 327.056ZM115.854 332.681C116.65 331.336 117.049 329.79 117.005 328.225C116.929 326.902 116.534 325.617 115.854 324.481C115.304 323.377 114.448 322.457 113.389 321.832C112.319 321.225 111.11 320.91 109.882 320.919C108.56 320.891 107.255 321.219 106.101 321.869C105.013 322.475 104.119 323.381 103.526 324.481C102.905 325.727 102.592 327.105 102.613 328.499C102.617 329.729 102.905 330.942 103.453 332.042C103.991 333.133 104.835 334.041 105.882 334.654C106.943 335.297 108.151 335.656 109.389 335.695L112.421 339.238H116.658L112.329 335.348C113.786 334.917 115.039 333.969 115.854 332.681ZM112.329 331.786C112.011 332.186 111.604 332.507 111.141 332.722C110.679 332.938 110.172 333.043 109.663 333.028C109.149 333.044 108.639 332.936 108.176 332.714C107.712 332.491 107.307 332.161 106.996 331.75C106.26 330.73 105.904 329.482 105.992 328.225C105.907 326.968 106.263 325.721 106.996 324.7C107.33 324.289 107.751 323.96 108.228 323.735C108.705 323.511 109.227 323.397 109.754 323.403C110.262 323.383 110.768 323.492 111.224 323.718C111.68 323.945 112.072 324.282 112.366 324.7C113.057 325.739 113.391 326.977 113.316 328.225C113.436 329.494 113.085 330.763 112.329 331.786Z" fill="url(#paint1_radial_17642_377913)"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g id="Icon Text Label_4">
<text id="IconLabel_8" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="70.0234" y="372.298">Azure SQL</tspan></text>
<text id="IconLabel_9" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="74.2422" y="388.298">Database</tspan></text>
</g>
</g>
<g id="Table storage">
<g id="Table-3-Column">
<g id="Group 468">
<path id="Vector_23" d="M137.286 426.938H78.7145V485.509H137.286V426.938Z" fill="white"/>
<path id="Vector_24" d="M136.571 427.652V484.795H79.4286V427.652H136.571ZM138 426.224H78V486.224H138V426.224Z" fill="white"/>
<path id="Vector_25" d="M84.4862 479.739H95.3433V476.881H84.4862V479.739ZM102.572 479.739H113.429V476.881H102.572V479.739ZM120.658 479.739H131.515V476.881H120.658V479.739ZM84.4862 474.667H95.3433V471.81H84.4862V474.667ZM102.572 474.667H113.429V471.81H102.572V474.667ZM120.658 474.667H131.515V471.81H120.658V474.667ZM84.4862 469.61H95.3433V466.753H84.4862V469.61ZM102.572 469.61H113.429V466.753H102.572V469.61ZM120.658 469.61H131.515V466.753H120.658V469.61ZM84.4862 464.539H95.3433V461.681H84.4862V464.539ZM102.572 464.539H113.429V461.681H102.572V464.539ZM120.658 464.539H131.515V461.681H120.658V464.539ZM84.4862 459.481H95.3433V456.624H84.4862V459.481ZM102.572 459.481H113.429V456.624H102.572V459.481ZM120.658 459.481H131.515V456.624H120.658V459.481ZM84.4862 454.41H95.3433V451.553H84.4862V454.41ZM102.572 454.41H113.429V451.553H102.572V454.41ZM120.658 454.41H131.515V451.553H120.658V454.41ZM84.4862 449.353H95.3433V446.496H84.4862V449.353ZM102.572 449.353H113.429V446.496H102.572V449.353ZM120.658 449.353H131.515V446.496H120.658V449.353ZM84.4862 444.296H95.3433V441.439H84.4862V444.296ZM102.572 444.296H113.429V441.439H102.572V444.296ZM120.658 444.296H131.515V441.439H120.658V444.296ZM82.2862 439.224H97.5147V481.939H82.2862V439.224ZM100.358 439.224H115.6V481.939H100.4L100.358 439.224ZM118.443 439.224H133.715V481.939H118.486L118.443 439.224ZM82.2862 430.51H97.5147V436.339H82.2862V430.51ZM100.4 430.51H115.6V436.339H100.4V430.51ZM118.486 430.51H133.715V436.339H118.486V430.51ZM79.429 484.796H136.572V427.653H79.429V484.796Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_5">
<text id="IconLabel_10" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="60.0078" y="504.04">Table storage</tspan></text>
<text id="IconLabel_11" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="87.0312" y="520.04">Azure</tspan></text>
<text id="IconLabel_12" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="61.4922" y="536.04">PostgresSQL</tspan></text>
<text id="IconLabel_13" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="53.7266" y="552.04">Azure MariaDB</tspan></text>
</g>
</g>
<g id="Azure Cosmos DB">
<g id="Azure-Cosmos-DB">
<g id="Group_2">
<g id="group1050-1">
<g id="group1051-2">
<g id="group1052-3">
<g id="group1053-4">
<g id="group1054-5">
<g id="shape1055-6">
<path id="Vector_26" fill-rule="evenodd" clip-rule="evenodd" d="M86.664 608.158C86.5823 608.158 86.5012 608.143 86.4255 608.112C86.3499 608.081 86.2812 608.036 86.2233 607.979C86.1655 607.921 86.1197 607.853 86.0887 607.778C86.0576 607.703 86.0419 607.623 86.0424 607.542C86.0398 605.68 85.2924 603.895 83.9638 602.578C82.6353 601.262 80.8341 600.52 78.9549 600.517C78.7907 600.517 78.6331 600.453 78.5167 600.338C78.4002 600.223 78.3343 600.067 78.3333 599.905C78.3333 599.824 78.3493 599.744 78.3805 599.669C78.4117 599.594 78.4575 599.526 78.5152 599.469C78.573 599.412 78.6415 599.367 78.717 599.336C78.7924 599.305 78.8733 599.289 78.9549 599.289C80.8358 599.284 82.6378 598.539 83.9654 597.219C85.2929 595.899 86.0375 594.111 86.0358 592.247C86.0352 592.166 86.0509 592.086 86.082 592.011C86.113 591.936 86.1588 591.868 86.2166 591.811C86.2745 591.753 86.3432 591.708 86.4188 591.677C86.4945 591.646 86.5756 591.631 86.6573 591.631C86.7391 591.631 86.8202 591.646 86.8958 591.677C86.9715 591.708 87.0402 591.753 87.0981 591.811C87.1559 591.868 87.2016 591.936 87.2327 592.011C87.2637 592.086 87.2795 592.166 87.2789 592.247C87.2803 594.108 88.0259 595.893 89.3523 597.21C90.6787 598.528 92.4779 599.271 94.3562 599.277C94.438 599.277 94.519 599.292 94.5947 599.323C94.6703 599.354 94.7391 599.399 94.7969 599.456C94.8547 599.514 94.9005 599.582 94.9315 599.657C94.9626 599.732 94.9783 599.812 94.9778 599.893C94.9783 599.974 94.9626 600.054 94.9315 600.129C94.9005 600.204 94.8547 600.272 94.7969 600.33C94.7391 600.387 94.6703 600.432 94.5947 600.463C94.519 600.494 94.438 600.509 94.3562 600.509C92.4786 600.513 90.6793 601.254 89.3522 602.57C88.025 603.886 87.2782 605.669 87.2753 607.53C87.2745 607.693 87.2088 607.849 87.0924 607.964C86.976 608.08 86.8183 608.145 86.6537 608.145L86.664 608.158Z" fill="#50E6FF"/>
</g>
</g>
<g id="group1056-8">
<g id="shape1057-9">
<path id="Vector_27" fill-rule="evenodd" clip-rule="evenodd" d="M131.33 650.781C131.198 650.781 131.072 650.729 130.978 650.636C130.885 650.544 130.833 650.418 130.833 650.288C130.834 649.548 130.688 648.814 130.403 648.13C130.118 647.446 129.7 646.824 129.172 646.301C128.644 645.777 128.017 645.362 127.326 645.079C126.636 644.795 125.896 644.65 125.149 644.651C125.018 644.651 124.892 644.599 124.799 644.508C124.706 644.416 124.653 644.292 124.652 644.162C124.652 644.031 124.704 643.906 124.797 643.813C124.891 643.721 125.017 643.669 125.149 643.669C126.654 643.672 128.098 643.084 129.165 642.032C130.232 640.981 130.833 639.553 130.838 638.062C130.838 637.932 130.89 637.806 130.983 637.714C131.077 637.621 131.203 637.569 131.335 637.569C131.467 637.569 131.594 637.621 131.687 637.714C131.78 637.806 131.833 637.932 131.833 638.062C131.833 639.551 132.43 640.978 133.491 642.032C134.552 643.086 135.992 643.679 137.494 643.683C137.56 643.682 137.626 643.693 137.687 643.718C137.749 643.742 137.805 643.778 137.852 643.824C137.899 643.87 137.936 643.925 137.962 643.985C137.988 644.045 138.001 644.11 138.001 644.176C138.001 644.241 137.988 644.306 137.962 644.367C137.936 644.427 137.899 644.482 137.852 644.528C137.805 644.573 137.749 644.61 137.687 644.634C137.626 644.658 137.56 644.67 137.494 644.669C135.99 644.671 134.549 645.263 133.486 646.317C132.422 647.37 131.824 648.798 131.823 650.288C131.821 650.418 131.769 650.543 131.675 650.634C131.582 650.726 131.456 650.777 131.325 650.777L131.33 650.781Z" fill="#50E6FF"/>
</g>
</g>
<g id="group1058-11">
<g id="group1059-12">
<g id="shape1060-13">
<path id="Vector_28" d="M107.938 642.607C119.918 642.607 129.63 632.985 129.63 621.116C129.63 609.246 119.918 599.624 107.938 599.624C95.9573 599.624 86.2454 609.246 86.2454 621.116C86.2454 632.985 95.9573 642.607 107.938 642.607Z" fill="url(#paint2_radial_17642_377913)"/>
</g>
</g>
<g id="group1061-17">
<g id="shape1062-18">
<path id="Vector_29" fill-rule="evenodd" clip-rule="evenodd" d="M96.7199 635.525C104.616 635.746 104.633 623.911 96.7199 624.081C96.7539 623.911 96.7539 623.758 96.7539 623.588C96.7199 620.413 94.1049 617.849 90.8956 617.883H86.5656C85.2751 623.554 87.4146 630.771 91.8465 635.525H96.7199Z" fill="#F2F2F2"/>
</g>
</g>
<g id="group1063-20">
<g id="shape1064-21">
<path id="Vector_30" fill-rule="evenodd" clip-rule="evenodd" d="M129.304 617.158C129.304 617.107 129.304 617.056 129.287 617.005C128.59 613.264 126.876 609.783 124.329 606.936C123.993 606.8 123.647 606.692 123.293 606.613C122.366 606.354 121.392 606.307 120.443 606.474C119.495 606.641 118.598 607.02 117.818 607.58C117.039 608.141 116.397 608.869 115.943 609.71C115.488 610.552 115.232 611.484 115.193 612.438C114.957 612.409 114.719 612.392 114.48 612.387C113.032 612.383 111.63 612.887 110.521 613.81C109.413 614.733 108.67 616.014 108.424 617.428C108.177 618.841 108.444 620.296 109.177 621.533C109.909 622.77 111.06 623.711 112.425 624.188C113.031 624.426 113.676 624.547 114.327 624.545H121.493C124.372 622.385 126.992 619.907 129.304 617.158Z" fill="#F2F2F2"/>
</g>
</g>
</g>
<g id="group1065-23">
<g id="shape1066-24">
<path id="Vector_31" fill-rule="evenodd" clip-rule="evenodd" d="M136.897 603.129C134.673 599.479 129.494 598.052 122.243 599.122C119.757 599.47 117.299 599.998 114.89 600.701C116.803 601.354 118.619 602.256 120.29 603.384C121.139 603.197 121.988 602.977 122.803 602.858C124.09 602.655 125.389 602.548 126.692 602.535C127.97 602.352 129.273 602.489 130.483 602.934C131.694 603.379 132.772 604.118 133.62 605.082C134.961 607.307 133.824 611.127 130.479 615.559C125.844 621.278 120.164 626.082 113.736 629.721C107.443 633.613 100.467 636.297 93.1725 637.634C87.6538 638.449 83.6974 637.634 82.3559 635.409C80.9975 633.202 82.1352 629.364 85.4803 624.949C85.9049 624.406 85.9898 624.117 86.4652 623.574C86.2418 621.677 86.2703 619.758 86.5501 617.868C85.0503 619.361 83.6707 620.968 82.4239 622.674C78.0599 628.464 76.8712 633.677 79.0957 637.328C80.2638 638.88 81.8226 640.102 83.6164 640.871C85.4102 641.64 87.3761 641.929 89.3179 641.709C90.7965 641.699 92.2722 641.58 93.7328 641.352C101.518 639.947 108.967 637.101 115.689 632.964C122.552 629.073 128.612 623.935 133.552 617.817C137.933 612.01 139.122 606.797 136.897 603.129Z" fill="#50E6FF"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g id="Icon Text Label_6">
<text id="IconLabel_14" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="87.0312" y="667.781">Azure</tspan></text>
<text id="IconLabel_15" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="66.3672" y="683.781">Cosmos DB</tspan></text>
</g>
</g>
<g id="Object Storage">
<g id="Services/Object-Storage">
<g id="Group_3">
<g id="Group_4">
<g id="Group_5">
<path id="Vector_32" d="M81.8497 780.992C80.1395 780.992 78.7143 779.563 78.7143 777.849V725.563C78.7143 723.849 80.1395 722.42 81.8497 722.42H134.154C135.864 722.42 137.289 723.849 137.289 725.563V777.992C137.289 779.706 135.864 781.135 134.154 781.135L81.8497 780.992Z" fill="white"/>
<path id="Vector_33" d="M134.01 723.135C135.292 723.135 136.432 724.277 136.432 725.563V777.992C136.432 779.277 135.292 780.42 134.01 780.42H81.848C80.5653 780.277 79.4252 779.135 79.4252 777.849V725.563C79.4252 724.277 80.5653 723.135 81.848 723.135H134.01ZM134.01 721.706H81.848C79.7102 721.706 78 723.42 78 725.563V777.992C78 779.992 79.7102 781.706 81.848 781.706H134.152C136.29 781.706 138 779.992 138 777.849V725.563C137.857 723.42 136.147 721.706 134.01 721.706Z" fill="white"/>
</g>
<g id="Group_6">
<g id="Group_7">
<path id="Vector_34" d="M121.325 738.278L125.173 744.992L121.325 751.706H113.629L109.781 744.992L113.629 738.278H121.325ZM122.608 736.278H112.346L107.216 745.135L112.346 753.992H122.608L127.738 745.135L122.608 736.278Z" fill="#2D5967"/>
</g>
<g id="Group_8">
<path id="Vector_35" d="M107.5 758.706C111.205 758.706 114.198 761.706 114.198 765.42C114.198 769.135 111.205 772.135 107.5 772.135C103.794 772.135 100.801 769.135 100.801 765.42C100.801 761.706 103.794 758.706 107.5 758.706ZM107.5 756.706C102.654 756.706 98.6635 760.706 98.6635 765.563C98.6635 770.42 102.654 774.42 107.5 774.42C112.345 774.42 116.336 770.42 116.336 765.563C116.336 760.563 112.345 756.706 107.5 756.706Z" fill="#2D5967"/>
</g>
<g id="Group_9">
<path id="Vector_36" d="M97.3817 739.992L103.652 751.278H91.2534L97.3817 739.992ZM97.3817 735.707L87.6905 753.421H107.215L97.3817 735.707Z" fill="#2D5967"/>
</g>
</g>
<g id="Group_10">
<path id="Vector_37" d="M134.01 780.278H81.8485C80.5658 780.278 79.4257 779.135 79.4257 777.85V728.85H136.433V777.85C136.433 779.135 135.293 780.278 134.01 780.278ZM81.5634 730.992V777.992C81.5634 778.135 81.7059 778.278 81.8485 778.278H134.153C134.295 778.278 134.438 778.135 134.438 777.992V730.992H81.5634Z" fill="#2D5967"/>
</g>
<g id="Group_11">
<path id="Vector_38" d="M136.433 727.278H79.4257V725.564C79.4257 724.278 80.5658 723.135 81.8485 723.135H134.153C135.293 723.135 136.433 724.278 136.433 725.564V727.278Z" fill="#2D5967"/>
</g>
</g>
</g>
</g>
<g id="Icon Text Label_7">
<text id="IconLabel_16" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="69.3672" y="799.522">OCI Object</tspan></text>
<text id="IconLabel_17" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="80.1875" y="815.522">Storage</tspan></text>
</g>
</g>
<g id="Azure Blob Storage">
<g id="Azure-Blob-Storage">
<g id="Group 900">
<path id="Vector_39" d="M121.447 1004.52H94.5529C93.4426 1004.52 92.4178 1005.11 91.8666 1006.07L78.4194 1029.37C77.8681 1030.33 77.8681 1031.51 78.4194 1032.47L91.8666 1055.76C92.4178 1056.73 93.4504 1057.32 94.5529 1057.32H121.447C122.558 1057.32 123.582 1056.73 124.134 1055.76L137.581 1032.47C138.132 1031.51 138.132 1030.33 137.581 1029.37L124.134 1006.07C123.582 1005.11 122.558 1004.52 121.447 1004.52Z" fill="#2979FF"/>
<path id="Vector_40" d="M120.422 1048H95.5776C94.7235 1048 94.0248 1047.3 94.0248 1046.45V1015.39C94.0248 1014.54 94.7235 1013.84 95.5776 1013.84H115.764L121.975 1020.05V1046.45C121.975 1047.3 121.276 1048 120.422 1048Z" fill="white"/>
<path id="Vector_41" d="M115.764 1013.84V1018.5C115.764 1019.35 116.463 1020.05 117.317 1020.05H121.975L115.764 1013.84Z" fill="#B1CFFF"/>
<path id="Vector_42" d="M105.306 1030.66H103.233V1024.06L101.199 1024.65V1023.09L105.12 1021.73H105.306V1030.66ZM115.298 1027.01C115.298 1027.65 115.22 1028.21 115.073 1028.68C114.925 1029.16 114.708 1029.55 114.436 1029.86C114.165 1030.17 113.838 1030.4 113.458 1030.55C113.078 1030.69 112.658 1030.77 112.2 1030.77C111.742 1030.77 111.315 1030.69 110.935 1030.55C110.554 1030.4 110.228 1030.17 109.949 1029.86C109.677 1029.55 109.46 1029.15 109.304 1028.68C109.149 1028.21 109.079 1027.65 109.079 1027.01V1025.38C109.079 1024.73 109.157 1024.17 109.304 1023.7C109.452 1023.23 109.669 1022.83 109.941 1022.52C110.213 1022.21 110.539 1021.98 110.919 1021.83C111.3 1021.67 111.719 1021.6 112.177 1021.6C112.635 1021.6 113.054 1021.68 113.435 1021.83C113.815 1021.98 114.149 1022.21 114.421 1022.52C114.693 1022.83 114.91 1023.23 115.057 1023.7C115.205 1024.17 115.29 1024.73 115.29 1025.38V1027.01H115.298ZM113.233 1025.11C113.233 1024.76 113.21 1024.46 113.163 1024.21C113.116 1023.97 113.047 1023.77 112.953 1023.62C112.86 1023.47 112.752 1023.37 112.627 1023.3C112.503 1023.23 112.356 1023.19 112.193 1023.19C112.029 1023.19 111.882 1023.23 111.75 1023.3C111.618 1023.37 111.509 1023.47 111.424 1023.62C111.338 1023.77 111.269 1023.97 111.222 1024.21C111.175 1024.46 111.152 1024.76 111.152 1025.11V1027.26C111.152 1027.63 111.175 1027.93 111.222 1028.18C111.269 1028.43 111.338 1028.62 111.432 1028.77C111.525 1028.92 111.634 1029.03 111.765 1029.1C111.897 1029.17 112.045 1029.2 112.208 1029.2C112.371 1029.2 112.511 1029.17 112.643 1029.1C112.775 1029.03 112.884 1028.92 112.969 1028.77C113.062 1028.62 113.124 1028.42 113.171 1028.18C113.217 1027.93 113.241 1027.63 113.241 1027.26V1025.11H113.233ZM106.929 1039.57C106.929 1040.21 106.851 1040.77 106.703 1041.25C106.556 1041.72 106.338 1042.11 106.067 1042.42C105.795 1042.73 105.469 1042.96 105.088 1043.11C104.708 1043.26 104.289 1043.33 103.831 1043.33C103.373 1043.33 102.946 1043.26 102.565 1043.11C102.185 1042.96 101.859 1042.73 101.579 1042.42C101.307 1042.11 101.09 1041.71 100.935 1041.25C100.779 1040.77 100.71 1040.21 100.71 1039.57V1037.94C100.71 1037.29 100.787 1036.74 100.935 1036.26C101.082 1035.79 101.3 1035.39 101.571 1035.08C101.843 1034.77 102.169 1034.54 102.55 1034.39C102.93 1034.24 103.349 1034.17 103.815 1034.17C104.281 1034.17 104.693 1034.24 105.073 1034.39C105.453 1034.54 105.787 1034.77 106.059 1035.08C106.331 1035.39 106.548 1035.79 106.696 1036.26C106.843 1036.74 106.929 1037.29 106.929 1037.94V1039.57ZM104.863 1037.67C104.863 1037.32 104.84 1037.02 104.793 1036.77C104.747 1036.53 104.677 1036.33 104.584 1036.18C104.491 1036.04 104.382 1035.93 104.258 1035.86C104.134 1035.79 103.986 1035.76 103.823 1035.76C103.66 1035.76 103.512 1035.79 103.38 1035.86C103.248 1035.93 103.14 1036.03 103.054 1036.18C102.969 1036.33 102.899 1036.53 102.852 1036.77C102.806 1037.02 102.783 1037.32 102.783 1037.67V1039.83C102.783 1040.19 102.806 1040.49 102.852 1040.74C102.899 1040.99 102.969 1041.18 103.062 1041.33C103.155 1041.48 103.264 1041.59 103.396 1041.66C103.528 1041.73 103.675 1041.76 103.838 1041.76C104.002 1041.76 104.141 1041.73 104.273 1041.66C104.405 1041.59 104.514 1041.49 104.599 1041.33C104.693 1041.18 104.755 1040.98 104.801 1040.74C104.848 1040.49 104.871 1040.19 104.871 1039.83V1037.67H104.863ZM113.683 1043.22H111.61V1036.62L109.576 1037.22V1035.65L113.497 1034.29H113.683V1043.22Z" fill="#03A9F4"/>
</g>
</g>
<g id="Icon Text Label_8">
<text id="IconLabel_18" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="87.0312" y="1079">Azure</tspan></text>
<text id="IconLabel_19" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="62.0078" y="1095">Blob Storage</tspan></text>
</g>
</g>
<g id="Azure Data Factory">
<g id="Data-Factory">
<g id="Group 1508">
<path id="Vector_43" d="M387 180.411V166.612C387.001 166.513 386.973 166.416 386.919 166.333C386.865 166.251 386.787 166.186 386.696 166.148C386.605 166.11 386.504 166.101 386.407 166.12C386.311 166.14 386.222 166.188 386.153 166.259L372.035 180.376L357.353 195.058V205.188H399.988C400.253 205.192 400.517 205.144 400.763 205.044C401.01 204.945 401.233 204.797 401.421 204.609C401.609 204.421 401.757 204.198 401.856 203.951C401.956 203.705 402.004 203.441 402 203.176V166.612C402.001 166.513 401.973 166.416 401.919 166.333C401.865 166.251 401.787 166.186 401.696 166.148C401.605 166.11 401.504 166.101 401.407 166.12C401.31 166.14 401.222 166.188 401.153 166.259L387 180.411Z" fill="#005BA1"/>
<path id="Vector_44" d="M357 156.059C348.706 156.059 342 153.624 342 150.482V203.176C341.996 203.441 342.044 203.705 342.144 203.951C342.243 204.198 342.391 204.421 342.579 204.609C342.767 204.797 342.99 204.945 343.237 205.044C343.483 205.144 343.747 205.192 344.012 205.188H372V150.482C372 153.624 365.294 156.059 357 156.059Z" fill="url(#paint3_linear_17642_377913)"/>
<path id="Vector_45" d="M392.823 189.2H386.788C386.242 189.2 385.8 189.642 385.8 190.188V196.223C385.8 196.769 386.242 197.211 386.788 197.211H392.823C393.369 197.211 393.812 196.769 393.812 196.223V190.188C393.812 189.642 393.369 189.2 392.823 189.2Z" fill="white"/>
<path id="Vector_46" d="M378.918 189.2H372.883C372.337 189.2 371.895 189.642 371.895 190.188V196.223C371.895 196.769 372.337 197.211 372.883 197.211H378.918C379.464 197.211 379.906 196.769 379.906 196.223V190.188C379.906 189.642 379.464 189.2 378.918 189.2Z" fill="white"/>
<path id="Vector_47" d="M365.011 189.2H358.976C358.43 189.2 357.987 189.642 357.987 190.188V196.223C357.987 196.769 358.43 197.211 358.976 197.211H365.011C365.557 197.211 365.999 196.769 365.999 196.223V190.188C365.999 189.642 365.557 189.2 365.011 189.2Z" fill="white"/>
<path id="Vector_48" d="M372 150.483C372 153.483 365.294 155.918 357 155.918C348.706 155.918 342 153.624 342 150.483C342 147.341 348.706 145.188 357 145.188C365.294 145.188 372 147.624 372 150.483Z" fill="#EAEAEA"/>
<path id="Vector_49" d="M368.47 150.165C368.47 152.106 363.317 153.694 356.964 153.694C350.612 153.694 345.459 152.176 345.459 150.165C345.459 148.153 350.823 146.741 357 146.741C363.176 146.741 368.47 148.259 368.47 150.165Z" fill="#50E6FF"/>
<path id="Vector_50" d="M357 150.977C353.914 150.916 350.838 151.357 347.894 152.283C350.83 153.248 353.91 153.702 357 153.624C360.089 153.702 363.169 153.248 366.105 152.283C363.161 151.357 360.086 150.916 357 150.977Z" fill="#198AB3"/>
</g>
</g>
<g id="Icon Text Label_9">
<text id="IconLabel_20" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="351.031" y="223.004">Azure</tspan></text>
<text id="IconLabel_21" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="326.164" y="239.004">Data Factory</tspan></text>
</g>
</g>
<g id="Oracle Database@Azure">
<g id="Oracle-Database@Azure">
<g id="Group_12">
<path id="Vector_51" d="M381.37 475.952C370.132 475.952 361.022 473.976 361.022 471.54V481.811C361.022 484.248 370.132 486.223 381.37 486.223C392.607 486.223 401.717 484.248 401.717 481.811V471.54C401.717 473.976 392.607 475.952 381.37 475.952ZM398.49 478.043C396.953 478.574 395.36 478.993 393.759 479.288C391.851 479.637 389.898 479.816 387.953 479.816C387.485 479.816 387.103 479.438 387.103 478.97C387.103 478.501 387.482 478.123 387.953 478.123C389.796 478.123 391.645 477.954 393.454 477.622C394.971 477.343 396.478 476.948 397.936 476.443C398.381 476.29 398.862 476.523 399.018 476.968C399.171 477.409 398.938 477.894 398.494 478.047L398.49 478.043ZM381.37 462.742C370.132 462.742 361.022 460.767 361.022 458.33V469.146C361.022 471.583 370.132 473.555 381.37 473.555C392.607 473.555 401.717 471.58 401.717 469.143V458.327C401.717 460.763 392.607 462.739 381.37 462.739V462.742ZM398.49 465.192C396.95 465.723 395.36 466.142 393.759 466.437C391.851 466.786 389.895 466.965 387.953 466.965C387.485 466.965 387.103 466.586 387.103 466.118C387.103 465.65 387.482 465.272 387.953 465.272C389.796 465.272 391.645 465.102 393.454 464.77C394.971 464.492 396.478 464.097 397.936 463.592C398.381 463.439 398.862 463.672 399.018 464.116C399.174 464.561 398.938 465.043 398.494 465.195L398.49 465.192ZM381.37 441.671C370.132 441.671 361.022 443.623 361.022 446.853V455.94C361.022 458.376 370.132 460.348 381.37 460.348C392.607 460.348 401.717 458.373 401.717 455.936V447.182C401.717 443.62 392.607 441.671 381.37 441.671ZM398.49 452.709C396.95 453.241 395.36 453.659 393.759 453.954C391.851 454.303 389.898 454.482 387.953 454.482C387.485 454.482 387.103 454.104 387.103 453.636C387.103 453.168 387.482 452.789 387.953 452.789C389.796 452.789 391.645 452.62 393.454 452.288C394.968 452.009 396.478 451.614 397.936 451.109C398.381 450.956 398.862 451.189 399.018 451.634C399.171 452.075 398.938 452.56 398.494 452.713L398.49 452.709ZM381.37 449.705C371.247 449.705 363.044 447.862 363.044 446.77C363.044 445.429 371.247 443.357 381.37 443.357C391.492 443.357 399.695 445.512 399.695 446.77C399.695 447.912 391.492 449.705 381.37 449.705Z" fill="url(#paint4_linear_17642_377913)"/>
<path id="Vector_52" d="M361.022 446.767V446.611C361.022 443.6 368.95 441.701 379.139 441.459C377.967 438.829 375.514 436.881 372.512 436.482C372.257 430.616 367.337 426.048 361.471 426.23C356.803 426.147 352.59 429.019 350.963 433.395C345.98 433.996 342.185 438.152 342.039 443.168C342.262 448.839 347.029 453.257 352.699 453.055C353.015 453.055 353.337 453.042 353.636 453.015H361.019L361.022 446.767Z" fill="url(#paint5_linear_17642_377913)"/>
</g>
</g>
<g id="Icon Text Label_10">
<text id="IconLabel_22" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="313.219" y="504.04">Oracle Database</tspan></text>
<text id="IconLabel_23" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="343.016" y="520.04">@Azure</tspan></text>
</g>
</g>
<g id="Azure Data Lake Storage">
<g id="azure-data-lake-storage-gen2">
<g id="Group 1511">
<path id="Vector_53" d="M350.333 730.13V757.332C351.993 759.121 354.238 760.195 356.841 760.195C359.444 760.195 362.893 758.405 364.552 755.77C366.212 758.405 369.043 760.195 372.362 760.195V781.54V737.841C360.42 737.776 350.854 734.425 350.333 730.13Z" fill="#3E3E3E"/>
<path id="Vector_54" d="M372.751 737.841C372.621 737.841 372.523 737.841 372.393 737.841V781.54V781.67H372.621V760.195C375.94 760.065 378.771 758.405 380.333 755.77C381.992 758.405 384.953 760.195 388.272 760.195C391.591 760.195 393.38 758.991 395.04 757.201V773.536C395.04 777.798 385.604 781.41 373.825 781.637C385.669 781.442 395.137 777.831 395.137 773.536V730.13C394.649 734.457 384.888 737.841 372.751 737.841Z" fill="#A0A1A2"/>
<path id="Vector_55" d="M364.552 755.77C362.893 758.406 360.16 760.195 356.841 760.195C353.522 760.195 351.993 759.121 350.333 757.332V773.568C350.333 777.993 360.16 781.573 372.394 781.67V760.195C369.075 760.195 366.244 758.406 364.585 755.77H364.552Z" fill="#3999C6"/>
<path id="Vector_56" d="M395.04 773.568V757.234C393.38 759.024 391.005 760.227 388.272 760.227C385.539 760.227 381.992 758.438 380.333 755.802C378.803 758.438 375.94 760.097 372.621 760.227V781.702C373.012 781.702 373.435 781.702 373.825 781.702C385.604 781.475 395.04 777.863 395.04 773.601V773.568Z" fill="#59B4D9"/>
<path id="Vector_57" d="M372.394 737.841C372.524 737.841 372.622 737.841 372.752 737.841C384.889 737.841 394.65 734.458 395.138 730.13C395.138 730 395.138 729.902 395.138 729.772C395.138 725.379 385.051 721.703 372.719 721.703C360.388 721.703 350.333 725.379 350.333 729.772C350.333 734.165 350.333 730 350.333 730.13C350.821 734.425 360.388 737.776 372.362 737.841H372.394ZM372.752 723.948C373.045 723.948 373.37 723.948 373.663 723.948C374.281 723.948 374.867 723.948 375.453 724.013C375.746 724.013 376.038 724.013 376.331 724.045C377.503 724.11 378.609 724.208 379.683 724.371C380.756 724.533 380.203 724.436 380.464 724.468C382.546 724.761 384.401 725.184 385.93 725.672C388.793 726.616 390.55 727.885 390.55 729.284C390.55 730.683 389.249 731.659 386.873 732.603C386.873 732.603 386.808 732.603 386.776 732.603C383.522 733.839 378.446 734.653 372.752 734.653C367.058 734.653 361.982 733.839 358.728 732.603C358.728 732.603 358.663 732.603 358.631 732.603C357.915 732.31 357.264 731.952 356.711 731.627C355.67 730.976 355.084 730.293 354.954 729.544C354.954 729.479 354.954 729.382 354.954 729.317C354.954 726.356 362.893 723.98 372.719 723.98L372.752 723.948Z" fill="white"/>
<path id="Vector_58" d="M354.986 729.544C355.084 730.293 355.702 731.009 356.744 731.628C355.735 730.977 355.116 730.261 354.986 729.544Z" fill="#7FBA00"/>
<path id="Vector_59" d="M358.729 732.603C361.983 733.839 367.059 734.653 372.753 734.653C378.447 734.653 383.523 733.839 386.777 732.603C383.458 731.301 378.382 730.488 372.753 730.488C367.124 730.488 361.918 731.301 358.729 732.603Z" fill="#7FBA00"/>
<path id="Vector_60" d="M356.743 731.627C357.263 731.985 357.914 732.31 358.663 732.603C358.663 732.603 358.728 732.603 358.76 732.603C361.949 731.301 367.025 730.488 372.784 730.488C378.543 730.488 383.489 731.301 386.808 732.603C386.808 732.603 386.873 732.603 386.906 732.603C389.281 731.659 390.582 730.585 390.582 729.284C390.582 727.982 388.825 726.616 385.962 725.672C384.433 725.152 382.578 724.761 380.496 724.468C380.235 724.436 379.975 724.403 379.715 724.371C378.641 724.241 377.535 724.143 376.363 724.045C376.07 724.045 375.778 724.013 375.485 724.013C374.899 724.013 374.281 723.98 373.695 723.948C373.402 723.948 373.077 723.948 372.784 723.948C362.958 723.948 355.018 726.323 355.018 729.284C355.018 732.245 355.018 729.447 355.018 729.512C355.148 730.228 355.767 730.943 356.775 731.594L356.743 731.627Z" fill="#B8D432"/>
</g>
</g>
<g id="Icon Text Label_11">
<text id="IconLabel_24" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="332.164" y="799.522">Azure Data</tspan></text>
<text id="IconLabel_25" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="325.258" y="815.522">Lake Storage</tspan></text>
</g>
</g>
<g id="Power BI">
<g id="Azure-Power-BI">
<g id="Group_13">
<g id="group1076-1">
<g id="group1077-2">
<g id="shape1078-3">
<path id="Vector_61" fill-rule="evenodd" clip-rule="evenodd" d="M633.56 426.224V484.999H606.895V426.224H633.56Z" fill="url(#paint6_linear_17642_377913)"/>
</g>
<g id="shape1079-7">
<path id="Vector_62" fill-rule="evenodd" clip-rule="evenodd" d="M616.895 443.618V485.244H590.229V441.166H613.556C615.399 441.166 616.895 442.26 616.895 443.618Z" fill="black" fill-opacity="0.2"/>
</g>
<g id="shape1080-9">
<path id="Vector_63" fill-rule="evenodd" clip-rule="evenodd" d="M616.895 444.597V486.224H590.229V442.146H613.556C615.399 442.146 616.895 443.24 616.895 444.597Z" fill="black" fill-opacity="0.18"/>
</g>
<g id="shape1081-11">
<path id="Vector_64" fill-rule="evenodd" clip-rule="evenodd" d="M616.895 443.373V484.999H590.229V440.921H613.556C615.399 440.921 616.895 442.015 616.895 443.373Z" fill="url(#paint7_linear_17642_377913)"/>
</g>
<g id="shape1082-15">
<path id="Vector_65" fill-rule="evenodd" clip-rule="evenodd" d="M573.562 455.618V484.999H600.228V458.07C600.228 456.712 598.732 455.618 596.89 455.618H573.562Z" fill="url(#paint8_linear_17642_377913)"/>
</g>
</g>
</g>
</g>
</g>
<g id="Icon Text Label_12">
<text id="IconLabel_26" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="572.078" y="504.04">Power BI</tspan></text>
</g>
</g>
<path id="Vector 57" d="M144 64H240V753.188H144" stroke="#312D2A" stroke-width="2"/>
<path id="Vector 58" d="M144 321.188H240" stroke="#312D2A" stroke-width="2"/>
<path id="Vector 65" d="M144 176.742H240" stroke="#312D2A" stroke-width="2"/>
<path id="Vector 60" d="M272.917 465.896C273.308 465.505 273.308 464.872 272.917 464.481L266.553 458.117C266.163 457.727 265.529 457.727 265.139 458.117C264.748 458.508 264.748 459.141 265.139 459.532L270.796 465.188L265.139 470.845C264.748 471.236 264.748 471.869 265.139 472.26C265.529 472.65 266.163 472.65 266.553 472.26L272.917 465.896ZM144 466.188H272.21V464.188H144V466.188Z" fill="#312D2A"/>
<path id="Vector 63" d="M568.707 466.931C569.098 466.54 569.098 465.907 568.707 465.517L562.343 459.153C561.953 458.762 561.319 458.762 560.929 459.153C560.538 459.543 560.538 460.176 560.929 460.567L566.586 466.224L560.929 471.881C560.538 472.271 560.538 472.904 560.929 473.295C561.319 473.685 561.953 473.685 562.343 473.295L568.707 466.931ZM408 467.224L568 467.224L568 465.224L408 465.224L408 467.224Z" fill="#312D2A"/>
<path id="Vector 64" d="M372.707 525.731C372.317 525.341 371.683 525.341 371.293 525.731L364.929 532.095C364.538 532.486 364.538 533.119 364.929 533.51C365.319 533.9 365.953 533.9 366.343 533.51L372 527.853L377.657 533.51C378.047 533.9 378.681 533.9 379.071 533.51C379.462 533.119 379.462 532.486 379.071 532.095L372.707 525.731ZM373 721.188L373 526.438L371 526.438L371 721.188L373 721.188Z" fill="#312D2A"/>
<path id="Vector 61" d="M272.707 1031.9C273.098 1031.51 273.098 1030.87 272.707 1030.48L266.343 1024.12C265.953 1023.73 265.319 1023.73 264.929 1024.12C264.538 1024.51 264.538 1025.14 264.929 1025.53L270.586 1031.19L264.929 1036.85C264.538 1037.24 264.538 1037.87 264.929 1038.26C265.319 1038.65 265.953 1038.65 266.343 1038.26L272.707 1031.9ZM144 1032.19H272V1030.19H144V1032.19Z" fill="#312D2A"/>
<path id="Vector 62" d="M272.707 881.896C273.098 881.505 273.098 880.872 272.707 880.481L266.343 874.117C265.953 873.727 265.319 873.727 264.929 874.117C264.538 874.508 264.538 875.141 264.929 875.532L270.586 881.188L264.929 886.845C264.538 887.236 264.538 887.869 264.929 888.26C265.319 888.65 265.953 888.65 266.343 888.26L272.707 881.896ZM144 882.188H272V880.188H144V882.188Z" fill="#312D2A"/>
<path id="Vector 59" d="M144 617.882H240" stroke="#312D2A" stroke-width="2"/>
</g>
</g>
<defs>
<linearGradient id="paint0_linear_17642_377913" x1="86.3333" y1="302.667" x2="131.318" y2="302.667" gradientUnits="userSpaceOnUse">
<stop stop-color="#005BA1"/>
<stop offset="0.07" stop-color="#0060A9"/>
<stop offset="0.36" stop-color="#0071C8"/>
<stop offset="0.52" stop-color="#0078D4"/>
<stop offset="0.64" stop-color="#0074CD"/>
<stop offset="0.82" stop-color="#006ABB"/>
<stop offset="1" stop-color="#005BA1"/>
</linearGradient>
<radialGradient id="paint1_radial_17642_377913" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(109.963 330.01) scale(26.3071 13.4724)">
<stop stop-color="#F2F2F2"/>
<stop offset="0.58" stop-color="#EEEEEE"/>
<stop offset="1" stop-color="#E6E6E6"/>
</radialGradient>
<radialGradient id="paint2_radial_17642_377913" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(86.2454 599.624) scale(60.7382 60.1766)">
<stop offset="0.185" stop-color="#5EA0EF"/>
<stop offset="1" stop-color="#0078D4"/>
</radialGradient>
<linearGradient id="paint3_linear_17642_377913" x1="342" y1="177.906" x2="372" y2="177.906" gradientUnits="userSpaceOnUse">
<stop stop-color="#005BA1"/>
<stop offset="0.07" stop-color="#0060A9"/>
<stop offset="0.36" stop-color="#0071C8"/>
<stop offset="0.52" stop-color="#0078D4"/>
<stop offset="0.64" stop-color="#0074CD"/>
<stop offset="0.81" stop-color="#006ABB"/>
<stop offset="0.99" stop-color="#005BA1"/>
</linearGradient>
<linearGradient id="paint4_linear_17642_377913" x1="361.022" y1="463.947" x2="401.717" y2="463.947" gradientUnits="userSpaceOnUse">
<stop stop-color="#C74634"/>
<stop offset="0.5" stop-color="#DB897D"/>
<stop offset="1" stop-color="#C74634"/>
</linearGradient>
<linearGradient id="paint5_linear_17642_377913" x1="360.587" y1="453.062" x2="360.587" y2="426.224" gradientUnits="userSpaceOnUse">
<stop stop-color="#32BEDD"/>
<stop offset="1" stop-color="#50E6FF"/>
</linearGradient>
<linearGradient id="paint6_linear_17642_377913" x1="597.485" y1="422.795" x2="619.263" y2="438.182" gradientUnits="userSpaceOnUse">
<stop stop-color="#E6AD10"/>
<stop offset="1" stop-color="#C87E0E"/>
</linearGradient>
<linearGradient id="paint7_linear_17642_377913" x1="570.012" y1="432.896" x2="590.21" y2="450.305" gradientUnits="userSpaceOnUse">
<stop stop-color="#F6D751"/>
<stop offset="1" stop-color="#E6AD10"/>
</linearGradient>
<linearGradient id="paint8_linear_17642_377913" x1="535.083" y1="433.671" x2="549.344" y2="456.203" gradientUnits="userSpaceOnUse">
<stop stop-color="#F9E589"/>
<stop offset="1" stop-color="#F6D751"/>
</linearGradient>
<clipPath id="clip0_17642_377913">
<rect width="712" height="1112" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 56 KiB

View File

@@ -0,0 +1,7 @@
The diagram you downloaded is available in these formats:
- DRAWIO
- SVG
You can customize them for your organization using the associated tools:
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.

View File

@@ -0,0 +1,156 @@
# Auto-extracted absolute_layout template from
# kb/diagram/assets/archcenter-refs/autonomous-database-db-at-azure-diagram-oracle/autonomous-database-db-at-azure-diagram.drawio
# Source: Oracle Architecture Center reference (canonical geometry).
# Use this as the starting scaffold for a new spec — copy, rename ids,
# and replace `type: TODO_identify` on services with the right OCI
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
# edge waypoints are Oracle's canonical layout; preserve unless the
# customer's topology requires a change.
absolute_layout:
canvas:
width: 850
height: 1100
containers: []
services:
- id: s2
type: TODO_identify
label: ''
x: 1117
y: 177
w: 63
h: 63
- id: s1
type: TODO_identify
label: ''
x: 1117
y: 178
w: 62
h: 62
- id: s3
type: TODO_identify
label: ''
x: 1118
y: 185
w: 60
h: 54
- id: s11
type: TODO_identify
label: ''
x: 780
y: 186
w: 63
h: 55
- id: s10
type: TODO_identify
label: ''
x: 781
y: 186
w: 61
h: 53
- id: s12
type: TODO_identify
label: ''
x: 781
y: 187
w: 60
h: 52
- id: s19
type: TODO_identify
label: ''
x: 968
y: 197
w: 78
h: 31
- id: s20
type: TODO_identify
label: ''
x: 972
y: 197
w: 88
h: 43
- id: s8
type: TODO_identify
label: ''
x: 629
y: 198
w: 30
h: 42
- id: s7
type: TODO_identify
label: ''
x: 629
y: 199
w: 30
h: 41
- id: s9
type: TODO_identify
label: ''
x: 629
y: 199
w: 29
h: 40
- id: s4
type: TODO_identify
label: ''
x: 38
y: 293
w: 60
h: 43
- id: s17
type: TODO_identify
label: ''
x: 780
y: 465
w: 63
h: 55
- id: s16
type: TODO_identify
label: ''
x: 781
y: 466
w: 61
h: 53
- id: s18
type: TODO_identify
label: ''
x: 781
y: 467
w: 60
h: 52
- id: s6
type: TODO_identify
label: ''
x: 252
y: 478
w: 63
h: 63
- id: s13
type: TODO_identify
label: ''
x: 629
y: 478
w: 30
h: 41
- id: s14
type: TODO_identify
label: ''
x: 629
y: 478
w: 30
h: 42
- id: s15
type: TODO_identify
label: ''
x: 629
y: 478
w: 29
h: 40
- id: s5
type: TODO_identify
label: ''
x: 40
y: 483
w: 63
h: 42
labels: []
connections: []

View File

@@ -0,0 +1,790 @@
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" version="24.7.12">
<diagram name="autonomous-database-db-at-azure" id="autonomous-database-db-at-azure">
<mxGraphModel dx="792" dy="1097" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<UserObject label="" tags="Background" id="2">
<mxCell style="vsdxID=2;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry width="1236" height="609" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="3">
<mxCell style="vsdxID=4;fillColor=#e4e1dd;gradientColor=none;shape=stencil(vVNdD4IgFP01POoQtopns//BEpVF4K6U9u/DYOZHrc023+7HgXPPhYNo2lS8FojgxoK5iFbmtkL0iAiRuhIgrYsQzRBNCwOiBHPTuc9r3iP76Gru/Q2dP4f7EwQ/fMZYTNmrcvJgDmfXhQAmMfFwCHgc7xJfmSMCIMGBoIt4J5sIjOVWGj0hVxxKETmqqFC8nLSaVoh6UQ7DKalHStg+PnzkXillGH2xmw3EzMmH6VaKWSxns2eZ/4i/3uTLUjaQ8cMnLng7rJBKeYOO+3NHupJ3M82e);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="1067" width="168" height="608" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="4">
<mxCell style="vsdxID=5;fillColor=none;gradientColor=none;shape=stencil(vVNdD4IgFP01POoQtopns//BEpVF4K6U9u/DYOZHrc023+7HgXPPhYNo2lS8FojgxoK5iFbmtkL0iAiRuhIgrYsQzRBNCwOiBHPTuc9r3iP76Gru/Q2dP4f7EwQ/fMZYTNmrcvJgDmfXhQAmMfFwCHgc7xJfmSMCIMGBoIt4J5sIjOVWGj0hVxxKETmqqFC8nLSaVoh6UQ7DKalHStg+PnzkXillGH2xmw3EzMmH6VaKWSxns2eZ/4i/3uTLUjaQ8cMnLng7rJBKeYOO+3NHupJ3M82e);strokeColor=#9e9892;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="1067" width="168" height="608" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;OCI Services&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="5">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=6;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="1102" y="7" width="203" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="6">
<mxCell style="vsdxID=8;fillColor=#ecf3fb;gradientColor=none;shape=stencil(vVNBDoMgEHwNRxqUpIlna/9BKiopBbPSqr8vFLEqaQ9t4m2ZHZydxUE07xrWcpSSzoC+8l6UpkH0hNJUqIaDMLZCtEA0rzTwGvRdlf7cMsd01U0/3BcGf4+4GykZ/SnLDjR7IWdPZnCxXQjk0CUwBuSYeCSiTIyETBIDZoPoMGjDjNBqJS8Z1BxbMVxJVq9aXc95G8HTeFKohRc7fZhmI/6rm3n4aD872NmKz9P96ibez25PE/0W/73Lh8XsYeR7XmzxTlolpPRBXfa3ybSQTzUtng==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry width="947" height="608" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="7">
<mxCell style="vsdxID=9;fillColor=none;gradientColor=none;shape=stencil(vVNBDoMgEHwNRxqUpIlna/9BKiopBbPSqr8vFLEqaQ9t4m2ZHZydxUE07xrWcpSSzoC+8l6UpkH0hNJUqIaDMLZCtEA0rzTwGvRdlf7cMsd01U0/3BcGf4+4GykZ/SnLDjR7IWdPZnCxXQjk0CUwBuSYeCSiTIyETBIDZoPoMGjDjNBqJS8Z1BxbMVxJVq9aXc95G8HTeFKohRc7fZhmI/6rm3n4aD872NmKz9P96ibez25PE/0W/73Lh8XsYeR7XmzxTlolpPRBXfa3ybSQTzUtng==);strokeColor=#0078d7;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry width="947" height="608" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Azure Region&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="8">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=10;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="8" y="7" width="203" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="9">
<mxCell style="vsdxID=12;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="9" y="34" width="930" height="566" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="10">
<mxCell style="vsdxID=13;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;dashPattern=1.00 2.00;strokeColor=#0078d7;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="9" y="34" width="930" height="566" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Subscription&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="11">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=14;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="16" y="41" width="203" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="12">
<mxCell style="vsdxID=16;fillColor=#dae8fc;gradientColor=none;shape=stencil(vVPREoIgEPwaHnUMdNJnq/9gEpWJxDko7e/DUFOpHmzGt+Nuj709WERSVdKaIRwoDfLCGp7pEpEDwphXJQOuTYTIEZE0l8AKkLcqs+eadsguusp7d0Nr+4KuAwcPe0piP4xfmZMFUzibKgxgP9xbPPQNOz/CNuNABkTQU7QebbnyQGqquaxm9IJCwTxD5uWCFrOSahirnXQ/nuDVREuS+BH5SL5WzTi8s58N5CzJx+nWqnH3s9nTON/iv3f5spgthPz2iwneTsu5ENao0/rSmSZlXU2OTw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="144" y="68" width="786" height="244" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="13">
<mxCell style="vsdxID=17;fillColor=none;gradientColor=none;shape=stencil(vVPREoIgEPwaHnUMdNJnq/9gEpWJxDko7e/DUFOpHmzGt+Nuj709WERSVdKaIRwoDfLCGp7pEpEDwphXJQOuTYTIEZE0l8AKkLcqs+eadsguusp7d0Nr+4KuAwcPe0piP4xfmZMFUzibKgxgP9xbPPQNOz/CNuNABkTQU7QebbnyQGqquaxm9IJCwTxD5uWCFrOSahirnXQ/nuDVREuS+BH5SL5WzTi8s58N5CzJx+nWqnH3s9nTON/iv3f5spgthPz2iwneTsu5ENao0/rSmSZlXU2OTw==);strokeColor=#0078d7;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="144" y="68" width="786" height="244" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Availability Zone 1&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="14">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=18;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="466" y="75" width="321" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="15">
<mxCell style="vsdxID=20;fillColor=#dae8fc;gradientColor=none;shape=stencil(vVPREoIgEPwaHnUMdNJnq/9gEpWJxDko7e/DUFOpHmzGt+Nuj709WERSVdKaIRwoDfLCGp7pEpEDwphXJQOuTYTIEZE0l8AKkLcqs+eadsguusp7d0Nr+4KuAwcPe0piP4xfmZMFUzibKgxgP9xbPPQNOz/CNuNABkTQU7QebbnyQGqquaxm9IJCwTxD5uWCFrOSahirnXQ/nuDVREuS+BH5SL5WzTi8s58N5CzJx+nWqnH3s9nTON/iv3f5spgthPz2iwneTsu5ENao0/rSmSZlXU2OTw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="144" y="347" width="786" height="244" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="16">
<mxCell style="vsdxID=21;fillColor=none;gradientColor=none;shape=stencil(vVPREoIgEPwaHnUMdNJnq/9gEpWJxDko7e/DUFOpHmzGt+Nuj709WERSVdKaIRwoDfLCGp7pEpEDwphXJQOuTYTIEZE0l8AKkLcqs+eadsguusp7d0Nr+4KuAwcPe0piP4xfmZMFUzibKgxgP9xbPPQNOz/CNuNABkTQU7QebbnyQGqquaxm9IJCwTxD5uWCFrOSahirnXQ/nuDVREuS+BH5SL5WzTi8s58N5CzJx+nWqnH3s9nTON/iv3f5spgthPz2iwneTsu5ENao0/rSmSZlXU2OTw==);strokeColor=#0078d7;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="144" y="347" width="786" height="244" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Availability Zone 2&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="17">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=22;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="465" y="354" width="321" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="18">
<mxCell style="vsdxID=24;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="153" y="112" width="260" height="470" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="19">
<mxCell style="vsdxID=25;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;dashPattern=1.00 2.00;strokeColor=#706e6f;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="153" y="112" width="260" height="470" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="20">
<mxCell style="vsdxID=27;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="358" y="109" width="47" height="6" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="21">
<mxCell style="vsdxID=29;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLtDoIwDHya/SWjDfIAiO9BZMgiMjJA4e1lKYatBMO/ftztel0FZn1ddEqA7Adrnuqjy6EWeBUAuq2V1cMSCcwFZpWx6mHN2JaUd4VDuuhl3u6FiXiJdBSQM6WxpPxG2PtoCRxTO02jC66EOGTICVhhhh1pQo7BYIwD2Q2+FgAiTENZf7S1JEPRhGn+lfQUfqLMJ3Ppj4Qh4pRH5tBf2l5h5rs+8sj+s9Ht6b9fgu1oKt00dHN+nx/ZUqIDxfwL);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="389" y="109" width="5" height="5" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="22">
<mxCell style="vsdxID=30;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(lVJBDoIwEHxNr6TdjRLPiP8wAtKIlBRQ+L3UhdCukehtO51hdsoITNry3OQCZNtZc8ufOutKgUcBoOsyt7qbJoGpwKQwNr9a09cZnZuzY7rpbh7uCwPpdjKSyqlAjoQoKd/nE9EvvSW+ous4jvaLQIUKOQADRlhFOHOQc3DZZMt2pc8AQIRxaOuvNkMyNPXTos/44upMDqEvi8qC+lthyPgpJgvpvxt8rsSfeyMm+6uVrv8pwTSsBSp0VVH//HteuAmismL6Ag==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="380" y="109" width="5" height="5" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="23">
<mxCell style="vsdxID=31;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLbDoIwDP2avZLRBonPiP9BZMgiMjJA4e9lKQlbCYa3Xs7Z6ekqMOvrolMCZD9Y81JfXQ61wJsA0G2trB6WSGAuMKuMVU9rxrakvCsc0kVv83EvTMRLpKOAnCmNJeV3wj5GS+CY2mkaXXAlxCFDTsAKM+xIE3IMBmMcyG7wtQAQYRrK+qOtJRmKJkzzr6RTuIaizCdz6Y+EIeKUR+bQXxrsR+K7PvLI/rPR7em/X4LtaCrdNHRzfp8f2VKiA8X8Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="371" y="109" width="5" height="5" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="24">
<mxCell style="vsdxID=32;fillColor=#50e6ff;gradientColor=none;shape=stencil(jZPRksIgDEW/htcMSUoLz677H47WLWO3dbCu7t8vXWiFjnV8C+FecgJB8ObS7M61IHkZXH+qb/YwNII/BJHtmtrZwUeCt4I3x97VX66/doewPu9G5Rh99z/jCffgMxpUNbpI/oaM1qDNf+YzGFrbJQZdARaZAaVM5furCwUwGhRUGA2YO+SdooZAl1FDSw1HDUJBUcMzfInrqP5QlZH6DNErVrngNFConFQuKHm6rJkzqTphQkXrlFgAmQxTroufPBeCUa96mi9y6kozMOddPTTTg5SAmPeVlua3RuWN2fLBYzKPtm3DYKf7y0n2qfALePsH);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="361" y="109" width="14" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="25">
<mxCell style="vsdxID=33;fillColor=#1490df;gradientColor=none;shape=stencil(jZPRcsIgEEW/htcd2E1geVb7H06NDdOYOBhb/XuTQkbAavu2XA7s3eEiaHVqt8dGoDyNfvhsvt1ubAWtBaLr28a7caoEbQSt9oNvPvxw7ndhfdzO5Fwdhq/5hks4xwYI51Mor0FRQPZHeAt85/qEtwy1zXmEOuXfzz40UHFfysgvAgHHKy5YMougQZvI0GPnKCkGqZ97VTVUhdfY51e8AqSMZl6MPhmtGIwrMJgPVoxlLCidj5V0jYrRL1+AJSC/fLHSJivQNrcqc5uT81rlVmVuM80J/ScofwdrKu6p3LuuC6FO98sUT1L4AbS5AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="361" y="99" width="14" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="26">
<mxCell style="vsdxID=34;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZLRksIgDEW/htcMJNLCs6v/4Wzrltlu62B19e9tN6AUp+v4Fm4uyRm4gtbHZneoBcrj4Pvv+tdVQyPoQyC6rqm9G8ZK0EbQet/7+sv3p67i82E3Oafqpz9PEy58zxSg1HQL5ZUV+Xfasrl1XWK2GgzNzBZKTP2fJ8/TFfeVlMEfBQJjWbpg7omChdUqeOh5c5AQAXGZNRkSWQ0U6l9YA1JnuJHtDqsBywz37glkCkHPWZ9WZ6xAdoZqyjBhgTR71OQTI2f2pIaAKKN8LA2KkaD1MuVbUXlhHotHIveubTnQaT9P8Chx+mlzAw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="389" y="109" width="15" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="27">
<mxCell style="vsdxID=35;fillColor=#1490df;gradientColor=none;shape=stencil(jZJBcsIwDEVP461Gsmxirym9B1NC42maMCa0cHucyh1i05buLPk5eqN8xetjtz20SuNxiuNb+xl2U6f4SWkdhq6NYUonxRvF6/0Y29c4noad1IftTM6n9/Fj/sJZ3vkGaH6k8SIN58D5r86z8H0YFryzYAueEH+nCUxFezBmyb+couiQAJjxXJIDXEnrrEsil2RBu0zw3dTvjs7WP1sSWF9qAvu/LIkBbWmKpWXS8qY0xcoyLbrWrMaWmne/qlk90sRqnY0HqtZ5Y3LDGWh0qbqYzP9KyeNUpcMtkvvQ95Lo5X0d4dSS+PPmCg==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="389" y="99" width="14" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#706e6f;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Application VNet/Subnet&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="28">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=36;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="161" y="120" width="389" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="29">
<mxCell style="vsdxID=40;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZPRDoIwDEW/Zq9LWQeEZ9T/MIqyiEAmKv69I51hnQTj21ruZac3q8DyVu/7Sii4Dba7VE9zHGqBG6GUaevKmsGdBG4FlqfOVmfb3dsj1f1+Uk6na/eY/jCSL5WYTSYFL2oUhcypsyP94W7JkJBASa29I4ktMCpqgVf4ssglKq9ArvBloaUOb21MG1ACQ3TM6RohcDwHjJwuGIHzfuCCVBjuIpxDzzQDhDU6l0WacULgeAlE8QUTYCzB5Uw44iyfkVcjnA0Bdc4xw0Fi8hG/s4nQF0F/P8d/9e4wv/2TaRpanfB7vCuuRXuG2zc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="1117" y="178" width="62" height="62" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="30">
<mxCell style="vsdxID=41;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZXRdoIwDIafprc9bUIpXDv3Hp6JgzMGHsQN335lrdCmCHpX4h/88iehDHeX8nAuGIhL37VfxW917EuGbwygasqiq3pzYrhnuDu1XfHZtdfmaJ/Ph1E5nr7bn/ENg83LkaMas0DcbAQ4Zv+Bd6v/uHY2QboMxZPMZUiSIgZwIj2Fbi6UcMidCGORC6U8Qf/P66rxYb2ECT+Tq7ReylxArgiuV9NcQZYSXs8rpKpFYFMOhLxUT3mNSxRX8xRCXIjMNQVoCGkhMtfwK/0YFqi5tBmUFSJrvR5DVE8EP2DkEmVfHoPNmX1Vv7UT4oUWi3XLMhVaJkK/BDWLDqEInVpfGBGQbS6LYHTyZEInb+J3ESkE2+jmXfKoOSocOyJf2GhJPJwZKJS3zVMpSDXPrcesf2478pxrTb+TUzfvXCnPIUQldi58dNbdXBtdc5gvglNV1/Ye8X+nF4cJ2UsH938=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="1117" y="177" width="63" height="63" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="31">
<mxCell style="vsdxID=43;fillColor=#2d5967;gradientColor=none;shape=stencil(tZNNDsIgEIVPw5bA0Eq7rnqPJqWWWEtD69/tBYmx2IiwcDfMvG9mgDzEqqmrR4GATLNWR3GVzdwhtkUAcuiElrOJENshVrVKi4NW56Fx57G2Shud1MV2uDluU2BOLQXk7jKUYiifmb0DejksgILjrPCArMQ0AKwnmBYkADCzQJYCUEhcaT3hx6WTX+kfgP9xPPfU5HtriFYST5jH96QkoOUJ2lcxZof4FwgpTfD2Riv73llrWf/0kkk5H7LdAw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="1148" y="193" width="21" height="18" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="32">
<mxCell style="vsdxID=44;fillColor=#2d5967;gradientColor=none;shape=stencil(lVTRcoMgEPwaXpnjiEWf0+Q/MompTK1mjGn17yMFlYORpm+w7rm7xwGT+3t1upUM4d537Wf5oy99xeQ7Q9RNVXa6n1ZMHpjcX9uu/OjaR3Ox+9vJMM3qq/02fxhsXQamBGG0WyE4Fr/I0bLPj87ShSUo4IV0JSKsgQEtlCvukNEhmHN0dYOMSA7ZFVwk1b2S1Y94o+K+xdWPoOJLbhkwNpSx4IBU2vupkxE4IyPG9mREejW2VyLidmLsEOOT2cgdHXitm3+MR3KYINlQ5JmioYAGAhrGFOQ0TJAlSwoCFVOK7zDooGdp7iDAH/2DpKhRCa8LBDkXYBkaz5oMOS9lXelztwVXKrgmnjXa8a2sRDI5J4Q5LdbX56rr2j5e/vfwtZog+9LJwxM=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="1138" y="214" width="18" height="18" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="33">
<mxCell style="vsdxID=45;fillColor=#2d5967;gradientColor=none;shape=stencil(lZJNDoMgEIVPw5bAYCqurb2HiVhIKRjE/ty+UNJUm1Rl95j53mQmPMTqUbaDQEBG7+xF3FXnJWJHBKCMFE75oBBrEKt768TZ2cl06T20kYzqam9xwiP5igofILqAPFMFCkyrd+WUDFqZmYFTXC4NvMQrPOUYWAafvdAOw9bJ5P90sgApWUE/zV1w1hIbcBDf7+2V1ikd8/5vHEIpRYk1Lw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="1127" y="192" width="20" height="18" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="34">
<mxCell style="vsdxID=46;fillColor=#2d5967;gradientColor=none;shape=stencil(pZTdcoMgEIWfhlsGWBG9TpP3yCSmMjWaIebv7YPFCgvVpu0du3yLZ886S2B1rrenigh27k33Ud30vq8JvBEhdFtXRvf2RGBNYHXoTPVuuku7d/FpO5DD6dhdhxfurq6UVMmhSrCHy3DGPuONwxvdBnhGxSK9uxj3OnfXYoQ5ptlduMQYPsawVFQVIwGYgEmvKOb1MSRuoZFJye/RRELctC/gaVtfnRa4c+8MpIOBFybz4yDx3IGqDNEZ5Wr+9QS3n5NyyYSggk8lBWAXMmxCmVPOsQ3BDwcx9L0POdYZ07FOC4g8EhrI8Mokj8QG7UBKwYxPsVpf8ac5/BO3B78ZDrpp3GIJ7+NNYlNuC8H6CQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="1118" y="185" width="60" height="54" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="35">
<mxCell style="vsdxID=47;fillColor=#2d5967;gradientColor=none;shape=stencil(nZLbDoIwDEC/Zq9ktILwjPAfRIYsIiMDFP9eli5hw1v0re1Ol5O2DLOhKXvBgA+jVmdxk9XYMDwwANk1QstxiRjmDLNaaXHSauoqyvvSkCa6qKv5Yaa+kHPTA/zu5wXBrewc+G80SoIYXfg4abIIfdymsA+ilEoz2JIlwGuYkdJdAJEF0AVeuqWxJ8c/iaWJb8Z9q3V88GyOWwbfTMPX+2klX+AlWDdfy7alw3Hft5eylOjKMH8A);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="1118" y="179" width="60" height="4" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Object Storage&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="36">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=48;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="1092" y="244" width="237" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="37">
<mxCell style="vsdxID=51;fillColor=#5ea0ef;gradientColor=#0078d4;shape=stencil(lZXbUhsxDIafZm81Ovh4TeE9mCY0O6QJswRK3h4tXjuRO1naO0eR9pP/37IHuXvdPb5sB8bX03R83v4ZN6fdID8G5vGw207jSVeD3A9y93Sctr+m49thU36/PM6Z8+r38X3+wkepcwJIcxXjuUS8AKevyEMp2I+HqwKfTLZDCLeTCdFkB4bA1+k/36bSDZWEnAErYAn5AFlK6IOXLA3VrCXkCWJYsmTJEshL6LyEXITobrc7V9jdRRBZ7RdBou3XMVSNar/JQ8q2X8ngxPabCNDbfiXBKj4hRLF4jpA6uWIE5yyeYtOm4iNBJosnhBTW+CGAdHbJxYdqjXra4dGi1TzPFo3gVg+K8+CCJSNwR1aRPVkyN8EqXBy4bOGqV1qDs5rXuU4M3MnOHoJYOqkUbPEqWGc66+l2a3g1j9jiOV0+XFkE3Mku2mS0eGV1yuuZy6ubh0AWrl74bu8I5C3bOyCLRssNUo//DbD6my04ShOiWd7GqoITNxvapF2mpkZyPQS3NHeA3aTpLSS+s1xHOFp8uwKb4TrT3ZzprRfM1u219Pcd/d8F31zq/1Cgi8sb8jTu9+UJuv6/f3M0VN4ruf8E);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="38" y="293" width="60" height="43" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="38">
<mxCell style="vsdxID=52;fillColor=#767676;gradientColor=none;shape=stencil(jZDdCoMwDIWfJrfSNoztXt17CNY1WFup3d/bryWM1YHi3TnJl3A4gPViulmDEksMftRP6qMBbEApckYHikkBtoD14IO+BX93Pfu5y2RWk3/kDy++E/lCiXfprgxaciVYSVyxZ1ld5DYvxfr11x+CT3tBDifeBpP4FTKQtdxnuf8vMI24fGw/);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="74" y="313" width="27" height="21" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="39">
<mxCell style="vsdxID=53;fillColor=#999999;gradientColor=none;shape=stencil(jZBLDsIwDERP423kOqWi61LuUakpiQhJlaZ8bk+CVRFYIHZj+81IY5DdoodZAeESgz+rmxmjBnkAIuO0CiYmBbIH2U0+qFPwqxt5nodMZnXx15xwZ1/bil2dXYQP3uBrOjJsjStg/ACpFg39C1f4I3c7bvC+EtiUeBLvApOxlvuX9+/CacXPkv0T);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="66" y="313" width="7" height="18" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="40">
<mxCell style="vsdxID=54;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfAUiHkUElhGdppGdkChZxgyjOycxDUmxogKocxidKsaWemSVu1ahq8RhLkoMJKAYyEOGSlpmTAwlWZHn0cAQKQeLA2BUA);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="86" y="320" width="2" height="9" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="41">
<mxCell style="vsdxID=55;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb6lnZgYWcIOozsnMQ1KNqtaAWIWWRnqmeExFdwOMT5Ri/A4mpBrIQIRMWmZODiRgkeXRQxIoBIkFY1cA);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="81" y="318" width="2" height="9" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="42">
<mxCell style="vsdxID=56;fillColor=#a3a3a3;gradientColor=none;shape=stencil(lZHNDsIgEISfZq8Ed2NIz7W+R5NSISI0FP/eXnCjokk13mZ3v5mQAaidTT9pQDmnGPb6bIdkgDaAaL3R0aasgDqgdgxR72I4+oHnqS9kUYdwKgkX9sniQHnlqUGB6r7ZMuysr+BGiXKrDCspl/HH8Zku1HqZfme/xP715B9wFq9mRuscF1vfP5vMK/4F6m4=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="92" y="321" width="2" height="8" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="43">
<mxCell style="vsdxID=57;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfAUiHkUElhGdprGdqCBZxgyjOycxDUmxogKocxidKsYWemTlu1ahq8RhLkoMJKAYyEOGSlpmTAwlWZHn0cAQKQeLA2BUA);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="76" y="316" width="2" height="9" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="44">
<mxCell style="vsdxID=58;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWMr2dqAhZxgyjPycxDUo6q2IBYhZaGeqZmuBVjOgKPySS6mKByIAMROGmZOTmQsEWWRw9MoBAkIoxdAQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="97" y="323" width="2" height="8" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="45">
<mxCell style="vsdxID=59;fillColor=#B3B3B3;gradientColor=none;shape=stencil(lZLbDoMgEES/htcNsCr4bO1/mIiV1IpBe/v7Sompl5Tat2U4Q2bJEMz6uugU4bQfrDmruy6HmuCBcK7bWlk9jBPBnGBWGatO1lzb0p+7wpFuupibe+HhfYiQxM7F6dMrKYIUb+XoDY1uZwa6gBmlu1EBUfod3gZhDNLkH8OP5DsMy7+ZlpvwwKpJDBFfwIEgW1gKYAHDOohkgNF+PJA7iI7DpzaVbhrfuvn9umaj5CuK+Qs=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="67" y="316" width="3" height="12" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="46">
<mxCell style="vsdxID=60;fillColor=#333132;gradientColor=#5b5a5c;shape=stencil(lZHBDsIgEES/Zq+Esq3Vc63/0aRUiAgNRa1/L7gxFmNqvM3uzryQAbCZVDdKEHwK3p3kTfdBAe5BCG2V9DpEBdgCNoPz8ujdxfY0j11yJnV210SYKVdwnjKC32ne7FiJz82B7Ebbhb3esgqzwAvw1Z6zy4LhClvEc50FVsh/vvunPYp3RYM2hhpe3j8rjSv6Dmwf);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="66" y="328" width="35" height="8" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="47">
<mxCell style="vsdxID=61;fillColor=#767676;gradientColor=none;shape=stencil(jZHRDoIwDEW/pq/LbCOGZ8T/IGG4xbmRMVH+3s3GCMSIb7ftuU1zC1QNuukVoBxi8Bd1N23UQEdANE6rYGJSQDVQ1fmgzsHfXMt132Qyq6sf84YH+3ZSZg/KiesDirJ8dU6MW+Nm+BJ+m7+jYr+Af6DrI7AQ9D+9cfImnsQnnc5Yy+HO5+s0U4s/QfUT);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="74" y="330" width="28" height="19" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="48">
<mxCell style="vsdxID=62;fillColor=#a3a3a3;gradientColor=none;shape=stencil(lZDdCoMwDIWfJrdSEybs2ul7CNY12LVS637efi1BNgSHuzsn+RIOB6ieTTdpQDXH4Ef94D4aoAsgsjM6cEwKqAGqBx/0NfjF9eKnLpNZ3fw9f3jKncoXqF7iSiW+FdSy20V/gOuXFcXiRMfpc1VU5dEUfwTeoEl8OhnYWqn0e7/tMI2kf2re);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="76" y="334" width="2" height="12" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="49">
<mxCell style="vsdxID=63;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2mqZ2EGFnGDKM/JzENSjqoYppkIpXgUojvBWM+UeMUE3EtQOZCBCJq0zJwcSMgiy6MHJVAIEg3GrgA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="81" y="335" width="2" height="11" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="50">
<mxCell style="vsdxID=64;fillColor=#a3a3a3;gradientColor=none;shape=stencil(lZDdCoMwDIWfJrfSJezCa3/eQ7DasNpK7Tb39msJsiFs6N05yZdwOEDVYrpZA6olBn/TT+6jAaoBkZ3RgWNSQA1QNfigx+Dvrhc/d5nMavKP/GGVO5UvUL3EXZT4VlDL7if6B9y+bCgVhMfp8logHU1xIvAOTeLTycDWSqXf+32HaST9U/MG);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="86" y="335" width="2" height="9" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="51">
<mxCell style="vsdxID=65;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2miZ2wEFnGDKM/JzENSjqoYppkIpXgUojvBRM+CeMUE3EtQOZCBCJq0zJwcSMgiy6MHJVAIEg3GrgA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="92" y="336" width="2" height="8" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="52">
<mxCell style="vsdxID=66;fillColor=#a3a3a3;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2msZ2AJFnGDKM/JzENSjqoYppkIpXgUAq00MkFRbKJnboFbPYlOJqgcyECETlpmTg4kcJHl0UMTKASJCWNXAA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="97" y="337" width="2" height="6" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="53">
<mxCell style="vsdxID=67;fillColor=#999999;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfAUiHkUElhGdupmdgDhZxgyjOyczDqdjQXM/CDLdiQwNU5QbEK4XxiXAESS7GUAxkIAImLTMnBxKuyPLoAQkUgkSCsSsA);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="66" y="330" width="7" height="19" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="54">
<mxCell style="vsdxID=68;fillColor=#B3B3B3;gradientColor=none;shape=stencil(lZLdDoIwDIWfZrfNWBmya9T3IGHIIjIy8O/t3VxUJnHCXXf6neW0KcFiaMpeEkaH0eijvKpqbAhuCWOqa6RRo60I7ggWtTbyYPS5q/y7Lx3pqpO+uB9u3scEYOZcjN69klslfyp7b2hVNzHQEObAcCmcIGwi8DyKgJyv4f9EX2AIl5PQcAD6+++MQ5IGcAqCreEFBxoJL8Sr/V4njeSZ4xF4xZxR1BafO6tV2/oznfa/79JK/qZx9wA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="67" y="333" width="3" height="13" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Azure&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="55">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=70;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="48" y="354" width="84" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Container&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="56">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=71;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="32" y="371" width="152" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Registry&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="57">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=72;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="38" y="388" width="135" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="58">
<mxCell style="vsdxID=75;fillColor=#0078d4;gradientColor=#5ea0ef;shape=stencil(hZPLEoIwDEW/pttOaHjYNeJ/MIrSEYEp4OPvBQtDU0B2SXrbOb1JGMZNntYZE9C0urpnL3Vpc4ZHJoQq80yrto8YJgzja6Wzm6668mLyOh2UQ/SonsMLb3NPhjyMhlsCPqYCv+xkxIUqLTFyxG3tudPmZc8cetyXo9qz5fAWJP2MqeDCHwVIBWMabJMBwZLBPy6gUDLiUUjBLPKpAkDRLCuQSlb5ljY7chdSHnjgUdCZwYWaKO2voKvBNW8o5SxeMXzRXnCMtPonlp+gPZ/wbF9wd/52hrUP5jG/qqIwW2Kfu2vRl8xKYfIF);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="40" y="483" width="63" height="42" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="59">
<mxCell style="vsdxID=76;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZHNCoMwEISfZq+SZkV6t/Y9BKNZTBOJ6Y9vb8IirYJibzObb5ZlAliOuh4USDEG73r1piZowBtISVYrTyEqwAqwbJ1XnXdP27Af6kQm9XCvtOHDuYsQKSPFxJ7dnVFD9gAtiiy/7uNreAmfQBEzzM+f8cfFKzSKbyktGcOd/r5vS4wj/gCsZg==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="71" y="498" width="10" height="18" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="60">
<mxCell style="vsdxID=77;fillColor=#c3f1ff;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2KpZ2EKFnGDKM/JzENSboqqGqYbq1pKDMZjLIkuJqgcyEAETlpmTg4kbJHl0QMTKASJCGNXAA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="61" y="492" width="21" height="12" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="61">
<mxCell style="vsdxID=78;fillColor=#9cebff;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2ysZ2oMFnGDKM/JzMOjHMbHqhhVqZmZnokFsYrxmEqhizGUAxmIwEnLzMmBhC2yPHpgAoUgEWHsCgA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="61" y="498" width="10" height="18" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="62">
<mxCell style="vsdxID=79;fillColor=#c3f1ff;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfAUiHkUElhGdiqWduBBZxgyjOycxDUmxogKrcgHilMD5WxSQ5goBiIAPh17TMnBxIUCHLo4cNUAgSrsauAA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="61" y="504" width="10" height="12" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="63">
<mxCell style="vsdxID=80;fillColor=#9cebff;gradientColor=none;shape=stencil(UzV2Ls5ILEhVNTIoLinKz04tz0wpyVA1dlE1MsrMy0gtyiwBslSNXVWNndPyi1LTi/JL81Ig/IJEkEoQKze/DGRCBUSfoYEBSI+RQSWEb2KpZ24EFnGDKM/JzENSjqrYgFiFMFuwKiXRCQSVAxkI36Zl5uRAAgtZHj10gEKQkDV2BQA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="71" y="504" width="10" height="12" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="64">
<mxCell style="vsdxID=81;fillColor=#cccccc;gradientColor=#707070;shape=stencil(jZTRcoMgEEW/htedBUTZ5zT9j0xjqlOrGWNa8/fBgJHFqekbXhbP5a6r0LtLdTiXQuFl6Luv8rc+DpXQb0Kpuq3Kvh7cSui90LtT15effXdtj/75fJgqp9V39zO9YfTnCEFOhxTevFBYyB7Cuy//uPa+XoZ9BK3DiVlSoI2XRuWlnMAE6RakLIMioEa9rgoSxuymbiOr2pEz5hW3jMblcm0huFIEecGNxtcJrgiI23yZEsgiCckCEWdnkCcZWQlGcbQCqznbGjByCy452bqUORg5lZyRnFMRUHGqxI3WkAvIstYk5SuLiNxk7GG2RUk4yz3mtkQx/zccMs/uPgOKUp/ZUexq3cCZvwzPH99FEtOrYXOLZVBPddP4OY/308F2kv8p6P0d);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="56" y="525" width="31" height="16" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Application&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="65">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=82;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="28" y="545" width="186" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="66">
<mxCell style="vsdxID=85;fillColor=#5e9624;gradientColor=#76bc2d;shape=stencil(lZbRdoIwDIafhtuetoFCr517D8/EyZkTD+qmb79yStM0Hah3WP7wJe2f2AJW5/3m1BZani9D/9X+dtvLvoC3QuvuuG+H7uKeClgXsNr1Q/s59Nfj1v8+bUbl+PTd/4xfuPk4JaQag7S8+4WyFsavvHv9oTsSfXwdAvALk/7jOniAwgirp4hpSQpj/cpNT6JG6GnproOohEkEKKonDQSNNotsK5TibMnZVlSGsVNwJRl2iVm5xEvGTIFO0WTFYlaBqQS8VqyLqLNicQ8DWwvZcLbhbC3ApnB+yqkrbCNsCJixEc/WWgEsW+KUkK5TVXWaLrFKyNep6jLNF70yj7ccH80S8EpKBo9eCfCoSd0yA47y3C+kakwu98xC1Wia+apxO3PXEDxwfLQN4smZZ7751yXj6+BpJMnqRU+7GGPShMfNYS7BbZ7r4SBYmByQguMn54cWTS440XUCG1tZ2ek+ZTM521eebWxhPFZyYNlAxVMlZ8+HzNOeiqOLOLphM5a1EfU8pIqnmoi1EO3KbKCS1lUPi300NsgeqswEt2ygIptMNj5QI3v5n/fVf+rHevcQrwW77nDwtwr6nl8j3JK/gsD6Dw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="252" y="478" width="63" height="63" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="67">
<mxCell style="vsdxID=86;fillColor=#b4ec36;gradientColor=none;shape=stencil(lVfZctswDPwavXJEgOdzmvxHpnFqTV074zht+veFKonHMrLsNx273CUJgGDHD+/757ddR/375Xz6ufszvFz2HX/riIbjfnceLvLU8WPHD6+n8+7H+fRxfJne355H5Pj06/R7HOFz4sWgohtZ1P+dvhivtPn/5WkiHIZjQbBa+VAReuV8if/+cZ4UdGJQnBl6odAk0X/SDJJR7AyaP/UzghfE/JvL3yuaJiq2oFkLmqC8BsHsihNofK9kYbb16mjVm+uriU5lPF0bFYrh2myfV5ASKLjabL8oJa9in91VcVAOedCk3DMoR2VQmCwIx2Wg1VkbV2tLALBB7QDaAvJUi2vFtbZgor2mXQRwjlAdam1SDNExhjHX2qQCRMc4kl4PD5Z5L4wVAroVijetXV3bZQk82/jVvvYrKLaN4Tm01vR1Tsysv8yi0I/U6EOAMindys9LuCYvG+FBnlKSJXlSFqefd7DQdx70aUm/dX0MFlKxUV/SJqmzolY9oTihLF+JloIxV2uvbNiyC4kVcw1Lhllp2C1BBUhrQdlQG45xK1pMLoA6cbwFfaMcLJjuodyzzRnINebLxXIyZqwWC+Bo1dlUcBar2QQlTASj5XRmX87lrL51oYQTILDKLVj0fa7p1G4ntyheCRRYrIKxEoqN4YKiE4d0YxjLQE6XbJexZm+loXAMVqEiwbO6wxOjKBZZP9xbhlxQfXtowFkpIG6LsMHdCrmg3lqEhRO/OAQ86EvQYR0qjgpOKEzrjVNLgknXLd/mqSUUFxvDBG1NEcul4VAbFlQa69YzXvJP47FR9A45ly2kV9mG5Fz29/Y3womgX/RNWPNSaxWapi7G5tTY7OpGw21PiZ2doLhtKg20OOX9gBPq2gXh7hvFDQR5yBeY1+FwmO4/5X+88Min6bLEj/8A);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="276" y="484" width="15" height="16" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="68">
<mxCell style="vsdxID=87;fillColor=#b4ec36;gradientColor=none;shape=stencil(hZfLctswDEW/xlsOCfC5TpP/yDRO42kaZxynTf++UCW+Li1pJ8sXOiAIgOCB7z5eHt+PB9If18v55/HP6en6cuBvB6LT28vxcrrK04HvD3z3fL4cf1zOn29P8+/3x0k5Pf06/56+8DXbWa+in6xI/53fGBXS/xcPs/719NbotfKuk9uktG313z8vM8BkC+LFwhST5RtftGgWwfLTaaXTouBewUURzCa1RzqjmIFZ/aIiSgTYutxMJsVhPT5jPFNSJm25aoOi3lsxcRAhEXnbuyuqAFGyURnq/RXVNj0qb3q80RrgsgQzwJMDuHjtB3jwW/Rpp28sPvR8UY1rJ9vjReQD4KOKtINPkJxiY4FulPaADyoZwJtcBxUflO2StE+V1mJ+E3TevjV/G5PllU/KxsFhSr3DXiLhBocD5LbPa1/DE2aql0BguCgHvdIleSPQWVlIlqq6Ga4pmqEL12CA/opJiIPDHsIlO64xXKKCTiAqDoPDdrO2xKa0j8rnMPBHvIHKTk0JZrxXabO4xIZxv7wK0AdTTaDC92VzGr7D5Xtl9vilIjPflfbY8APgXW1/PH6Ki4q6bIV0aSzmN+z24xVhu8TGu8HfBO1AVDTuV4q9w2xzrazwS98tdDu0wum7cGyJisxAD0hnFbeLJZWcL3wezqEppyBbRUVjtmC2ikq7nWKJyJdWgtkac81VPimP0ZdzkIEvKl5PF2frybliMHRDvuWwh/QWlTOjw9w7LCrCgJFy23wq40rDtxAwUZUeVPkUgC+GNPB12OHnLlX4ph4zla9x/UZBvshZFBPgZWLbnPCm88sPeI3LN9hdWEZHGvDQXES0c3RDb8mFuu4sDhp19xpfIbXLedt46mGfjHKbdd2MvhmtSwdrJqwIu6TLcdtMWAbObA09eJgu5diAHMXZMt4gayiPaa5NSObN6pCB2QVctoeIiwjYRhmYK9uJvoR864q0f6WSh3ofez69vs7XufZ/vL/Jq/nux/f/AA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="259" y="501" width="16" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="69">
<mxCell style="vsdxID=88;fillColor=#b4ec36;gradientColor=none;shape=stencil(lZfJctswDIafxlcMSXA9p8l7ZBqn9tSNM47Tpm9fqJK4/Izo9ibDgD4QxKYd370dHl/3O6Perpfz9/2v49P1sOMvO2OOL4f95XiVpx3f7/ju+XzZf7uc31+e5t+vj5Pm9PTj/HN6w8ds5ww5O1kZ9XuWpEQc/0oeZoPT8aUymP52jYHT5BuDr++XGaGzSQiLic420+9J9GFmkVZq0VkETpFfdRh1FoFNlNKIXSx0tuDQkmv/FpGNFHzLrg/OWYv1dqj62MqJ9MhbsTCtu4oY4iShC7H1VpHm1llRYts6q0iFIVtRTAAHsiJrkawCkEXESDZ+RJYrWcJSHdu6Fi5Ky1sqeLAtXJSUbuGatBnC5aZdC9fkNMBj8XBNV0oO4JFcauGG7CA/aoNZwooc3/DWt86KScRQxfUt2VuWMPjOXcgQUVqivk03EfC6XELBQ6xyCq/oQDEAWzJ/WBpi4+GexMZCcYgWR4STix1fxY4/bmLWU0gdf63EzPdke37E83vSPT8Muq5EZ73RDf2u8VEyN93VucPW3kJRSSvhztk07CWaFN4VE9SU5C2gmUxq0aqrKFFyw3pWJQEKOjhkGzy3JWUQrvHcdg3FJjz3Pp1N8hBb4R05WSRjC2UHPbRNj8pgFnh56bDnwlT08v6AMVLQREQJK6mPkSjFYWJWsV/hUg4J4VjGomQ9wjE7RMkP14GSdIWduGVXybuyA2ndsvuiECVjx0Xh8eCh20Wqsi1wC9O96gaMSp9PmqrhbBh80u9i766FWNkiqvz1UMZTv4d+5+M6kLZnTd5gdLbBWqpH6MqXReH2ZBatNIhXN5lToPF4iN14SrE4UtyNcL2i5XEyp248pbzYbO9QjHwReeDLpguzWbQ8Lo8qp3vFD8PCEhunO36C84tWgiUuL+j16tqfPg2TVWxiT8e9yOUdozk9RL/e2qvVfzCc//sb6h8M5KF8sj0fT6f5i6/+Hz/xRDR/HvL9Hw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="293" y="501" width="16" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="70">
<mxCell style="vsdxID=89;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZbbchoxDIafZm81luXjdZq+R6YhhSmFDCEteftouz5JDBt6twhrP1v69a8nenjbPr1uJmvezqfjr83f3fN5O9G3ydrdYbs57c78NNHjRA8vx9Pm5+n4fnhefr8+zSvnp9/HP/MbLktezpDdnGXNxxKxGYj+Rb4vCT/eT0sGLgvQmJJQApYghyV0seW1EVwsq0oIE5TIhcoiC8GXRSWEDtCuwVOEZCU+g3eSngykLOkekpP0yHSSdAK3evLggJKEIxgr4d4DkoQbSXYesiIbcHmNTAGiOraBHCXZxt7LGmqRCuc8HyQ8AMbVhhNgnlTNVckjeCvRnBVVw7m5SaJnUaQ1NnfST1ptJaXBjTp0BkuSjL18tdcOPK6WHJyTZMpX5AghSLhzENSxuRJZwl2CsCpzPjeqc3sLXtFt6gXt6nOq4xTBqLL7AEmUfb87DKYwZhSJBAirfSIeBJIbDgm82m8Ai3K/Ea/2y5UnVa/owbgv6tVUXUKRa6xEihmULSRbz9XxWIXR8ClUdd/CU7WtPiEGSM9n0Pg8aLl2y4JVpphD1fOt4rMMUeFTl2FXpq5+s/JK993P2oiWNTfY/tqQ+1tt802nLHHcX7WhPl53n5yFgWpK87U/sBSycqexPbXLpnvYvY1n/aCS/SipqjK8+hqO6qQeUp3/Uve8QFd/nKg2ZBI+TCa1DmX9VdAjLz1izGimQqvfkcgp6vPpXVNuK1bvXzM1rGXodwcDJsoNu1Dd8Aaf1UTKJBwCqe8334iSEguxqaLiD/emahz64iQLdsdN678T+KFf7F52+/1yLxz/1xdBDi2XSHr8BA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="274" y="500" width="19" height="34" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="71">
<mxCell style="vsdxID=90;fillColor=#5ea0ef;gradientColor=none;shape=stencil(jVLbDoIwDP2avZLRBonPiP9BZMgiMjJA4e9lKYatBsNbL+fs9HQVmPV10SkBsh+seai3Loda4EUA6LZWVg9LJDAXmFXGqrs1Y1tS3hUO6aKnebkXJuIl0lFAzpTGkvIrYW+jJXBM7TSNTrAS4pAhJ2CFGTZSvGKQYzAYY0d2g68FgAjPoaw/2lqSoWjCNP9KegpfUeaTufRHwhBxyCNz6C/tV2Hmu97zyP6z0e3hv1+C7Wgq3TR0c36fH9lSogPF/AM=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="278" y="504" width="11" height="11" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Azure Load Balancer&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="72">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=91;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="205" y="545" width="321" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="73">
<mxCell style="vsdxID=94;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(lZHdDsIgDIWfhltSfgxwPed7LBkT4oSF4d/bC5LFqXHOu9P2a3PSg1g1mmbQiMIYgz/oi22jQWyLKLXO6GBjUojViFWdD3of/Mm1pR6aTGZ19Od84Vr2uMKK5C0Kt9KBR7UrcG/dDIYXkADe0LWwFFiq7/CnDQILRqbhBAuBiVyPE4U5/8fMgpUfcBLP13e270ty8/l7VKlVYmb1HQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="262" y="294" width="20" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="74">
<mxCell style="vsdxID=95;fillColor=#341a6e;gradientColor=none;shape=stencil(nZPLDoMgEEW/hi1hwAeurf0PE7WSWjFoX39fKGkqGrF0N8OcIXduchHLx7YcakTJOCl5ru+imlrEDohS0be1EpOuECsQyxup6pOS176y/VAa0lQXeTM/POweMRuUPG2XYf7ujxbtRL+J8tTHAnHpT/8T7EH/lrtAXRMiis1sfh14r4swZA6fcpyE8ODl13ogiPar3+ddd3iMObh8gqPt/2OGE+byLIzXfnn0r/UA+NwM1b/P6+Kbp0Z0nY3jfL7Mn36y2WXFCw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="262" y="295" width="10" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="75">
<mxCell style="vsdxID=96;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(jZHNDoMgEISfhitBkApna9/DRCykFAxif96+kI2pNSnxNsN+u5kwiLWz7ieFKJlj8Df1NEPUiJ0RpcZpFUxMCrEOsXb0QV2DX9wAfuozmdXdP/KFF+xxklcoeYMFdwHSGrchf8GKYE6PwqLBQv6H+f50IcU6XOHmhKU4jlcS1/XhJIUcJTKJ73ePxlpoazvf15OeoFrWfQA=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="284" y="295" width="20" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="76">
<mxCell style="vsdxID=97;fillColor=#341a6e;gradientColor=none;shape=stencil(ndNLDoMgEAbg07AlwFDEtbX3MBErqRWD9nX7aknTohFLdzP6MfkhGQRZXxedQoz0gzUnddPlUCPYI8Z0Wyurh7FCkCPIKmPV0ZpLW7q+KyY5VWdznSbc3TkynWDk4boUy1d/cLTR7SqVSchS4ut3/xMO0L/jzqj/CJxhmvi3o8HbAU655xOJRYynQb/MQ6N0OP22919HCkxmXmC+Pn8HWAjfQ5ynPJR/mYfS0PzY/Nt+LD77VOmmcev4/X++f+Mnt7uQPwE=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="284" y="295" width="10" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="77">
<mxCell style="vsdxID=98;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(lZHdDsIgDIWfhltSfgxwPed7LBkT4oSF4d/bC5LFqXHOu9P2a3PSg1g1mmbQiMIYgz/oi22jQWyLKLXO6GBjUojViFWdD3of/Mm1pR6aTGZ19Od84Vr2uMKK5C0Kt9KBR7UrcG/dDIYXkADe0LWwFFiq7/CnDQILRqbhBAuBiVyPE4U5/8fMgpUfcBLP13e270ty8/l7VKlVYmb1HQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="252" y="313" width="20" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="78">
<mxCell style="vsdxID=99;fillColor=#341a6e;gradientColor=none;shape=stencil(nZPdDoMgDIWfhlsCFJFdu+09TMRJ5sSg+3v7ybjY0Ihjd2352pyWHATF0JS9QowMozVnddfV2CDYI8Z01yirxylCcEBQ1MaqkzXXrvJ5XzrSRRdzcxMevo+4DkaePqME83fh6NlWd6uszLFcZymZTya/wxH0f71zNrwDp1iKcD+GRUQyYMkDPt9hlsLTKL/UQ0Vs11T923x4H5lhSRP+PwMsIOR5Gk+z2L5LPZTF7pmqf5ufgo+pat223pPf73MTTiVvYDi8AA==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="252" y="313" width="10" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="79">
<mxCell style="vsdxID=100;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(jZHNCsMgEISfZq9itGJ7TtP3CMRUqdVgTH/evsoSmgYq3mbcb5fBAd7Oup8UMDrH4G/qaYaogZ+BMeO0CiYmBbwD3o4+qGvwixvQT30ms7r7R77wwj1B8wqjb7ToLkha4zbkL9hQImrZoySS/YfF/nIhxDpcYSkJ5fV4cyKH6iCFGCUyie9nj8Za7Go735eTnrBY3n0A);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="274" y="313" width="20" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="80">
<mxCell style="vsdxID=101;fillColor=#341a6e;gradientColor=none;shape=stencil(nZNNDoMgEIVPw5YwgIJr297DRKykVozav9tXSpoWjVi6mwffTN5M8hDLh7roFKJkGHtzUjddjjViO0SpbmvV63GqENsjllemV8feXNrS6a6wpK3O5mon3F0fsR2UPJzKcPrSB4c2ul1FpcBynQXi02/9ExxA/7Y7Q/0jcIoJ+NtBcDuGZebxQmIew0OQX/qBJLRqrP9t3r+PTLAQPp9iuj4/YZjPeBbHAw/tu/QDELpnrP9tfio+iap007hAfv/PEzg9ufSy/RM=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="274" y="313" width="10" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="81">
<mxCell style="vsdxID=102;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(lZHdDsIgDIWfhltSfgxwPed7LBkT4oSF4d/bC5LFqXHOu9P2a3PSg1g1mmbQiMIYgz/oi22jQWyLKLXO6GBjUojViFWdD3of/Mm1pR6aTGZ19Od84Vr2uMKK5C0Kt9KBR7UrcG/dDIYXkADe0LWwFFiq7/CnDQILRqbhBAuBiVyPE4U5/8fMgpUfcBLP13e270ty8/l7VKlVYmb1HQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="295" y="313" width="20" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="82">
<mxCell style="vsdxID=103;fillColor=#341a6e;gradientColor=none;shape=stencil(nZPdDoMgDIWfhlsCBRWv3fYeJuIkc2LU/b39ZFxMMOLYXUu/NueUFLFibMpeIiDjNOiLfKhqahA7IADVNXJQ0xwhdkSsqPUgz4O+dZXN+9KQJrrqu5nwtH3EdAB52YwSnH4eTpZtVbfJigyLbZYSfzL5HQ6g/+v1WXcPHLCpLf1B0B/HNHf4LMc8hqdBfq2HpiGvsfr3eXc/IsGC+v8P2/MThlPm8jyOp0nI71oPhdA+Y/Xv83PwPapata29yWXdP8L5yR4wO74B);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="295" y="313" width="10" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="83">
<mxCell style="vsdxID=104;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(lZHdDsIgDIWfhlvCX2Rcz/keS8aEiLAw/Ht7wWZxapzz7rT92pz0IF6Pph00YmRMMRz0xXbJIL5FjFlvdLQpK8QbxOs+RL2P4eQ7qIe2kEUdw7lcuMKeUFjRssXIDTrkUe0AdtbPYPICUoI5WwtXEsvv7KcLShZ8TMMJlhusqvU4VViIf8wsWPkBZ/H8fG+dg+Dm8/ekcgtS5s0d);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="262" y="332" width="20" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="84">
<mxCell style="vsdxID=105;fillColor=#341a6e;gradientColor=none;shape=stencil(pZPdDoMgDIWfhtuGgoJcu+09TNRJ5tSo+3v7yVgy0Ugku2vL+aCnoYSnQ5V1BWF0GPv2Ujx0PlaEHwhjuqmKXo9TRPiR8LRs++Lct7cmt3mXGaWJru3d3PC0HDUEoy+bIQLln8rJimvdbIoTCVJti5Eu7v7mu8Qe6R8dr8TuLCIG5mxukQH1WYwAlQPIBGQUAqAC4Xlh3RIKUB7DwR52AO6UkhgSdAEBArdfiDkI7gJTRYQAGIPyjHXdEjLv3wz2sAOYgt+Slbqu7Y7Oz5dLOZXsQvPjGw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="262" y="332" width="10" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="85">
<mxCell style="vsdxID=106;fillColor=#b77af4;gradientColor=#773adc;shape=stencil(lZHdDsIgDIWfhltSfgxwPed7LBkT4oSF4d/bC5LFqXHOu9P2a3PSg1g1mmbQiMIYgz/oi22jQWyLKLXO6GBjUojViFWdD3of/Mm1pR6aTGZ19Od84Vr2uMKK5C0Kt9KBR7UrcG/dDIYXkADe0LWwFFiq7/CnDQILRqbhBAuBiVyPE4U5/8fMgpUfcBLP13e270ty8/l7VKlVYmb1HQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="284" y="333" width="20" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="86">
<mxCell style="vsdxID=107;fillColor=#341a6e;gradientColor=none;shape=stencil(nZPbDoMgDIafhlsC1AO7dtt7mIiTzIlBd3r7wcgy0Yhjd/3p1/K3SREUQ1P2AjEyjFqdxV1WY4NgjxiTXSO0HE2E4ICgqJUWJ62uXeV0X1rSRhd1sx0ero7YCkaeTu0wf+ujQ1vZraI8D7GU+PRH/wQH0L/tzlB/CQnDNjedjgXsJphyj845zmJ4GuSXbmgaGjTO/Rbtb4abn6lPZzhZ754CzsDnIY432wrMuvRDaWiXsf63eRN8b6mWbetOcZqf3555cncLhxc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="284" y="333" width="10" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Azure Kubernetes&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="87">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=109;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="216" y="354" width="270" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Services&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="88">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=110;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="252" y="371" width="135" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="89">
<mxCell style="vsdxID=112;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="576" y="111" width="345" height="192" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="90">
<mxCell style="vsdxID=113;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;dashPattern=1.00 2.00;strokeColor=#706e6f;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="576" y="111" width="345" height="192" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="91">
<mxCell style="vsdxID=115;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="866" y="107" width="47" height="6" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="92">
<mxCell style="vsdxID=117;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLtDoIwDHya/SWjDfIAiO9BZMgiMjJA4e1lKYatBMO/ftztel0FZn1ddEqA7Adrnuqjy6EWeBUAuq2V1cMSCcwFZpWx6mHN2JaUd4VDuuhl3u6FiXiJdBSQM6WxpPxG2PtoCRxTO02jC66EOGTICVhhhh1pQo7BYIwD2Q2+FgAiTENZf7S1JEPRhGn+lfQUfqLMJ3Ppj4Qh4pRH5tBf2l5h5rs+8sj+s9Ht6b9fgu1oKt00dHN+nx/ZUqIDxfwL);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="897" y="108" width="5" height="5" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="93">
<mxCell style="vsdxID=118;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(lVJBDoIwEHxNr6TdjRLPiP8wAtKIlBRQ+L3UhdCukehtO51hdsoITNry3OQCZNtZc8ufOutKgUcBoOsyt7qbJoGpwKQwNr9a09cZnZuzY7rpbh7uCwPpdjKSyqlAjoQoKd/nE9EvvSW+ous4jvaLQIUKOQADRlhFOHOQc3DZZMt2pc8AQIRxaOuvNkMyNPXTos/44upMDqEvi8qC+lthyPgpJgvpvxt8rsSfeyMm+6uVrv8pwTSsBSp0VVH//HteuAmismL6Ag==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="888" y="108" width="5" height="5" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="94">
<mxCell style="vsdxID=119;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLbDoIwDP2avZLRBonPiP9BZMgiMjJA4e9lKQlbCYa3Xs7Z6ekqMOvrolMCZD9Y81JfXQ61wJsA0G2trB6WSGAuMKuMVU9rxrakvCsc0kVv83EvTMRLpKOAnCmNJeV3wj5GS+CY2mkaXXAlxCFDTsAKM+xIE3IMBmMcyG7wtQAQYRrK+qOtJRmKJkzzr6RTuIaizCdz6Y+EIeKUR+bQXxrsR+K7PvLI/rPR7em/X4LtaCrdNHRzfp8f2VKiA8X8Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="879" y="108" width="5" height="5" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="95">
<mxCell style="vsdxID=120;fillColor=#50e6ff;gradientColor=none;shape=stencil(jZPRksIgDEW/htcMSUoLz677H47WLWO3dbCu7t8vXWiFjnV8C+FecgJB8ObS7M61IHkZXH+qb/YwNII/BJHtmtrZwUeCt4I3x97VX66/doewPu9G5Rh99z/jCffgMxpUNbpI/oaM1qDNf+YzGFrbJQZdARaZAaVM5furCwUwGhRUGA2YO+SdooZAl1FDSw1HDUJBUcMzfInrqP5QlZH6DNErVrngNFConFQuKHm6rJkzqTphQkXrlFgAmQxTroufPBeCUa96mi9y6kozMOddPTTTg5SAmPeVlua3RuWN2fLBYzKPtm3DYKf7y0n2qfALePsH);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="869" y="108" width="14" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="96">
<mxCell style="vsdxID=121;fillColor=#1490df;gradientColor=none;shape=stencil(jZPRcsIgEEW/htcd2E1geVb7H06NDdOYOBhb/XuTQkbAavu2XA7s3eEiaHVqt8dGoDyNfvhsvt1ubAWtBaLr28a7caoEbQSt9oNvPvxw7ndhfdzO5Fwdhq/5hks4xwYI51Mor0FRQPZHeAt85/qEtwy1zXmEOuXfzz40UHFfysgvAgHHKy5YMougQZvI0GPnKCkGqZ97VTVUhdfY51e8AqSMZl6MPhmtGIwrMJgPVoxlLCidj5V0jYrRL1+AJSC/fLHSJivQNrcqc5uT81rlVmVuM80J/ScofwdrKu6p3LuuC6FO98sUT1L4AbS5AQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="869" y="98" width="14" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="97">
<mxCell style="vsdxID=122;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZLRksIgDEW/htcMJNLCs6v/4Wzrltlu62B19e9tN6AUp+v4Fm4uyRm4gtbHZneoBcrj4Pvv+tdVQyPoQyC6rqm9G8ZK0EbQet/7+sv3p67i82E3Oafqpz9PEy58zxSg1HQL5ZUV+Xfasrl1XWK2GgzNzBZKTP2fJ8/TFfeVlMEfBQJjWbpg7omChdUqeOh5c5AQAXGZNRkSWQ0U6l9YA1JnuJHtDqsBywz37glkCkHPWZ9WZ6xAdoZqyjBhgTR71OQTI2f2pIaAKKN8LA2KkaD1MuVbUXlhHotHIveubTnQaT9P8Chx+mlzAw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="897" y="108" width="15" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="98">
<mxCell style="vsdxID=123;fillColor=#1490df;gradientColor=none;shape=stencil(jZJBcsIwDEVP461Gsmxirym9B1NC42maMCa0cHucyh1i05buLPk5eqN8xetjtz20SuNxiuNb+xl2U6f4SWkdhq6NYUonxRvF6/0Y29c4noad1IftTM6n9/Fj/sJZ3vkGaH6k8SIN58D5r86z8H0YFryzYAueEH+nCUxFezBmyb+couiQAJjxXJIDXEnrrEsil2RBu0zw3dTvjs7WP1sSWF9qAvu/LIkBbWmKpWXS8qY0xcoyLbrWrMaWmne/qlk90sRqnY0HqtZ5Y3LDGWh0qbqYzP9KyeNUpcMtkvvQ95Lo5X0d4dSS+PPmCg==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="897" y="98" width="14" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#706e6f;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Primary Database VNet&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="99">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=124;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="585" y="118" width="355" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="100">
<mxCell style="vsdxID=126;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="584" y="144" width="329" height="151" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="101">
<mxCell style="vsdxID=127;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;strokeColor=#706e6f;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="584" y="144" width="329" height="151" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#706e6f;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Delegated subnet&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="102">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=128;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="592" y="151" width="270" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="103">
<mxCell style="vsdxID=131;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZRNcsMgDIVPw1YDEr/rNL1HpnFqpq6dcZw2vX1xgdjQjjPdwfOTPpCQGe0u7eHcMOSXaRzemk9/nFpGTwzR920z+imsGO0Z7U7D2LyOw7U/xv35MDvn1fvwMWe4xTjBgeYg5F9RUAak/lGeo//lOsYAEQ0IVqeIpEgHOiW5YZR4cqQtOXAmOSinIZlMSSEOm2AJ2pZgFIAVWCBwLOFBclTBEYwu6QaU2KITgarowF0Jl3pJWxYig1UolSjBAswW12Duxx1MIEUJtgRWlWB7P0pmu1AtV7E1KLdFdxpcRQ/31lgVnVf9RveLvnhyuw3wzZsvEfkBSKCq4uvzJUkJUPTw5uGZq+K1db5fjYXiYHOfytP8aX88Rf/1h8UysiffdXHi19/rEQ9S/D3Q/hs=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="629" y="199" width="30" height="41" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="104">
<mxCell style="vsdxID=132;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZZLctswDIZPoy2GAPhcp8k9Mo1Ta+raGcdp3duXKkVKgGxpvJNhkB/x+smOnz73rx+7jszn5Xz6ufvTv132HX/riPrjfnfuL/mr4+eOn95P592P8+nr+FZ+f7wOnsPXr9PvYYdrWWcTJDesIvO3WAjY/je8FP/vX+eyAMv/LoLlcQW2JVQsVyoW7yH40Wk02dGDy89gwdRtqgloDRwRKEkwGrASHPMmJMHoJDkhYJBkMuDW0MkBkorZS3DykKwEMwFGxfZT8kYTR+C4AU8o4daCS4rPYJLkuxxVkPwYoR688p0DH+b8Q3+cNUjexNTQ9XluLkCEJPwXAB1gABNlfMPJo4zPTgenlgRPMjyGYBfZHRN+B85AKrm5bOQk3IFBCScPRucWkiottTDuwJEgOklH1+pY6RinsKopN36S+HzIpNo6z8Jq4plBdXUeStXXFhupxQ6sRmquItychIzIJtmWnUf9t2TNrCXCmsWImVby6zTOxslMIEQlazmDVQvbgG1UAX0b5grPBVfwXHBSZUAGz5LuAVHCMa0rWx5WLWwOOEi4UbqGrdMqODe6kpU8eBu9v5BUm1VWtb4FZAl32FBNVIGihLtQq3e7m0K9Nqqk5UlZ6b6lBqIxK+4E/qH9k4Eg918EcONSiEGmb56ZeilEiKprhiTrSymBXcrmuNe96hkj6UNT2AW9amSTDlfHdqLzFMnUtHZ1ZGKqV8qkm3kaJD4ysLoyYlvWniGuXSKzeV0dGR8gqvsq64CaV6fSbjYFc6WhNtTsIef8Mb0F3/vDoTwl5//rt2M2lXcnP/8D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="629" y="198" width="30" height="42" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="105">
<mxCell style="vsdxID=133;fillColor=#2d5967;gradientColor=none;shape=stencil(pZZBctswDEVPoy2GJEiCXKfpPTKNU2vq2hnFadPblyoFioDGSjLdKQihR+AD3xrw7uX48HwYnHm5Tpcfh9/j4/U44JfBufF8PEzjtTwNeD/g3dNlOnyfLq/nx/r388N8cn76efk1v+Gt5mULLs1ZzvypERsh0L/I15rw7XWqGbYeSAjJLykcAloib65GyIHnQ0sIAfNyCGskZAgMX0IWdtk+AjnJNhKMCJ4k2IGV3BIhlFyC4PbAVlGtgxwk2UOMClyaGxUaUJHRQMQ9tJFkzJCzJDtIqmSfIQZJtgbQSXQg8KlHn8ZzNxvBQOIMfoe5fXw7Spv369JyhBxlecGCj7I8pq7V+dbFtTqj2kpg9hU1qrEut9licn8/12YnqDHuC+fr6CV6r1X/nyD3OkVAEgkhgMHbhK3YuaywvZ1gA1jcEOx+yyEq5yhYR7LpadBikxK7LeuqdoK8O2nExa97hOBQkVdzYbXLBCu1y+ajUnve6rxbeAQTlIEQOL3GFoKaNovc0tVB0sZCSl/NroVgUSZLPrUbNf8qNhIkPjQvbZZtgIKkt0M34CE1L2qqr+9dSDHysDV4d0PWHcHSJ0unYpdK+b6prHy5kaq9F2iBpQxWDd670pctoiT5/VCx0fjNr1Y/n2w0yFP+8cEvOar5/UIxviy/mrx+Mbn8zlNYe73y0iM+7UIfSCgP68fM03g61W+h/v/646eE6ocT3v8F);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="629" y="199" width="29" height="40" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="106">
<mxCell style="vsdxID=134;fillColor=#2d5967;gradientColor=none;shape=stencil(pVjbblMxEPyavK5sr6/PBf4DQUsjSotCgfbv2aPEa3us47RC6kNyame8l5lZnwPf/Lr//PP24Myv59PT99u/x6/P9wf+cHDu+Hh/ezo+y6cDfzzwzd3T6fbb6en349fz95+ft5Xbpx9Pf7ZfeDnvy55C3HY583p+wpm2r/L36bzh4fi43OACpdBv+PL7dIawbYu9bLk8cpby+cmLuyziCmteL49sonLZ98KXVabue708sZ44r9BTJi4jupVfiSN88lRG9ESpjODJUBzBA3m3wo6ROI7YTMaP0NGStxA5eR6xQyQbRnBDya7Ag0QJgZsR2cv5IWpDDlLuTYuh5pyYV8jMZBkKTgXCdlFLWRNBzo/Yso0BWqJeplyaJrsR2wZyI7Y8wZRL5BHQt1WQ8+2MQ9JHcvQ7dtg0kYNCGI/rhQnQnUw5jMf1hRKcloobDys9s+4QMwJHpsQjsKECwMmSwQ6hCGlKieKyQ4STELWIhAtQJa8lqei5TJIgPZLsCF+4dv5egxold8Uv0jcgSdL5DuhhjRnRgxmh64I9Tpbavp0YAStjUQ5W2P5wLcV6uLeGncMkR31CK5ht9XRzcSpYaCV8a9VLIQNl79sJc6y60PVlRc9kwAiudnsRCYXoOxa14D1SreMjaz4CaOK7bfP/N4xO7koLb0esMCOyxQANhE1VPlV8TLPvWqJCwY0pEc13QEMrFVlaMwdtPmWDn/yRpUggA9aRAXzvm+dUfOmtZT/61GaONhowiK/4qAenklVoVYEnFZRVMS3VIM5eZbUkil8oY/4lfpD/6Ooc1PC5Fm5vPJGhJ035R6OOScEUXyvb8MXIPOBnWsqRzFNmngu1sE5XQfbFDhmi3xYB+jSWjvzqd1z6zJK9li6GcomRZVCQkCb53mZJcC30jbZkr1edpsHOv1qpEihisroTVqxOKXgn9jFZb9CWd28Y1UvzobZ0NR0F8rHtgQmCRfLHdOQ8MZcbmWs6NqNctq7MPHipyI4CTE92Zq7cRjwObolAOJNoyRLezvDCvzr/KTxX/emtNCJ8UMqplQqX1/hRGVjxg4pNHz4Kt886yWo3+urBFV6uJXad/UIRndw2R2pkKEAGsRIDk8TGK8AXozVuhe9bp+m1Lk1zzKbuMD7KqgDdF5uYKb66654QFb2/9vEDfgqtSWr6/SQGSaZNzH+5kn+5q+MkJeX34FtCIhTCrbFwlJJig2+1eW9/jlXG1pQkPZLi+zbtNi+Z8B3FmX5X8E3rmeplcZqjheoO+k+SPb1UCM0E25Hcsv4yNCeIX4KNEL+kBG+NOVZi9/0XYG7Jae3bMpA4vL0VnaS0/f18jSjKiD0f3JYMM+PoK9ds4n2r5UN7L3Z3fHg4v1br/4/v0eTR+R0cf/wH);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="638" y="203" width="12" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="107">
<mxCell style="vsdxID=135;fillColor=#2d5967;gradientColor=none;shape=stencil(lZTdUsIwEIWfprdnkt38XqO+ByMgHZEyBRTf3mBSyoah6F1ycpovOdluw7P9er5bNqT2h757X361i8O64aeGqN2ul317SKOGnxuerbp++dZ3x+0iz3fzs/M8+ug+zzuc8ndWwYbzV6S+s6J+Zy/ZvGm3V2Zj4PR98+uxz1vrvMiMYIq9SOqinCgrlExcTEVixMHEWdEOyhVTkQK8n4IHUJRszXCSzSBJ1vEWDVuRySFMkZXEphTIS66GC9WVI4KTYDdeoCjGwtMUWStElnSbzm8rekAVuHWDMsDJgyu6jWBBl7WhPdwQ1HCaiVIKDGv+bvcGloX95jg3BUCos3CXTYYsQiojW4VBMF6mERm6fgs/7HUHH/34yEUyBEfVWygl6eyhSNJHTxFYg+0kO1VTxU61rrRkx/Q3V4WgLVRVCcGCg+RH6Em8d9BV9IwqeJd+RiPhSoKvOxM/bE3/6mMPzGkwtstVu9nkbnu9XrfXJOXWzM8/);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="643" y="212" width="2" height="4" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Private&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="108">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=137;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="618" y="244" width="118" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Endpoint&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="109">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=138;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="609" y="261" width="135" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="110">
<mxCell style="vsdxID=141;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZbLctswDEW/RlsMCfC5TtP/yDRO7akbZxyndf++cMUnLFHpTqYBHhC8vORED+/7p7fdhOr9cj792P0+PF/2E32ZEA+v+935cOGviR4neng5nXffz6eP1+f599vTLfL29fP06zbDdc4zDpy+ZaH6M49opf79/jqHf/s4z/E6JShQJiXoPkNdcR4gAhdTTBqKEdCnKJqHMIKiFJWGYgBlR3RECKGnRwdker6O4AWeK3I9vgnK9G7hx8Nr06cmeh6wBpxZj1f/FQzY74FVEMOoDwqC7dtgNETbt8EC9V0gA9qKLiBg7NtAw/3XBN736NtGotgBA0HA0YOVW2ABbQ/nopMe1/i83brn60ZbGaZACz4XHoUAbe17rkiDcUMBeiASeAUmCnwscisKBC9WT9x6IcAcswLnDCfgzbT18OE2uzTj02zWjt5kGyDcZBuw8txvwV1R2ADOApPsosvMDkBCcR7CUHDNwcpsAi30xjYaxMIbVSSSRdBixweOw56B2WgXgmWZDkEJZ1Rlglym444IZ2STEL7sMZ+BeiwIzLBJnOOEKzTnLaE8gRLXAvtEVnTBE1jRJfaJ1Lg1PLPkpWSLRRa+AS/5vjSk8BdcYetaChqsXH4oxpr5wVevzUZRPOBaLiFwocdjmWpRKG1GSbCD6ybqaqHCipbvPtXfZoZ1PKrHlqOZE0qXlxNYF309Jmtnpd/tCnQ5Llrsd2DVCrU7DV6L/a6JueE16vN6a2fGeyUP+FTXssbv+9VmpJVuGWibokvXjSxYladUsVAHol5H+W1S7XvLQ22slp/x95e2ZV8NPb4+Len+vUp9zGKvNt+3/FHfxi+H43F+Wrf/y7c0D83vcHr8Cw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="781" y="186" width="61" height="53" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="111">
<mxCell style="vsdxID=142;fillColor=#FFFFFF;gradientColor=none;shape=stencil(pVnZcls3DP0avXJIgutzmvxHJnFqTV07ozit8/eFei+3A11SnrxJFMBDYjsAdaIPPx4/f384Wf3j9fLy18O/56+vjyf642Tt+fnx4XJ+5U8n+niiD99eLg9/Xl5+Pn/dvn//fJW8fvr75Z/rDm+bnidlrkpW/9oWrKL0/8KnTfzLz8smb7bfg1be7RoGVPSb3YWiMn4X2pd4ZVd7o31FKxd2oX3JOBXDDJ11UhzRjVcO4KNROo7wJiiTAd+okAE/qBCn+FYZA/hRXJ+lMgF+UskAPinvAT+v7s8CHvCrTsVPXhHgWwaLI35KytGIb7Oyucd/Oj93wZL45+KxbYVK+NyUz2yaMbochhcoOBVoVKjeva1glLGjgim3OjBh5gAeLeiNymBAqxLEL8e9xQCWDmxSxwFUQ8PInVsAVcNN8GUAB31sq168RkAy09N2KqZaPMTxtCErDadlR2o/njaQCLeMzkV8zwdMgB8EvmdvZcDvknIHc0E5sFaTOsB3WmnEl+lOfFnE707ZcgujZXl/ztoM5a63bMlto2wCfCPxOyk68P8YML0GsMVteWXju8Qd7K5VnIZj46riH0k9UVkofQSBaEgFNxqCTGGHA2QmGQuJQFrwDtOHx7qbRN1lqQz4NiyKFpMMBoJla9llIPDBI/AOg2lIRDYJTfH5Gkh70vRsEYO0y6UV4In9DtdvUkeO7+qxkTsXfK4wd+BTqxZ343cZPsF3Cln/BrxTSPpLdO5dwho91g6jg8emh3ItH7UKLXoOTjIP8F4wlovK2xGdfRZGcC7USFi8Yo9LRK+w48BhV/K4v2AYKxhOBvYNgrGCX7pOmkDm9llXnTc06q7Rx7YyoXovautMmAuZ+Q3hRcdz7eAgfLTKQGFMtJC5sl/lADcQPbGE2HHmeORPQZ/k20RT6LMGc5e22LwUmftrRrftpHWQ2LJiLcGpcfExuOxyb4DbRqh3gls5pEjwK1FjsZYtrpW1ckHUuU0QZYna6NVYMWOtrKNPI2pXm6ia0r6E7hG+E9FuZcfYtyCtUcABkSkW+4SV6XnwA7eTvD3P0MBTTvIU+wLKmddw97Ey6KEqeOwopsIeGr9VXzmXv7rS/p5CqmXiOM6qSolxyYrcagXMMDmZsFcNplgqdeE4wRNWly6CW1nV2BBqPaLfmIuKzFGQiT68bVoYM8u6JhOMR8Lk3nnxEBSh4W+8wFB9FKn43TsRSSk6cDzM0J3Gfh674KDU9bsGdeqBs/SU940mi3W4R4ADOxwd4IHEtsGhdmrGTRS4gI254OZTIts1vQ8hYSfj3NToNbrufESS++NgCQq6scGeXdiSCwULbebCRrcUZvWxD4eqME+MFFSEtworH7b4qpCXJoo+PXKviSVh9VTCOgZfZuVTTf9kdjyhshQh8XtoM0Ve0uhzM8/i8hhdpJcPz/Ldrun073Y4BbEUlr3+da8N4POXuP6NrXI9zv9cVwx4Vwvj9oNE4fpjUy3GDv7Q/ln4dn562v6Y6H/HfyJ4afsXgz7+Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="780" y="186" width="63" height="55" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="112">
<mxCell style="vsdxID=143;fillColor=#2d5967;gradientColor=none;shape=stencil(pVrbctw2DP2afeWIN5B8TtP/yDRO7alrZxyndf6+2llRhHCw4O70bS2DPCCIg5t0ip9+PH75/nAKy4/3t9e/Hv59+vr+eIq/nUJ4enl8eHt6X3+d4udT/PTt9e3hz7fXny9fL39//3KWPP/6+/Wf8w4fl3XJxXxeFJZf24PqyuXJ7xf556cXJu/JNfp/C3J0wViw3CXszv/i8ovQ5o+fb5fz+r6ilm3F9iRtO3yEbYux5/Ykpq7E8hG3Y/lxrO1RXISqEtpHJ6BDGxtvWD4fsUNB7OxSOmJPgMnlcET27Qi7mz0MXQVsV+PXMIENu6oe2xG2jV3DsJowd4MTx+gWceI2uefIrrGfeRHQxfkyha4u1SN0cSZyCmPbbgk4dmK2CbsvC+wcXI1H7MVCzsxMnssP317pRAJWYDKJWzDJu6WZmFSHVl2NI2bxwz+7c0ULtDD2MXIJG5cA9+uTk9hoY29e74odvcDOQGNa/bMK7CyxCX3Lk2nsOi5nYMtzcykLW1LKPjchoaoTyLm5LCwOBlccLNmEUtw6AXIEJ0NkvOoJcmIXdA05JefjEZkgdibGkm7txcZeA0+TfhbBz9YwRyJjrD4u4WMY0SbuUnb05oG546cjeFAcDay+WgOOnu2jhwCJwxdpd4++FjzmSmbFXSEL2yPFlKy1ZtQ9CITdxtLsHl09TjyuyhIhFrhzlv67DwZpdVbX9Sd2nTYvBI+FY2GEk5WKClCgEJwsqMwLNpWaswCq1GgiX2D/ZJpoTRXk71rA8totGhFqZJ/g7juYL4BbDqLc9+YVy/Na0mmkSEmha9rfo8xE+njQDKrHen1vnkn2CtVSPR+7mlgMUZZzNr3J3JuAWNb2xNLVTarTMjLMHpLs2nutCTvE9UZndXYSITRgCC0iigXpIhBAF5ckOJbfFZu8NU/J5FELFAzRW4RsYKtzirT1xSZp1Vcaq7JI0lNQBX2lsfwMXKnp+LY932CfFMoRmdNnb5wMH5+w7chNvxzZsxZTlsM2iLox2IkGouI2EtCl85ggbNLZ3r5Bap11zhXKgIQ1CM+PYbfrzCeGyDWfYHWVx207exP0NxnZS6wD62VIsQiUwVbTgQ6xrDz0VXqiJPSlZRptaAZemRk8btunCixd7MY6IrcIraCV3Bqj5E1OeCeHpuJHhhKrsrcnMqlAG43tBSVws4Jxj25p4WlayYn83bypLJPvkyzRCxUxQGsEHTfLvP3Wq4XKydBRMY8qne9+e3s3QE7OOBZzqhMxCIxNe8ODs6SG87OAMw771AH5zGw5mj8ZfvYLiSgStUsWHt9kNQo+D61iA/LHCuTn5+mWA99QrBTt7hxnIhEnYJF5ELs12SuCd0Q5dYfBCE6UIw4nEqtMDfgCwwnAF70q9EnTkjQVGMqONVzhIrjEpa7bawYfcWCpwAdMqmkBV4kw0bDKFS7epWdze0xqSUS7qIzblKkXGApaGbinNoKkx417zMO0oMBnxVI0GTUmCLmdlzu2ckkNRo34iiabGSYrVYxHQuHMK3sY/YDVs5+MGpWSz8uQq4T7jBWUEsjkDAPcDWNJkm+nRBBLVWEFFppWCcAWbIepEzUTGIkWnMdiqUcR7kcORMl825EjTKH3PcfgXQZ6CkdYwmEkmS6pNIf7nh0DA7w8LeEAdlob8tHAqA1lRc/M2B/NKy6ajJ6VmouU+IPhj8qchzR5c6jwkGDurfCQMPYpPJwdXeEhCWzJQ6zFkYdw2xMelsmEXOFhwf5U4WFpJ3k/koebyO2+UUSgUoZahYAQ8EI5mVPheXN194JZ+1btd77Iz4pdr0LQii9oFI7WWeGtXESVAREZWvGTBqRoncUmhaNVKbyRpFUERoWh04MrFK1YJUiWViVNA02PNz7haJvNRRSSNpxq8qq4d3FZa08kT5scdoCH4nShKS/pCwSJJrOm0r7Kw8/YZ5l2Jr3+GJ9ufXt6fr58+cX/Lz/1Wh9dPhOLn/8D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="781" y="187" width="60" height="52" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Oracle Autonomous&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="113">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=145;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="736" y="244" width="287" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Database Primary&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="114">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=146;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="744" y="261" width="270" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="115">
<mxCell style="vsdxID=147;fillColor=#312d2a;gradientColor=none;shape=stencil(pVbbcsIgEP2avO7AAiE8W/sfTo01U5s4UVv79yWFJFwkmOkbrmc5Z6+hYJvLcXeuCySXa9991N/N/nos2EuB2LTHum+u+lSwbcE2h66v3/vu1u7N7/NuQA6nz+5ruOFu/JQCKQYvJD/GIjhI/md5NQ5vt954UAOghFgHaxAIFI3pjiHGGriEqrIYFlNbExeApct9alpXrIASPbE4GhJatQeTvlriK1UcVOlrJYFOnRBfZpaVAxdBjgBZRDyBRhPwMEcRN0UgaiFF1RywZSYL6Pl6Y6gkKLoyNEVAYD42TSVzwSkJrMrQT9UK23Eid2oetuNE7XRSijtIVX5QVjv4o0gAfXw0DWE2gjl0Z8xv5TEP7qSyiJU9FRcf0zTKzBaNQ8kyNRNAeKZkuqorm0WACFvVaUKMQGP/OP2c4o7mxM8RnSPOD+F8eWLCn4hrXhzJsJwNlIoqt9ecKj1epk6lH+9Sp3kSnH5u8jOxFh99/lD5DsxmJXG/pP+Bi9KuvNTKCNSsxS/LyeP1YX4pHJrTyTw03P/Dl4U2mVcJ2/4C);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="413" y="199" width="163" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="116">
<mxCell style="vsdxID=148;fillColor=#312d2a;gradientColor=none;shape=stencil(nVRdc4MgEPw1vt7AHZ/Pafo/Mo2pTq1mjGntvy8WawUmMvYN1112uYMr6HCrTteyQHYb+u6t/KzPQ1XQU4FYt1XZ14NbFXQs6HDp+vK17+7t2X9fTxNzWr13H9MOo9dZC0ZOKmRfHpECtPhBnr3g5d57BfcEztgsmAGJwNFDI8acGRAajJk5lFrPkJCAau3d1O06rAYSQVgEhVtZnYLbMC0Lk1oFVoRZWZRTgTZhzqytAkVRkQApcV5IvxCIuEipOUdgdqNIFhgPO8o22Kv9PWI0WL7zcJaBxPzp3M3S2eNNTTYZ/6Vj8ZVc3Fd9j6/kSOlteuSdlDb3WHYLkucodSAQBPTYgP2bK13lN4NHOfbyt7Pk+W7xN7MuddP4kbf+H884B/n5SMdv);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="844" y="199" width="268" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="117">
<mxCell style="vsdxID=150;fillColor=#dae8fc;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="444" y="200" width="102" height="14" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:14.82px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;VNET Peering&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="118">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=151;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="449" y="199" width="177" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="119">
<mxCell style="vsdxID=152;fillColor=#312d2a;gradientColor=none;shape=stencil(pVbbcsIgEP2avO7AAiE8W/sfTo01U5s4UVv79yWFJFwkmOkbrmc5Z6+hYJvLcXeuCySXa9991N/N/nos2EuB2LTHum+u+lSwbcE2h66v3/vu1u7N7/NuQA6nz+5ruOFu/JQCKQYvJD/GIjhI/md5NQ5vt954UAOghFgHaxAIFI3pjiHGGriEqrIYFlNbExeApct9alpXrIASPbE4GhJatQeTvlriK1UcVOlrJYFOnRBfZpaVAxdBjgBZRDyBRhPwMEcRN0UgaiFF1RywZSYL6Pl6Y6gkKLoyNEVAYD42TSVzwSkJrMrQT9UK23Eid2oetuNE7XRSijtIVX5QVjv4o0gAfXw0DWE2gjl0Z8xv5TEP7qSyiJU9FRcf0zTKzBaNQ8kyNRNAeKZkuqorm0WACFvVaUKMQGP/OP2c4o7mxM8RnSPOD+F8eWLCn4hrXhzJsJwNlIoqt9ecKj1epk6lH+9Sp3kSnH5u8jOxFh99/lD5DsxmJXG/pP+Bi9KuvNTKCNSsxS/LyeP1YX4pHJrTyTw03P/Dl4U2mVcJ2/4C);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="413" y="478" width="163" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="120">
<mxCell style="vsdxID=154;fillColor=#dae8fc;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="444" y="479" width="102" height="14" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:14.82px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;VNET Peering&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="121">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=155;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="449" y="478" width="177" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="122">
<mxCell style="vsdxID=157;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="576" y="390" width="345" height="192" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="123">
<mxCell style="vsdxID=158;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;dashPattern=1.00 2.00;strokeColor=#706e6f;strokeWidth=2;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="576" y="390" width="345" height="192" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="124">
<mxCell style="vsdxID=160;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="866" y="387" width="47" height="6" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="125">
<mxCell style="vsdxID=162;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLtDoIwDHya/SWjDfIAiO9BZMgiMjJA4e1lKYatBMO/ftztel0FZn1ddEqA7Adrnuqjy6EWeBUAuq2V1cMSCcwFZpWx6mHN2JaUd4VDuuhl3u6FiXiJdBSQM6WxpPxG2PtoCRxTO02jC66EOGTICVhhhh1pQo7BYIwD2Q2+FgAiTENZf7S1JEPRhGn+lfQUfqLMJ3Ppj4Qh4pRH5tBf2l5h5rs+8sj+s9Ht6b9fgu1oKt00dHN+nx/ZUqIDxfwL);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="897" y="387" width="5" height="5" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="126">
<mxCell style="vsdxID=163;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(lVJBDoIwEHxNr6TdjRLPiP8wAtKIlBRQ+L3UhdCukehtO51hdsoITNry3OQCZNtZc8ufOutKgUcBoOsyt7qbJoGpwKQwNr9a09cZnZuzY7rpbh7uCwPpdjKSyqlAjoQoKd/nE9EvvSW+ous4jvaLQIUKOQADRlhFOHOQc3DZZMt2pc8AQIRxaOuvNkMyNPXTos/44upMDqEvi8qC+lthyPgpJgvpvxt8rsSfeyMm+6uVrv8pwTSsBSp0VVH//HteuAmismL6Ag==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="888" y="387" width="5" height="5" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="127">
<mxCell style="vsdxID=164;fillColor=#86d633;gradientColor=#5e9624;shape=stencil(jVLbDoIwDP2avZLRBonPiP9BZMgiMjJA4e9lKQlbCYa3Xs7Z6ekqMOvrolMCZD9Y81JfXQ61wJsA0G2trB6WSGAuMKuMVU9rxrakvCsc0kVv83EvTMRLpKOAnCmNJeV3wj5GS+CY2mkaXXAlxCFDTsAKM+xIE3IMBmMcyG7wtQAQYRrK+qOtJRmKJkzzr6RTuIaizCdz6Y+EIeKUR+bQXxrsR+K7PvLI/rPR7em/X4LtaCrdNHRzfp8f2VKiA8X8Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="879" y="387" width="5" height="5" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="128">
<mxCell style="vsdxID=165;fillColor=#50e6ff;gradientColor=none;shape=stencil(jZPRksIgDEW/htcMSUoLz677H47WLWO3dbCu7t8vXWiFjnV8C+FecgJB8ObS7M61IHkZXH+qb/YwNII/BJHtmtrZwUeCt4I3x97VX66/doewPu9G5Rh99z/jCffgMxpUNbpI/oaM1qDNf+YzGFrbJQZdARaZAaVM5furCwUwGhRUGA2YO+SdooZAl1FDSw1HDUJBUcMzfInrqP5QlZH6DNErVrngNFConFQuKHm6rJkzqTphQkXrlFgAmQxTroufPBeCUa96mi9y6kozMOddPTTTg5SAmPeVlua3RuWN2fLBYzKPtm3DYKf7y0n2qfALePsH);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="869" y="387" width="14" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="129">
<mxCell style="vsdxID=166;fillColor=#1490df;gradientColor=none;shape=stencil(jZPRUsMgEEW/htcd2A2wPNf6Hx2bGsaYdGiq7d83ETIC2urbcjmwd4eLoM2p2x1bgfI0hfGt/fT7qRP0JBD90LXBT3MlaCtocxhD+xrG87CP6+NuIZfqffxYbrjEc2yBcDmF8hoVBeS+hOfI937IeMegXckj6Jx/OYfYQKV9KRO/CgScrrhgzayCAWMTQz87J0kxSH3fq9LQVF5Tn1/xBpAKmnk1eme0ajBuwGI5WDWWdaBMOVbWNSnWPHwBloD88MVqm6zAuNKqLG3OzrUqrcrSZp4T+k9Q/g7WXHyn8uD7PoY6369TPEvxB9D2Bg==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="869" y="377" width="14" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="130">
<mxCell style="vsdxID=167;fillColor=#50e6ff;gradientColor=none;shape=stencil(lZLRksIgDEW/htcMJNLCs6v/4Wzrltlu62B19e9tN6AUp+v4Fm4uyRm4gtbHZneoBcrj4Pvv+tdVQyPoQyC6rqm9G8ZK0EbQet/7+sv3p67i82E3Oafqpz9PEy58zxSg1HQL5ZUV+Xfasrl1XWK2GgzNzBZKTP2fJ8/TFfeVlMEfBQJjWbpg7omChdUqeOh5c5AQAXGZNRkSWQ0U6l9YA1JnuJHtDqsBywz37glkCkHPWZ9WZ6xAdoZqyjBhgTR71OQTI2f2pIaAKKN8LA2KkaD1MuVbUXlhHotHIveubTnQaT9P8Chx+mlzAw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="897" y="387" width="15" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="131">
<mxCell style="vsdxID=168;fillColor=#1490df;gradientColor=none;shape=stencil(jZLLEsIgDEW/hm0mIcXC2sd/OFotY20drFr/3lZQC46PXUgP5Ex6BU+P5fJQCInH1jW74mLXbSl4JqS0dVk42/aV4Lng6aZxxdY1p3rtz4flQA7VvjkPL3T+nsmBhksSr76hNWhz7yw8X9l6xGsFKuIJ8TNNkCW0eXQCvzo5r0MewICHI2nA8EInYyIcSYHUgeC3qY+OBPXFkkCZWBPYfLMkfmpdY/HupWWy2BQTy37RqWYyNtZ8+1X55JcmJuvMDdAkEcVkoTqDXMaqo8n8V0p+p6ovXpHc2KryiR5/TyPct3z8eX4D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="897" y="377" width="14" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#706e6f;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Primary Database VNet&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="132">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=169;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="585" y="398" width="355" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="133">
<mxCell style="vsdxID=172;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="584" y="423" width="329" height="151" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="134">
<mxCell style="vsdxID=173;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);dashed=1;strokeColor=#706e6f;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="584" y="423" width="329" height="151" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#706e6f;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;&lt;b&gt;Delegated subnet&lt;br/&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="135">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=174;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="592" y="431" width="270" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="136">
<mxCell style="vsdxID=177;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZRNcsMgDIVPw1YDEr/rNL1HpnFqpq6dcZw2vX1xgdjQjjPdwfOTPpCQGe0u7eHcMOSXaRzemk9/nFpGTwzR920z+imsGO0Z7U7D2LyOw7U/xv35MDvn1fvwMWe4xTjBgeYg5F9RUAak/lGeo//lOsYAEQ0IVqeIpEgHOiW5YZR4cqQtOXAmOSinIZlMSSEOm2AJ2pZgFIAVWCBwLOFBclTBEYwu6QaU2KITgarowF0Jl3pJWxYig1UolSjBAswW12Duxx1MIEUJtgRWlWB7P0pmu1AtV7E1KLdFdxpcRQ/31lgVnVf9RveLvnhyuw3wzZsvEfkBSKCq4uvzJUkJUPTw5uGZq+K1db5fjYXiYHOfytP8aX88Rf/1h8UysiffdXHi19/rEQ9S/D3Q/hs=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="629" y="478" width="30" height="41" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="137">
<mxCell style="vsdxID=178;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZZLctswDIZPoy2GAPhcp8k9Mo1Ta+raGcdp3duXKkVKgGxpvJNhkB/x+smOnz73rx+7jszn5Xz6ufvTv132HX/riPrjfnfuL/mr4+eOn95P592P8+nr+FZ+f7wOnsPXr9PvYYdrWWcTJDesIvO3WAjY/je8FP/vX+eyAMv/LoLlcQW2JVQsVyoW7yH40Wk02dGDy89gwdRtqgloDRwRKEkwGrASHPMmJMHoJDkhYJBkMuDW0MkBkorZS3DykKwEMwFGxfZT8kYTR+C4AU8o4daCi4rPYJLkuxxVkPwYoR688p0DH+b8Q3+cNUjexNTQ9XluLkCEJPwXAB1gABNlfMPJVXx2Oji1JHiS4TEEu8jumPA7cAZSyc1lIyfhDgxKOHkwOreQVGmphXEHjgTRSTq6VsdKxziFVU258ZPE50Mm1dZ5FlYTzwyqq/NQqtAtNlKLHViN1FxFuDkJGZFNsi07j/pvyZpZS4Q1ixEzreTXaZxrcloZILKqgm1a2AZsowrowSldywVX8FxwUmVABq/oHhAlHNO6suVh1cLmgIOEG6Vr2DqtgnOjK1nJg7fR+wtJtVllVetbQJZwhw3VRBUoSrgLtXq3uynUa6NKWp6Ule5baiAas+JO4B/aPxkIcv9FADcuhRhk+uaZqZdChKi6ZkiyvpQS2KVsjnvdq54xkj40hV3Qq0Y26XB1bCc6T5FMTWtXRyameqVMupmnQeIjA6srI7Zl7Rni2iUym9fVkfEBorqvsg6oeXUq7WZTMFcaakPNHnLOH9Nb8L0/HMpTcv6/fjtmU3l38vM/);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="629" y="478" width="30" height="42" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="138">
<mxCell style="vsdxID=179;fillColor=#2d5967;gradientColor=none;shape=stencil(pZZBctswDEVPoy2GJEiCXKfpPTKNU2vq2hnFadPblyoFioDGSjLdKQihR+AD3xrw7uX48HwYnHm5Tpcfh9/j4/U44JfBufF8PEzjtTwNeD/g3dNlOnyfLq/nx/r388N8cn76efk1v+Gt5mULLs1ZzvypERsh0L/I15rw7XWqGbYeSAjJLykcAloib65GyIHnQ0sIAfNyCGskZAgMX0IWdtk+AjnJNhKMCJ4k2IGV3BIhlFyC4PbAVlGtgxwk2UOMClyaGxUaUJHRQMQ9tJFkzJCzJDtIqmSfIQZJtgbQSXQg8KlHn8ZzNxvBQOIMfoe5fXw7Spv369JyhBxlecGCj7I8pq7V+dbFtTqj2kpg9hU1qrEut9licn8/12YnqDHuC+fr6CV6r1X/nyD3OkVAEgkhgMHbhK3YuaywvZ1gA1jcEOx+yyEq5yhYR7LpadBikxK7LeuqdoK8O2nExa97hOBQkVdzYbXLBCu1y+ajUnve6rxbeAQTlIEQOL3GFoKaNovc0tVB0sZCSl/NroVgUSZLPrUbNf8qNhIkPjQvbZZtgIKkt0M34CE1L2qqr+9dSDHysDV4d0PWHcHSJ0unYpdK+b6prHy5kaq9F2iBpQxWDd670pctoiT5/VCx0fjNr1Y/n2w0yFP+8cEvOar5/UIxviy/mrx+Mbn8zlNYe73y0iM+7UIfSCgP68fM03g61W+h/v/646eE6ocT3v8F);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="629" y="478" width="29" height="40" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="139">
<mxCell style="vsdxID=180;fillColor=#2d5967;gradientColor=none;shape=stencil(pVjbblMxEPyavK5sr6/PBf4DQUsjSotCgfbv2aPEa3us47RC6kNyame8l5lZnwPf/Lr//PP24Myv59PT99u/x6/P9wf+cHDu+Hh/ezo+y6cDfzzwzd3T6fbb6en349fz95+ft5Xbpx9Pf7ZfeDnvy55C3HY583p+wpm2r/L36bzh4fi43OACpdBv+PL7dIawbYu9bLk8cpby+cmLuyziCmteL49sonLZ98KXVabue708sZ44r9BTJi4jupVfiSN88lRG9ESpjODJUBzBA3m3wo6ROI7YTMaP0NGStxA5eR6xQyQbRnBDya7Ag0QJgZsR2cv5IWpDDlLuTYuh5pyYV8jMZBkKTgXCdlFLWRNBzo/Yso0BWqJeplyaJrsR2wZyI7Y8wZRL5BHQt1WQ8+2MQ9JHcvQ7dtg0kYNCGI/rhQnQnUw5jMf1hRKcloobDys9s+4QMwJHpsQjsKECwMmSwQ6hCGlKieKyQ4STELWIhAtQJa8lqei5TJIgPZLsCF+4dv5egxold8Uv0jcgSdL5DuhhjRnRgxmh64I9Tpbavp0YAStjUQ5W2P5wLcV6uLeGncMkR31CK5ht9XRzcSpYaCV8a9VLIQNl79sJc6y60PVlRc9kwAiudnsRCYXoOxa14D1SreMjaz4CaOK7bfP/N4xO7koLb0esMCOyxQANhE1VPlV8TLPvWqJCwY0pEc13QEMrFVlaMwdtPmWDn/yRpUggA9aRAXzvm+dUfOmtZT/61GaONhowiK/4qAenklVoVYEnFZRVMS3VIM5eZbUkil8oY/4lfpD/6Ooc1PC5Fm5vPJGhJ035R6OOScEUXyvb8MXIPOBnWsqRzFNmngu1sE5XQfbFDhmi3xYB+jSWjvzqd1z6zJK9li6GcomRZVCQkCb53mZJcC30jbZkr1edpsHOv1qpEihisroTVqxOKXgn9jFZb9CWd28Y1UvzobZ0NR0F8rHtgQmCRfLHdOQ8MZcbmWs6NqNctq7MPHipyI4CTE92Zq7cRjwObolAOJNoyRLezvDCvzr/KTxX/emtNCJ8UMqplQqX1/hRGVjxg4pNHz4Kt886yWo3+urBFV6uJXad/UIRndw2R2pkKEAGsRIDk8TGK8AXozVuhe9bp+m1Lk1zzKbuMD7KqgDdF5uYKb66654QFb2/9vEDfgqtSWr6/SQGSaZNzH+5kn+5q+MkJeX34FtCIhTCrbFwlJJig2+1eW9/jlXG1pQkPZLi+zbtNi+Z8B3FmX5X8E3rmeplcZqjheoO+k+SPb1UCM0E25Hcsv4yNCeIX4KNEL+kBG+NOVZi9/0XYG7Jae3bMpA4vL0VnaS0/f18jSjKiD0f3JYMM+PoK9ds4n2r5UN7L3Z3fHg4v1br/4/v0eTR+R0cf/wH);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="638" y="483" width="12" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="140">
<mxCell style="vsdxID=181;fillColor=#2d5967;gradientColor=none;shape=stencil(lZTdUsIwEIWfprdnkt38XqO+ByMgHZEyBRTf3mBSyoah6F1ycpovOdluw7P9er5bNqT2h757X361i8O64aeGqN2ul317SKOGnxuerbp++dZ3x+0iz3fzs/M8+ug+zzuc8ndWwYbzV6S+s6J+Zy/ZvGm3V2Zj4PR98+uxz1vrvMiMYIq9SOqinCgrlExcTEVixMHEWdEOyhVTkQK8n4IHUJRszXCSzSBJ1vEWDVuRySFMkZXEphTIS66GC9WVI4KTYDdeoCjGwtMUWStElnSbzm8rekAVuHWDMsDJgyu6jWBBl7WhPdwQ1HCaiVIKDGv+bvcGloX95jg3BUCos3CXTYYsQiojW4VBMF6mERm6fgs/7HUHH/34yEUyBEfVWygl6eyhSNJHTxFYg+0kO1VTxU61rrRkx/Q3V4WgLVRVCcGCg+RH6Em8d9BV9IwqeJd+RiPhSoKvOxM/bE3/6mMPzGkwtstVu9nkbnu9XrfXJOXWzM8/);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="643" y="492" width="2" height="4" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Private&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="141">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=183;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="618" y="524" width="118" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Endpoint&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="142">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=184;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="609" y="541" width="135" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="143">
<mxCell style="vsdxID=187;fillColor=#FFFFFF;gradientColor=none;shape=stencil(lZbLctswDEW/RlsMCfC5TtP/yDRO7akbZxyndf++cMUnLFHpTqYBHhC8vORED+/7p7fdhOr9cj792P0+PF/2E32ZEA+v+935cOGviR4neng5nXffz6eP1+f599vTLfL29fP06zbDdc4zDpy+ZaH6M49opf79/jqHf/s4z/E6JShQJiXoPkNdcR4gAhdTTBqKEdCnKJqHMIKiFJWGYgBlR3RECKGnRwdker6O4AWeK3I9vgnK9G7hx8Nr06cmeh6wBpxZj1f/FQzY74FVEMOoDwqC7dtgNETbt8EC9V0gA9qKLiBg7NtAw/3XBN736NtGotgBA0HA0YOVW2ABbQ/nopMe1/i83brn60ZbGaZACz4XHoUAbe17rkiDcUMBeiASeAUmCnwscisKBC9WT9x6IcAcswLnDCfgzbT18OE2uzTj02zWjt5kGyDcZBuw8txvwV1R2ADOApPsosvMDkBCcR7CUHDNwcpsAi30xjYaxMIbVSSSRdBixweOw56B2WgXgmWZDkEJZ1Rlglym444IZ2STEL7sMZ+BeiwIzLBJnOOEKzTnLaE8gRLXAvtEVnTBE1jRJfaJ1Lg1PLPkpWSLRRa+AS/5vjSk8BdcYetaChqsXH4oxpr5wVevzUZRPOBaLiFwocdjmWpRKG1GSbCD6ybqaqHCipbvPtXfZoZ1PKrHlqOZE0qXlxNYF309Jmtnpd/tCnQ5Llrsd2DVCrU7DV6L/a6JueE16vN6a2fGeyUP+FTXssbv+9VmpJVuGWibokvXjSxYladUsVAHol5H+W1S7XvLQ22slp/x95e2ZV8NPb4+Len+vUp9zGKvNt+3/FHfxi+H43F+Wrf/y7c0D83vcHr8Cw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="781" y="466" width="61" height="53" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="144">
<mxCell style="vsdxID=188;fillColor=#FFFFFF;gradientColor=none;shape=stencil(pVnZcls3DP0avXJIgutzmvxHJnFqTV07ozit8/eFei+3A11SnrxJFMBDYjsAdaIPPx4/f384Wf3j9fLy18O/56+vjyf642Tt+fnx4XJ+5U8n+niiD99eLg9/Xl5+Pn/dvn//fJW8fvr75Z/rDm+bnidlrkpW/9oWrKL0/8KnTfzLz8smb7bfg1be7RoGVPSb3YWiMn4X2pd4ZVd7o31FKxd2oX3JOBXDDJ11UhzRjVcO4KNROo7wJiiTAd+okAE/qBCn+FYZA/hRXJ+lMgF+UskAPinvAT+v7s8CHvCrTsVPXhHgWwaLI35KytGIb7Oyucd/Oj93wZL45+KxbYVK+NyUz2yaMbochhcoOBVoVKjeva1glLGjgim3OjBh5gAeLeiNymBAqxLEL8e9xQCWDmxSxwFUQ8PInVsAVcNN8GUAB31sq168RkAy09N2KqZaPMTxtCErDadlR2o/njaQCLeMzkV8zwdMgB8EvmdvZcDvknIHc0E5sFaTOsB3WmnEl+lOfFnE707ZcgujZXl/ztoM5a63bMlto2wCfCPxOyk68P8YML0GsMVteWXju8Qd7K5VnIZj46riH0k9UVkofQSBaEgFNxqCTGGHA2QmGQuJQFrwDtOHx7qbRN1lqQz4NiyKFpMMBoJla9llIPDBI/AOg2lIRDYJTfH5Gkh70vRsEYO0y6UV4In9DtdvUkeO7+qxkTsXfK4wd+BTqxZ343cZPsF3Cln/BrxTSPpLdO5dwho91g6jg8emh3ItH7UKLXoOTjIP8F4wlovK2xGdfRZGcC7USFi8Yo9LRK+w48BhV/K4v2AYKxhOBvYNgrGCX7pOmkDm9llXnTc06q7Rx7YyoXovautMmAuZ+Q3hRcdz7eAgfLTKQGFMtJC5sl/lADcQPbGE2HHmeORPQZ/k20RT6LMGc5e22LwUmftrRrftpHWQ2LJiLcGpcfExuOxyb4DbRqh3gls5pEjwK1FjsZYtrpW1ckHUuU0QZYna6NVYMWOtrKNPI2pXm6ia0r6E7hG+E9FuZcfYtyCtUcABkSkW+4SV6XnwA7eTvD3P0MBTTvIU+wLKmddw97Ey6KEqeOwopsIeGr9VXzmXv7rS/p5CqmXiOM6qSolxyYrcagXMMDmZsFcNplgqdeE4wRNWly6CW1nV2BBqPaLfmIuKzFGQiT68bVoYM8u6JhOMR8Lk3nnxEBSh4W+8wFB9FKn43TsRSSk6cDzM0J3Gfh674KDU9bsGdeqBs/SU940mi3W4R4ADOxwd4IHEtsGhdmrGTRS4gI254OZTIts1vQ8hYSfj3NToNbrufESS++NgCQq6scGeXdiSCwULbebCRrcUZvWxD4eqME+MFFSEtworH7b4qpCXJoo+PXKviSVh9VTCOgZfZuVTTf9kdjyhshQh8XtoM0Ve0uhzM8/i8hhdpJcPz/Ldrun073Y4BbEUlr3+da8N4POXuP6NrXI9zv9cVwx4Vwvj9oNE4fpjUy3GDv7Q/ln4dn562v6Y6H/HfyJ4afsXgz7+Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="780" y="465" width="63" height="55" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="145">
<mxCell style="vsdxID=189;fillColor=#2d5967;gradientColor=none;shape=stencil(pVrbctw2DP2afeWIN5B8TtP/yDRO7alrZxyndf6+2llRhHCw4O70bS2DPCCIg5t0ip9+PH75/nAKy4/3t9e/Hv59+vr+eIq/nUJ4enl8eHt6X3+d4udT/PTt9e3hz7fXny9fL39//3KWPP/6+/Wf8w4fl3XJxXxeFJZf24PqyuXJ7xf556cXJu/JNfp/C3J0wViw3CXszv/i8ovQ5o+fb5fz+r6ilm3F9iRtO3yEbYux5/Ykpq7E8hG3Y/lxrO1RXISqEtpHJ6BDGxtvWD4fsUNB7OxSOmJPgMnlcET27Qi7mz0MXQVsV+PXMIENu6oe2xG2jV3DsJowd4MTx+gWceI2uefIrrGfeRHQxfkyha4u1SN0cSZyCmPbbgk4dmK2CbsvC+wcXI1H7MVCzsxMnssP317pRAJWYDKJWzDJu6WZmFSHVl2NI2bxwz+7c0ULtDD2MXIJG5cA9+uTk9hoY29e74odvcDOQGNa/bMK7CyxCX3Lk2nsOi5nYMtzcykLW1LKPjchoaoTyLm5LCwOBlccLNmEUtw6AXIEJ0NkvOoJcmIXdA05JefjEZkgdibGkm7txcZeA0+TfhbBz9YwRyJjrD4u4WMY0SbuUnb05oG546cjeFAcDay+WgOOnu2jhwCJwxdpd4++FjzmSmbFXSEL2yPFlKy1ZtQ9CITdxtLsHl09TjyuyhIhFrhzlv67DwZpdVbX9Sd2nTYvBI+FY2GEk5WKClCgEJwsqMwLNpWaswCq1GgiX2D/ZJpoTRXk71rA8totGhFqZJ/g7juYL4BbDqLc9+YVy/Na0mmkSEmha9rfo8xE+njQDKrHen1vnkn2CtVSPR+7mlgMUZZzNr3J3JuAWNb2xNLVTarTMjLMHpLs2nutCTvE9UZndXYSITRgCC0iigXpIhBAF5ckOJbfFZu8NU/J5FELFAzRW4RsYKtzirT1xSZp1Vcaq7JI0lNQBX2lsfwMXKnp+LY932CfFMoRmdNnb5wMH5+w7chNvxzZsxZTlsM2iLox2IkGouI2EtCl85ggbNLZ3r5Bap11zhXKgIQ1CM+PYbfrzCeGyDWfYHWVx207exP0NxnZS6wD62VIsQiUwVbTgQ6xrDz0VXqiJPSlZRptaAZemRk8btunCixd7MY6IrcIraCV3Bqj5E1OeCeHpuJHhhKrsrcnMqlAG43tBSVws4Jxj25p4WlayYn83bypLJPvkyzRCxUxQGsEHTfLvP3Wq4XKydBRMY8qne9+e3s3QE7OOBZzqhMxCIxNe8ODs6SG87OAMw771AH5zGw5mj8ZfvYLiSgStUsWHt9kNQo+D61iA/LHCuTn5+mWA99QrBTt7hxnIhEnYJF5ELs12SuCd0Q5dYfBCE6UIw4nEqtMDfgCwwnAF70q9EnTkjQVGMqONVzhIrjEpa7bawYfcWCpwAdMqmkBV4kw0bDKFS7epWdze0xqSUS7qIzblKkXGApaGbinNoKkx417zMO0oMBnxVI0GTUmCLmdlzu2ckkNRo34iiabGSYrVYxHQuHMK3sY/YDVs5+MGpWSz8uQq4T7jBWUEsjkDAPcDWNJkm+nRBBLVWEFFppWCcAWbIepEzUTGIkWnMdiqUcR7kcORMl825EjTKH3PcfgXQZ6CkdYwmEkmS6pNIf7nh0DA7w8LeEAdlob8tHAqA1lRc/M2B/NKy6ajJ6VmouU+IPhj8qchzR5c6jwkGDurfCQMPYpPJwdXeEhCWzJQ6zFkYdw2xMelsmEXOFhwf5U4WFpJ3k/koebyO2+UUSgUoZahYAQ8EI5mVPheXN194JZ+1btd77Iz4pdr0LQii9oFI7WWeGtXESVAREZWvGTBqRoncUmhaNVKbyRpFUERoWh04MrFK1YJUiWViVNA02PNz7haJvNRRSSNpxq8qq4d3FZa08kT5scdoCH4nShKS/pCwSJJrOm0r7Kw8/YZ5l2Jr3+GJ9ufXt6fr58+cX/Lz/1Wh9dPhOLn/8D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="781" y="467" width="60" height="52" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Oracle Autonomous&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="146">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=191;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="736" y="524" width="287" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:16.93px;font-family:Oracle Sans;color:#000000;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Database Standby&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="147">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=192;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="742" y="541" width="270" height="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="148">
<mxCell style="vsdxID=193;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTRdsIgDP0aXnMggQLPTv/DM+vKWdd6at3c348O1MK0Xbe3NL0395JAGK2O1fZQMuTHvmtfyw+36ytGTwzRNVXZud5HjNaMVvu2K1+69tTswvdhOyCH6K19HyqcA08qwGJgIf8MGWuhMN+ZTSA8n7rAEJGiwZhIiSnBeUicMSQUgsCIwRxDESNBy4ihB9q1a0ZmrQYyqVkJEqfMXlUvVj1DpF5vkJiwBMqkXsfKdEWhmpL2Slpn4giWUnXLQWWdGqOimNFgxYx+2ivF00bpS827aIHAbUqYPR5IM3s6f7to9nAIBS7sbT7U0cQwReCPsT9WzS9T2qNfPJXFhOwxElCC5xPFc6yvHUd4/z4UoP+FX+Llz1gf3DbV3tV1WHTj//lm86mwFWn9BQ==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="803" y="296" width="15" height="128" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="149">
<mxCell style="vsdxID=195;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="968" y="197" width="78" height="31" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align: center; margin: 0px; text-indent: 0px; vertical-align: middle; direction: ltr;&quot;&gt;&lt;font style=&quot;font-size:14.82px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Automatic &lt;/font&gt;&lt;font style=&quot;font-size:14.82px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;backup&lt;br&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="150">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=196;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="972" y="197" width="88" height="43" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="151">
<mxCell style="vsdxID=198;fillColor=#FFFFFF;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="723" y="322" width="175" height="14" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;div style=&quot;font-size: 1px&quot;&gt;&lt;p style=&quot;text-align:left;margin-left:0;margin-right:0;margin-top:0px;margin-bottom:0px;text-indent:0;vertical-align:middle;direction:ltr;&quot;&gt;&lt;font style=&quot;font-size:14.82px;font-family:Oracle Sans;color:#312d2a;direction:ltr;letter-spacing:0px;line-height:120%;opacity:1&quot;&gt;Autonomous Data Guard&lt;br/&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;" tags="Background" id="152">
<mxCell style="verticalAlign=middle;align=left;overflow=width;vsdxID=199;fillColor=none;gradientColor=none;shape=stencil(nZBLDoAgDERP0z3SIyjew0SURgSD+Lu9kMZoXLhwN9O+tukAlrNpJg1SzDH4QW/URgNYgZTkjA4UkwJUgGXng+6DX1zLfmoymdXo17xh5zmRJ6Q42BWCfc2oJfdAr+Yv+AP9Cb7OJ3H/2JG1HNGz/84klThPVCc=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="728" y="322" width="311" height="17" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="153">
<mxCell style="vsdxID=200;fillColor=#312d2a;gradientColor=none;shape=stencil(pZVRc4MgDMc/Da85SFTkuWu/R2+105vTnrVb9+2HQ63gCcf5hvEX8k8ChNHhXp5vBUN+77v2s/ipLn3J6I0hVk1ZdFWvV4yOjA7Xtis+uvbRXMz37TyQw+qr/R52eBo/DpQNTsh/jUEgUPJvORm+rhovzyFTHn4HHKtkL29XRinIHQeCVCwd3h+d8RBTelMGYg6RS2N6ostMBgE5jgytQ9NMCbmdnJKQSkusrnTq06o9ErLVclupJtCWyh2ZErgjMxg1A4VOjQCVE3gBjaa5Vb7gCMpzuHRRRcx5WQYY9xcgI5NbCvdkR0AqnF4CPPHGfzVMzC5Zvurq3HdcU7Q+T1vhV+UNXZdoB/epkmjz41XauO4uHXgedsBxOvbQocfb36BM7KEDb3fsYIjRHoD14jXfrlVdm/G4/O/OQ20ys5SOfw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="282" y="228" width="294" height="63" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="154">
<mxCell style="vsdxID=201;fillColor=#312d2a;gradientColor=none;shape=stencil(pZvZdtNAEES/xq99ZpFmeYbwHzkQiA8hyXESlr9ngpAcdYNK5XlznLrqqrKszdIhvnu6vX68OQT39Hx6+Hrz4/jp+fYQ3x9CON7f3pyOz+3VIV4d4rvPD6ebL6eHl/tP09+P16/K11ffHr6/LuHnxDmJ5RUK7tf0Rqky+D/vfJj0d8f7LX11UuKG/nIx66Rbv26mVinjGigK+Phymgg/CbybE/iFqGl662fQmrDYKLMm2tFxaW4rXM0ypHXVLd24ZbYh0a/tLt5ms03jytruWTM7S1KjMgtnJ8llPbsWKVVNf6M6G6oVz29tDBtlVXHrssCq83bEX8DPa9P+hGVZ+bcS5rrM2kjYVDGDT9ep+bk1HMznu6wDwaqiXbn+N980jL47NKC3W3mtd1vffKUNkuverRCjZTxcrAU9FLVigkX7KHXjg3SXi0kjnXLQiq8yJmYNGcWPe5NSYtZJtx40E9s7W7tko08Sw96wnJh10qsHzQxe6ubxhNZn2b0WUFrWR68e9DJGcVubRKMvkra+2h1i1kmvHjSTBgnMdzUte70dYTkx66RXD5rJ4+YRmd28e3H7TxQYMeukW4/210nS1ibS6MFZToeYddKrR2eiy7H+P5fvxccuPToZZc90Sf9Yv+4nSKLyDmQ/Rg/yGj+sHvjB+nU/o6SBWX4W36cHeY0fVg/8YP26n0Iu37v5qPZiACQ2jlg9MIT164a8l8QljmxFBgCRrSUaQJYwoFoaJCVqQhLfCaDQxhINIEsYUC1ldkIVn/sAFNpYogFkCQNqn+YkUaHbXoFryQJoN2Us0QCyhAHVUpzPifZOGMV3Aii0sUQDyBIGVEuJnVDE1z4AhTaWaABZwoBqqUqiQkdPtmQBFNpYogHUEgbWLcXAttTOh7v0ILI1RAPIEQZUR6NQm72YyYq0HiXWflg98gP1qp8i2TMDBiehE0CRjSUaQCVhYN3S4NmWogRqPbIACG0t0QCyhAHV0iCZC53YlgyAQhtLNIAsYUC1lOcL/HsnVAmdAAptLNEAsoQBdZ3EkRPGIIG7MmEAdOnDWKIBZAkDqqUomQs9si0ZAIU2lmgAWcKAaimZi7xgQpHQCaDQxhINIEsYUC1VckLy868rFwMotLFEA6glDKxbSkEyF3pgWzIACG0t0QCyhAHVUjsKpQ5bUzuM7gRQaGOJBpAlDKiWCjkhO7IlC6DQxhINoJYwsG4p+/PdZ/tCt0PpTgCEtpZoAFnCgGppYCe0Q2nq1NsCKLSxRAPIEgZUS3m+T27vhMq2ZAAU2liiAWQJA+o3uGaAGVCCUIe5Ro9+UdN+WD3yA/Wqn0gufzzfv3ohgBJrR6weGYJ61VCSwiUubEUGQJGNJRpAljCgWqrLTcz7JlQ/36h4MYBCG0s0gFrCgHrCIbAtDRKp7ZEFQGhriQaQJQyolsbltv2dEzLbkgFQaGOJBpAlDKiWihTqWkOtMlI7Wwug0MYSDSBLGGgvzo9efT7e3U1Pbr39v35Uq701PeYVr34D);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="295" y="390" width="281" height="74" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="155">
<mxCell style="vsdxID=202;fillColor=#312d2a;gradientColor=none;shape=stencil(pVTRcoMgEPwaXm/wDgSe0+Q/MompTK1mjGmTv68WNGBGaaZv3LLH7sFxjDaXcn8uGPJL1zYfxbc9diWjN4Zo67JobdevGG0ZbU5NW7y3zbU+uvi8H5jD6rP5Gk64uTwOaIYk5HcHCAmY/yI7xz9cW5eQ+QxP96FQoLWDbhgzfCgRMvQMelL1iBSgRChb2TqwKYGLyKZRQHrNpgSi2GnGeexTgo6dPhjeVQ585jOpm4/7k67pS1OxckDyiOEgMSWuFZhs+ZIy0Cq6JMmXycHpPhtH5O+VgdCpwvp2olRdCDmuv+VM+Okhp7eOW3CUDNpnQTK+nPSveJUf/7qp0UY6Aa2drvE/dJmDWumamZfX2OtWUux+8RhMJ1tVbq6F+/NB1kNuCNL2Bw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="105" y="322" width="141" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="156">
<mxCell style="vsdxID=203;fillColor=#312d2a;gradientColor=none;shape=stencil(nVTRcoMgEPwaXm/gDgWe0+Q/MompTq1mjGmTvy8WNYATafqG6y673MEx2lzK/blgyC99134U39WxLxm9McSqKYuu6u2K0ZbR5tR2xXvXXpuj+z7vB+aw+my/hh1uTmcMKDGokN8dkklQ8hfZOcHh2jmFcATB+SgYgQxBoINuGHNGQCrQeuTQ0nqEZAaY+9511fhhJZg8CIuQ41pWq8hVmJaHSS0Dw6g8iklgophJV5oIjxoBUmTskSYIZFyjpblA4GalRhoEhQ3lK2xvf4doNSF/P5zhkGH6dPZiqeTxjALSiZZG9vNl83o6dz2+kLO1d5eeWUe1Sj+VlwWLxyh0IJAE9NyA/5ub5aBWg0c5XuWvZ0nz7eIxsU5VXbuB5/+PJ5yF3HSk7Q8=);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="106" y="502" width="141" height="15" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="" tags="Background" id="157">
<mxCell style="vsdxID=204;fillColor=#312d2a;gradientColor=none;shape=stencil(pZTRboMwDEW/Jq9WYgeSPHfdf1QrHWgMKkq39u8blkzFaQGhviXmmHvtJBa0OZW7YyFQnvqu/Sp+q31fCnoTiFVTFl3V+5WgraDNoe2Kz649N/uwP+4Gclh9tz/DHy4hL9Ng9JCF8hoiEjT9Bd4D/3HuQoKKGQgKY0YMybC9YNhqA9ZGAjlBkcgA80jQc9m6akY2EXJkLg1onHMpuUPvSHOTkhu0kGnucSRJ/4wzs50BJC7rIFH1gaQzdySqKATp5oV5bzLJOoNg8mnYGnCK8UtVOQkZLpXlb5FZqMsZILuuoUomxzg6JUwRfDjpaeH09iQNXXwTa3n+5jQBMVwBqunfP+Kx5udmcjCv0CutvIb7xX0wHaq6DnNt/D0dZD4UhiBtbw==);strokeColor=none;spacingTop=-3;spacingBottom=-3;spacingLeft=-3;spacingRight=-3;points=[];labelBackgroundColor=none;rounded=0;html=1;whiteSpace=wrap;" parent="1" vertex="1">
<mxGeometry x="263" y="390" width="15" height="96" as="geometry" />
</mxCell>
</UserObject>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,396 @@
<svg width="1168" height="576" viewBox="0 0 1168 576" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="autonomous-database-db-at-azure-diagram">
<rect width="1168" height="576" fill="white"/>
<g id="OCI Section Boxes">
<rect x="1008.5" y="0.5" width="159" height="575" rx="3.5" fill="#E4E1DD"/>
<rect x="1008.5" y="0.5" width="159" height="575" rx="3.5" stroke="#9E9892"/>
<text id="Availability Domain" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="1041.63" y="21.816">OCI Services</tspan></text>
</g>
<g id="Azure Cloud boxes">
<rect x="0.5" y="0.5" width="895" height="575" rx="3.5" fill="#ECF3FB"/>
<rect x="0.5" y="0.5" width="895" height="575" rx="3.5" stroke="#0078D7"/>
<text id="Azure Region" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="8" y="21.816">Azure Region</tspan></text>
</g>
<g id="Availability Zone">
<rect x="8.5" y="32.5" width="879" height="535" fill="white"/>
<rect x="8.5" y="32.5" width="879" height="535" stroke="#0078D7" stroke-dasharray="2 2"/>
<text id="Subscription" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="16" y="53.816">Subscription</tspan></text>
</g>
<g id="Subscription_2">
<rect x="136.5" y="64.5" width="743" height="231" rx="3.5" fill="#DAE8FC"/>
<rect x="136.5" y="64.5" width="743" height="231" rx="3.5" stroke="#0078D7"/>
<text id="Availability Zone_2" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="441.102" y="85.816">Availability Zone 1</tspan></text>
</g>
<g id="Subscription_3">
<rect x="136.5" y="328.5" width="743" height="231" rx="3.5" fill="#DAE8FC"/>
<rect x="136.5" y="328.5" width="743" height="231" rx="3.5" stroke="#0078D7"/>
<text id="Availability Zone_3" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="440.047" y="349.816">Availability Zone 2</tspan></text>
</g>
<g id="Azure VNet">
<rect x="145" y="106" width="246" height="445" fill="white"/>
<rect x="145" y="106" width="246" height="445" stroke="#706E6F" stroke-width="2" stroke-dasharray="4 4"/>
<g id="VNet icon">
<rect id="White Vnet BG" x="339" y="103" width="45" height="6" fill="white"/>
<g id="Icon Master">
<g id="Azure_VNet">
<g id="Group">
<g id="Group_2">
<path id="Vector" d="M370.294 108.545C371.725 108.545 372.884 107.386 372.884 105.955C372.884 104.524 371.725 103.365 370.294 103.365C368.863 103.365 367.704 104.524 367.704 105.955C367.704 107.386 368.863 108.545 370.294 108.545Z" fill="url(#paint0_linear_16122_355283)"/>
<path id="Vector_2" d="M362.125 108.545C363.555 108.545 364.715 107.386 364.715 105.955C364.715 104.524 363.555 103.365 362.125 103.365C360.694 103.365 359.534 104.524 359.534 105.955C359.534 107.386 360.694 108.545 362.125 108.545Z" fill="url(#paint1_linear_16122_355283)"/>
<path id="Vector_3" d="M353.955 108.545C355.386 108.545 356.545 107.386 356.545 105.955C356.545 104.524 355.386 103.365 353.955 103.365C352.525 103.365 351.365 104.524 351.365 105.955C351.365 107.386 352.525 108.545 353.955 108.545Z" fill="url(#paint2_linear_16122_355283)"/>
<path id="Vector_4" d="M355.748 116.316L354.154 117.91C353.955 117.91 353.557 117.91 353.357 117.711L342.398 106.752C342 106.354 342 105.556 342.398 104.959L343.993 103.564L355.748 115.32C355.948 115.519 355.948 115.918 355.748 116.316Z" fill="#50E6FF"/>
<path id="Vector_5" d="M354.154 94.1992L355.748 95.7933C355.948 95.9925 355.948 96.391 355.748 96.5903L343.993 108.346L342.399 106.752C341.801 106.154 341.801 105.357 342.399 104.959L353.158 94.1992C353.357 94 353.756 94 354.154 94.1992Z" fill="#1490DF"/>
<path id="Vector_6" d="M380.057 103.365L381.452 104.76C382.05 105.357 382.05 106.154 381.452 106.553L370.493 117.512C370.294 117.711 369.895 117.711 369.497 117.512L367.903 115.918C367.704 115.718 367.704 115.32 367.903 114.921L380.057 103.365Z" fill="#50E6FF"/>
<path id="Vector_7" d="M381.651 106.752L380.057 108.346L368.501 96.7895C368.301 96.5903 368.301 96.1918 368.501 95.7933L369.895 94.1992C370.095 94 370.493 94 370.892 94.1992L381.651 104.959C382.05 105.357 382.05 106.154 381.651 106.752Z" fill="#1490DF"/>
</g>
</g>
</g>
</g>
</g>
<text id="VNet" fill="#706E6F" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="153" y="127.816">Application VNet/Subnet</tspan></text>
</g>
<g id="Icon Master_2">
<g id="Services/Object-Storage">
<g id="Group_3">
<g id="Group_4">
<g id="Group_5">
<path id="Vector_8" d="M1059.35 227.286C1057.64 227.286 1056.21 225.857 1056.21 224.143V171.857C1056.21 170.143 1057.64 168.714 1059.35 168.714H1111.65C1113.36 168.714 1114.79 170.143 1114.79 171.857V224.286C1114.79 226 1113.36 227.429 1111.65 227.429L1059.35 227.286Z" fill="white"/>
<path id="Vector_9" d="M1111.51 169.429C1112.79 169.429 1113.93 170.571 1113.93 171.857V224.286C1113.93 225.571 1112.79 226.714 1111.51 226.714H1059.35C1058.07 226.571 1056.93 225.429 1056.93 224.143V171.857C1056.93 170.571 1058.07 169.429 1059.35 169.429H1111.51ZM1111.51 168H1059.35C1057.21 168 1055.5 169.714 1055.5 171.857V224.286C1055.5 226.286 1057.21 228 1059.35 228H1111.65C1113.79 228 1115.5 226.286 1115.5 224.143V171.857C1115.36 169.714 1113.65 168 1111.51 168Z" fill="white"/>
</g>
<g id="Group_6">
<g id="Group_7">
<path id="Vector_10" d="M1098.82 184.572L1102.67 191.286L1098.82 198H1091.13L1087.28 191.286L1091.13 184.572H1098.82V184.572ZM1100.11 182.572H1089.85L1084.72 191.429L1089.85 200.286H1100.11L1105.24 191.429L1100.11 182.572Z" fill="#2D5967"/>
</g>
<g id="Group_8">
<path id="Vector_11" d="M1085 205C1088.7 205 1091.7 208 1091.7 211.714C1091.7 215.429 1088.7 218.429 1085 218.429C1081.29 218.429 1078.3 215.429 1078.3 211.714C1078.3 208 1081.29 205 1085 205ZM1085 203C1080.15 203 1076.16 207 1076.16 211.857C1076.16 216.714 1080.15 220.714 1085 220.714C1089.85 220.714 1093.84 216.714 1093.84 211.857C1093.84 206.857 1089.85 203 1085 203Z" fill="#2D5967"/>
</g>
<g id="Group_9">
<path id="Vector_12" d="M1074.88 186.286L1081.15 197.572H1068.75L1074.88 186.286ZM1074.88 182L1065.19 199.715H1084.72L1074.88 182Z" fill="#2D5967"/>
</g>
</g>
<g id="Group_10">
<path id="Vector_13" d="M1111.51 226.572H1059.35C1058.07 226.572 1056.93 225.429 1056.93 224.144V175.144H1113.93V224.144C1113.93 225.429 1112.79 226.572 1111.51 226.572ZM1059.06 177.286V224.286C1059.06 224.429 1059.21 224.572 1059.35 224.572H1111.65C1111.8 224.572 1111.94 224.429 1111.94 224.286V177.286H1059.06Z" fill="#2D5967"/>
</g>
<g id="Group_11">
<path id="Vector_14" d="M1113.93 173.572H1056.93V171.858C1056.93 170.572 1058.07 169.429 1059.35 169.429H1111.65C1112.79 169.429 1113.93 170.572 1113.93 171.858V173.572Z" fill="#2D5967"/>
</g>
</g>
</g>
</g>
<g id="Icon Text Label">
<text id="IconLabel" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="1032.12" y="245.816">Object Storage</tspan></text>
</g>
</g>
<g id="Azure Container Registries">
<g id="Azure-Container-Registries">
<g id="Group 1494">
<path id="Vector_15" d="M61.2802 299.272L69.9149 294.025L94.1114 303.134C93.5831 300.783 92.3717 298.641 90.6295 296.977L90.5962 296.81C88.5625 294.845 85.981 293.543 83.1922 293.075C83.0101 288.742 81.1171 284.659 77.9284 281.72C74.7397 278.782 70.5157 277.228 66.1829 277.4C62.6882 277.336 59.2598 278.357 56.3692 280.322C53.4786 282.287 51.2677 285.099 50.0407 288.372C46.3653 288.821 42.9742 290.578 40.4877 293.321C38.0013 296.065 36.5857 299.612 36.5 303.314C36.665 307.481 38.4733 311.413 41.5295 314.25C44.5857 317.088 48.6411 318.6 52.8089 318.455H61.2802V299.272Z" fill="url(#paint3_linear_16122_355283)"/>
<path id="Vector_16" d="M70.0844 295.874L70.1178 310.148L96.4988 315.751V305.812L70.0844 295.874Z" fill="#767676"/>
<path id="Vector_17" d="M70.0856 295.874L62.9484 300.209V313.483L70.1189 310.148" fill="#999999"/>
<path id="Vector_18" d="M82.1255 310.348L84.5268 311.015V303.244L82.1255 302.41V310.348Z" fill="#A3A3A3"/>
<path id="Vector_19" d="M79.7244 301.643L77.3231 300.776V309.08L79.7244 309.747V301.643Z" fill="#A3A3A3"/>
<path id="Vector_20" d="M86.9279 311.648L89.2625 312.282L89.3292 304.878L86.9279 304.078V311.648Z" fill="#A3A3A3"/>
<path id="Vector_21" d="M72.5532 307.847L74.9545 308.447V300.009L72.5532 299.208V307.847Z" fill="#A3A3A3"/>
<path id="Vector_22" d="M94.0975 306.512L91.6961 305.679V312.916L94.0975 313.583V306.512Z" fill="#A3A3A3"/>
<path id="ef0d1b54-a1e7-4cb9-a4e5-8a8518e7c127" d="M65.3818 309.914L64.1811 310.615V301.176L65.3818 300.543V309.914ZM67.7497 299.175L66.5157 299.976V309.147L67.7497 308.48V299.175Z" fill="#B3B3B3"/>
<path id="Vector_23" d="M96.5 315.751L89.2961 318.219L62.9484 313.483L70.1189 310.147L96.5 315.751Z" fill="url(#paint4_linear_16122_355283)"/>
<path id="Vector_24" d="M96.4995 325.923L69.9851 330.959L70.1185 312.315L96.4995 317.218V325.923Z" fill="#767676"/>
<path id="Vector_25" d="M72.5532 327.891V316.051L74.9545 316.351V327.49L72.5532 327.891Z" fill="#A3A3A3"/>
<path id="Vector_26" d="M79.7244 326.69L77.3231 327.124V316.651L79.7244 317.018V326.69Z" fill="#A3A3A3"/>
<path id="Vector_27" d="M82.1255 326.323V317.251L84.5268 317.552V325.89L82.1255 326.323Z" fill="#A3A3A3"/>
<path id="Vector_28" d="M89.2959 325.056L86.9279 325.49V317.852L89.2959 318.219V325.056Z" fill="#A3A3A3"/>
<path id="Vector_29" d="M94.1642 324.289L91.6961 324.722V318.452L93.9974 318.752L94.1642 324.289Z" fill="#A3A3A3"/>
<path id="b9f25eb4-4c88-45c2-bc4d-f992757d7e0e" d="M62.9484 326.694V315.821L70.1523 312.486V331.163L62.9484 326.694Z" fill="#999999"/>
<path id="eb9200a7-4693-4427-bdae-b33ce90ff7f2" d="M65.2158 326.657L64.1486 326.123V316.918L65.2158 316.418V326.657ZM67.7839 315.15L66.5165 315.784V327.39L67.7505 328.024V315.15H67.7839Z" fill="#B3B3B3"/>
</g>
</g>
<g id="Icon Text Label_2">
<text id="IconLabel_2" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="45.5312" y="349.816">Azure</tspan></text>
<text id="IconLabel_3" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="31.0156" y="365.816">Container</tspan></text>
<text id="IconLabel_4" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="36.8438" y="381.816">Registry</tspan></text>
</g>
</g>
<g id="Icon Master_3">
<g id="Azure-service-Virtual-Machine">
<g id="Group 836">
<path id="Vector_30" d="M95.9337 456.537H39.9337C38.8291 456.537 37.9337 457.433 37.9337 458.539V494.582C37.9337 495.688 38.8291 496.585 39.9337 496.585H95.9337C97.0382 496.585 97.9337 495.688 97.9337 494.582V458.539C97.9337 457.433 97.0382 456.537 95.9337 456.537Z" fill="url(#paint5_linear_16122_355283)"/>
<path id="Vector_31" d="M77.9337 470.72V482.368L67.9337 488.241V476.561L77.9337 470.72Z" fill="#50E6FF"/>
<path id="Vector_32" d="M77.9337 470.72L67.9337 476.594L57.9337 470.72L67.9337 464.88L77.9337 470.72Z" fill="#C3F1FF"/>
<path id="Vector_33" d="M67.9337 476.594V488.241L57.9337 482.368V470.72L67.9337 476.594Z" fill="#9CEBFF"/>
<path id="Vector_34" d="M57.9337 482.368L67.9337 476.561V488.241L57.9337 482.368Z" fill="#C3F1FF"/>
<path id="Vector_35" d="M77.9337 482.368L67.9337 476.561V488.241L77.9337 482.368Z" fill="#9CEBFF"/>
<path id="Vector_36" d="M79.9671 508.7C74.0337 507.765 73.8004 503.493 73.8004 496.585H62.0337C62.0337 503.493 61.8337 507.765 55.9004 508.7C55.0813 508.79 54.3249 509.182 53.777 509.798C53.2292 510.414 52.9287 511.212 52.9337 512.037H82.9337C82.9387 511.212 82.6383 510.414 82.0905 509.798C81.5426 509.182 80.7861 508.79 79.9671 508.7Z" fill="url(#paint6_linear_16122_355283)"/>
</g>
</g>
<g id="Icon Text Label_3">
<text id="IconLabel_5" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="27.0781" y="529.816">Application</tspan></text>
</g>
</g>
<g id="Azure load balancer">
<g id="Azure-icon-service-Load-Balancers">
<path id="Vector_37" d="M239.1 480.566L267.067 452.6C267.253 452.408 267.476 452.256 267.722 452.152C267.968 452.048 268.233 451.995 268.5 451.995C268.767 451.995 269.032 452.048 269.278 452.152C269.524 452.256 269.747 452.408 269.933 452.6L297.9 480.566C298.092 480.753 298.244 480.976 298.348 481.222C298.452 481.468 298.505 481.733 298.505 482C298.505 482.267 298.452 482.532 298.348 482.778C298.244 483.024 298.092 483.247 297.9 483.433L269.9 511.433C269.526 511.8 269.024 512.005 268.5 512.005C267.977 512.005 267.474 511.8 267.1 511.433L239.1 483.433C238.908 483.247 238.756 483.024 238.652 482.778C238.548 482.532 238.495 482.267 238.495 482C238.495 481.733 238.548 481.468 238.652 481.222C238.756 480.976 238.908 480.753 239.1 480.566V480.566Z" fill="url(#paint7_linear_16122_355283)"/>
<path id="Vector_38" d="M275.833 465.333L268.767 458.3C268.693 458.235 268.598 458.198 268.5 458.198C268.402 458.198 268.307 458.235 268.233 458.3L261.167 465.333C261.102 465.377 261.054 465.442 261.032 465.518C261.011 465.593 261.016 465.674 261.048 465.745C261.08 465.817 261.136 465.875 261.206 465.91C261.277 465.944 261.357 465.952 261.433 465.933H265.567C265.615 465.933 265.662 465.943 265.707 465.961C265.751 465.98 265.792 466.007 265.826 466.041C265.86 466.075 265.887 466.115 265.905 466.16C265.924 466.204 265.933 466.252 265.933 466.3V472.967C265.933 473.064 265.972 473.157 266.041 473.226C266.109 473.295 266.203 473.333 266.3 473.333H270.7C270.797 473.333 270.89 473.295 270.959 473.226C271.028 473.157 271.067 473.064 271.067 472.967V466.3C271.067 466.252 271.076 466.204 271.095 466.16C271.113 466.115 271.14 466.075 271.174 466.041C271.208 466.007 271.249 465.98 271.293 465.961C271.337 465.943 271.385 465.933 271.433 465.933H275.567C275.643 465.952 275.723 465.944 275.793 465.91C275.864 465.875 275.92 465.817 275.952 465.745C275.984 465.674 275.989 465.593 275.968 465.518C275.946 465.442 275.898 465.377 275.833 465.333V465.333Z" fill="#B4EC36"/>
<path id="Vector_39" d="M251.833 474.033L244.833 481.133C244.77 481.201 244.735 481.29 244.735 481.383C244.735 481.476 244.77 481.565 244.833 481.633L251.833 488.667C251.885 488.721 251.951 488.758 252.024 488.774C252.098 488.789 252.174 488.782 252.243 488.753C252.312 488.724 252.37 488.675 252.41 488.612C252.45 488.548 252.47 488.475 252.467 488.4V484.3C252.467 484.203 252.505 484.109 252.574 484.041C252.643 483.972 252.736 483.933 252.833 483.933H259.5C259.547 483.933 259.593 483.924 259.636 483.905C259.679 483.886 259.717 483.859 259.748 483.824C259.78 483.79 259.804 483.749 259.818 483.704C259.833 483.66 259.838 483.613 259.833 483.567V479.167C259.861 479.12 259.877 479.067 259.88 479.013C259.883 478.958 259.872 478.904 259.849 478.855C259.826 478.805 259.791 478.762 259.748 478.73C259.705 478.697 259.654 478.675 259.6 478.667H252.933C252.887 478.671 252.84 478.666 252.796 478.651C252.751 478.637 252.71 478.613 252.676 478.582C252.641 478.55 252.614 478.512 252.595 478.469C252.576 478.426 252.566 478.38 252.567 478.333V474.3C252.602 474.203 252.597 474.095 252.554 474.002C252.51 473.908 252.431 473.835 252.333 473.8C252.236 473.764 252.129 473.769 252.035 473.813C251.941 473.857 251.869 473.936 251.833 474.033Z" fill="#B4EC36"/>
<path id="Vector_40" d="M285.433 488.667L292.533 481.6C292.597 481.532 292.632 481.443 292.632 481.35C292.632 481.257 292.597 481.168 292.533 481.1L285.433 474.033C285.381 473.99 285.317 473.962 285.25 473.953C285.182 473.943 285.113 473.953 285.051 473.981C284.988 474.009 284.935 474.053 284.897 474.109C284.858 474.166 284.836 474.232 284.833 474.3V478.467C284.834 478.513 284.824 478.56 284.805 478.602C284.786 478.645 284.759 478.684 284.724 478.715C284.69 478.746 284.649 478.77 284.604 478.785C284.56 478.8 284.513 478.805 284.467 478.8H277.8C277.753 478.8 277.707 478.809 277.664 478.828C277.621 478.847 277.583 478.875 277.552 478.909C277.52 478.944 277.496 478.984 277.482 479.029C277.467 479.073 277.462 479.12 277.467 479.167V483.567C277.462 483.613 277.467 483.66 277.482 483.704C277.496 483.749 277.52 483.79 277.552 483.824C277.583 483.859 277.621 483.886 277.664 483.905C277.707 483.924 277.753 483.934 277.8 483.933H284.467C284.564 483.933 284.657 483.972 284.726 484.041C284.795 484.109 284.833 484.203 284.833 484.3V488.433C284.842 488.499 284.868 488.561 284.908 488.612C284.949 488.664 285.003 488.704 285.064 488.728C285.125 488.752 285.192 488.759 285.257 488.748C285.322 488.737 285.383 488.709 285.433 488.667V488.667Z" fill="#B4EC36"/>
<path id="Vector_41" d="M277.8 482C277.811 480.266 277.336 478.564 276.431 477.085C275.525 475.606 274.223 474.41 272.674 473.632C271.124 472.853 269.388 472.524 267.661 472.681C265.933 472.837 264.285 473.473 262.9 474.518C261.516 475.562 260.451 476.973 259.825 478.59C259.2 480.208 259.04 481.968 259.362 483.672C259.685 485.376 260.477 486.955 261.65 488.233C262.823 489.51 264.33 490.434 266 490.9V494.067C264.865 494.653 263.96 495.604 263.43 496.767C262.9 497.929 262.776 499.236 263.078 500.477C263.38 501.719 264.09 502.823 265.094 503.612C266.099 504.402 267.339 504.831 268.617 504.831C269.894 504.831 271.135 504.402 272.139 503.612C273.144 502.823 273.854 501.719 274.155 500.477C274.457 499.236 274.333 497.929 273.803 496.767C273.273 495.604 272.368 494.653 271.233 494.067V490.734C273.115 490.166 274.766 489.013 275.947 487.442C277.128 485.872 277.777 483.965 277.8 482V482Z" fill="white"/>
<path id="e99c3387-15c3-4f28-bd4b-cb209b430e06" d="M268.533 487.367C271.516 487.367 273.933 484.949 273.933 481.967C273.933 478.985 271.516 476.567 268.533 476.567C265.551 476.567 263.133 478.985 263.133 481.967C263.133 484.949 265.551 487.367 268.533 487.367Z" fill="#5EA0EF"/>
</g>
<g id="Icon Text Label_4">
<text id="IconLabel_6" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="194.266" y="529.816">Azure Load Balancer</tspan></text>
</g>
</g>
<g id="Azure Kubernetes Services">
<g id="Azure-Kubernetes-Services">
<g id="Azure-Kubernetes-Services_2">
<path id="Vector_42" d="M257.747 278.733L248.256 280.492V293.434L257.747 295.459L267.272 291.642V281.985L257.747 278.733Z" fill="url(#paint8_linear_16122_355283)"/>
<path id="Vector_43" d="M248.256 280.492V293.434L257.847 295.459V278.866L248.256 280.492ZM252.305 292.439L249.617 291.908V281.952L252.305 281.521V292.439ZM256.486 293.202L253.4 292.704V281.321L256.486 280.791V293.202Z" fill="#341A6E"/>
<path id="Vector_44" d="M278.29 278.899L268.799 280.658V293.6L278.29 295.625L287.781 291.775V282.151L278.29 278.899Z" fill="url(#paint9_linear_16122_355283)"/>
<path id="Vector_45" d="M268.799 280.658V293.6L278.323 295.625V279.032L268.799 280.658ZM272.815 292.605L270.127 292.074V282.118L272.815 281.687V292.605ZM276.996 293.368L273.91 292.87V281.487L276.996 280.923V293.368Z" fill="#341A6E"/>
<path id="Vector_46" d="M248.024 296.587L238.533 298.346V311.288L248.024 313.313L257.548 309.496V299.839L248.024 296.587Z" fill="url(#paint10_linear_16122_355283)"/>
<path id="Vector_47" d="M238.5 298.346V311.189L248.091 313.213V296.62L238.5 298.346ZM242.515 310.326L239.827 309.762V299.806L242.515 299.341V310.326ZM246.73 311.189L243.644 310.691V299.175L246.73 298.644V311.189Z" fill="#341A6E"/>
<path id="Vector_48" d="M268.5 296.454L259.009 298.213V311.155L268.5 313.213L277.991 309.363V299.706L268.5 296.454Z" fill="url(#paint11_linear_16122_355283)"/>
<path id="Vector_49" d="M259.009 298.213V311.189L268.566 313.213V296.62L259.009 298.213ZM263.024 310.193L260.336 309.629V299.673L263.024 299.209V310.193ZM267.206 310.923L264.119 310.425V299.043L267.206 298.512V310.923Z" fill="#341A6E"/>
<path id="Vector_50" d="M288.976 296.62L279.485 298.379V311.321L288.976 313.346L298.5 309.529V299.872L288.976 296.62Z" fill="url(#paint12_linear_16122_355283)"/>
<path id="Vector_51" d="M279.485 298.379V311.189L289.076 313.213V296.62L279.485 298.379ZM283.534 310.359L280.846 309.795V299.839L283.534 299.375V310.359ZM287.715 311.089L284.629 310.591V299.209L287.715 298.678V311.089Z" fill="#341A6E"/>
<path id="Vector_52" d="M257.515 314.64L248.024 316.366V329.308L257.515 331.366L267.04 327.516V317.892L257.515 314.64Z" fill="url(#paint13_linear_16122_355283)"/>
<path id="Vector_53" d="M248.024 316.366V329.308L257.615 331.366V314.507L248.024 316.366ZM252.073 328.346L249.385 327.782V317.826L252.073 317.361V328.346ZM256.254 329.109L253.168 328.611V317.195L256.254 316.664V329.109Z" fill="#341A6E"/>
<path id="Vector_54" d="M278.024 314.773L268.533 316.532V329.474L278.024 331.499L287.548 327.682V318.025L278.024 314.773Z" fill="url(#paint14_linear_16122_355283)"/>
<path id="Vector_55" d="M268.533 316.532V329.474L278.124 331.499V314.906L268.533 316.532ZM272.582 328.512L269.893 327.948V317.992L272.582 317.527V328.512ZM276.763 329.242L273.677 328.744V317.362L276.763 316.831V329.242Z" fill="#341A6E"/>
</g>
</g>
<g id="Icon Text Label_5">
<text id="IconLabel_7" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="204.203" y="349.816">Azure Kubernetes</tspan></text>
<text id="IconLabel_8" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="238.484" y="365.816">Services</tspan></text>
</g>
</g>
<g id="Oracle Database@Azure">
<rect x="545" y="105" width="326" height="182" fill="white"/>
<rect x="545" y="105" width="326" height="182" stroke="#706E6F" stroke-width="2" stroke-dasharray="4 4"/>
<g id="VNet icon_2">
<rect id="White Vnet BG_2" x="819" y="102" width="45" height="6" fill="white"/>
<g id="Icon Master_4">
<g id="Azure_VNet_2">
<g id="Group_12">
<g id="Group_13">
<path id="Vector_56" d="M850.294 107.545C851.725 107.545 852.884 106.386 852.884 104.955C852.884 103.524 851.725 102.365 850.294 102.365C848.863 102.365 847.704 103.524 847.704 104.955C847.704 106.386 848.863 107.545 850.294 107.545Z" fill="url(#paint15_linear_16122_355283)"/>
<path id="Vector_57" d="M842.125 107.545C843.555 107.545 844.715 106.386 844.715 104.955C844.715 103.524 843.555 102.365 842.125 102.365C840.694 102.365 839.534 103.524 839.534 104.955C839.534 106.386 840.694 107.545 842.125 107.545Z" fill="url(#paint16_linear_16122_355283)"/>
<path id="Vector_58" d="M833.955 107.545C835.386 107.545 836.545 106.386 836.545 104.955C836.545 103.524 835.386 102.365 833.955 102.365C832.525 102.365 831.365 103.524 831.365 104.955C831.365 106.386 832.525 107.545 833.955 107.545Z" fill="url(#paint17_linear_16122_355283)"/>
<path id="Vector_59" d="M835.748 115.316L834.154 116.91C833.955 116.91 833.557 116.91 833.357 116.711L822.398 105.752C822 105.354 822 104.556 822.398 103.959L823.993 102.564L835.748 114.32C835.948 114.519 835.948 114.918 835.748 115.316Z" fill="#50E6FF"/>
<path id="Vector_60" d="M834.154 93.1992L835.748 94.7933C835.948 94.9925 835.948 95.391 835.748 95.5903L823.993 107.346L822.399 105.752C821.801 105.154 821.801 104.357 822.399 103.959L833.158 93.1992C833.357 93 833.756 93 834.154 93.1992Z" fill="#1490DF"/>
<path id="Vector_61" d="M860.057 102.365L861.452 103.76C862.05 104.357 862.05 105.154 861.452 105.553L850.493 116.512C850.294 116.711 849.895 116.711 849.497 116.512L847.903 114.918C847.704 114.718 847.704 114.32 847.903 113.921L860.057 102.365Z" fill="#50E6FF"/>
<path id="Vector_62" d="M861.651 105.752L860.057 107.346L848.501 95.7895C848.301 95.5903 848.301 95.1918 848.501 94.7933L849.895 93.1992C850.095 93 850.493 93 850.892 93.1992L861.651 103.959C862.05 104.357 862.05 105.154 861.651 105.752Z" fill="#1490DF"/>
</g>
</g>
</g>
</g>
</g>
<text id="VNet_2" fill="#706E6F" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="553" y="126.816">Primary Database VNet</tspan></text>
</g>
<g id="Oracle Database@Azure_2">
<rect x="552.5" y="136.5" width="311" height="143" fill="white"/>
<rect x="552.5" y="136.5" width="311" height="143" stroke="#706E6F" stroke-dasharray="8 4"/>
<text id="Azure subnet" fill="#706E6F" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="560" y="157.816">Delegated subnet</tspan></text>
</g>
<g id="Private Endpoint IP">
<g id="Private-Endpoint-IP-Address">
<g id="Group 424">
<path id="Vector_63" d="M597.52 210.541C595.402 207.477 594.586 203.697 595.252 200.031C595.918 196.365 598.011 193.115 601.071 190.994C604.13 188.874 607.906 188.057 611.567 188.724C615.228 189.391 618.474 191.486 620.592 194.55C622.209 196.909 623.074 199.703 623.074 202.564C623.074 205.425 622.209 208.219 620.592 210.578L609.061 227.186L597.52 210.541Z" fill="white"/>
<path id="Vector_64" d="M609.042 188.936C611.524 188.927 613.961 189.599 616.088 190.879C618.215 192.16 619.951 194 621.107 196.199C622.263 198.398 622.795 200.872 622.645 203.353C622.494 205.834 621.668 208.226 620.255 210.269L609.06 226.363L597.902 210.269C596.493 208.231 595.668 205.846 595.514 203.372C595.361 200.898 595.887 198.429 597.034 196.232C598.181 194.035 599.906 192.195 602.022 190.908C604.139 189.622 606.566 188.94 609.042 188.936V188.936ZM609.042 188C606.395 188.005 603.801 188.734 601.539 190.109C599.277 191.483 597.433 193.451 596.207 195.799C594.981 198.147 594.42 200.786 594.583 203.43C594.747 206.075 595.63 208.624 597.136 210.802L608.294 226.896L609.06 228L609.827 226.896L620.975 210.802C622.483 208.622 623.366 206.07 623.528 203.423C623.691 200.776 623.127 198.135 621.898 195.787C620.668 193.438 618.82 191.47 616.554 190.098C614.288 188.725 611.69 188 609.042 188V188Z" fill="white"/>
<path id="Vector_65" d="M620.21 194.784C618.159 191.822 615.017 189.797 611.475 189.155C607.933 188.513 604.282 189.306 601.324 191.359C598.366 193.413 596.344 196.559 595.702 200.105C595.061 203.651 595.853 207.307 597.903 210.269L609.061 226.363L620.21 210.269C621.774 207.991 622.611 205.291 622.611 202.526C622.611 199.762 621.774 197.062 620.21 194.784V194.784ZM618.855 209.343L609.061 223.49L599.23 209.333C597.991 207.541 597.265 205.442 597.132 203.266C596.998 201.09 597.462 198.918 598.472 196.987C599.483 195.056 601.002 193.438 602.866 192.31C604.729 191.181 606.865 190.584 609.043 190.584C611.22 190.584 613.356 191.181 615.219 192.31C617.083 193.438 618.602 195.056 619.613 196.987C620.623 198.918 621.087 201.09 620.953 203.266C620.82 205.442 620.094 207.541 618.855 209.333V209.343Z" fill="#2D5967"/>
<path id="Vector_66" d="M613.172 198.835V196.814C613.166 196.174 613.013 195.544 612.724 194.972C612.436 194.401 612.02 193.904 611.508 193.52C611.002 193.134 610.411 192.872 609.784 192.756C609.157 192.641 608.512 192.675 607.901 192.856C607.038 193.118 606.283 193.652 605.747 194.379C605.212 195.105 604.925 195.986 604.93 196.889V198.835C604.107 199.652 603.546 200.696 603.316 201.833C603.087 202.971 603.2 204.151 603.642 205.223C604.083 206.296 604.833 207.214 605.796 207.859C606.759 208.505 607.892 208.849 609.051 208.849C610.21 208.849 611.342 208.505 612.305 207.859C613.268 207.214 614.018 206.296 614.459 205.223C614.901 204.151 615.014 202.971 614.785 201.833C614.556 200.696 613.994 199.652 613.172 198.835V198.835ZM606.565 196.889C606.557 196.34 606.726 195.804 607.048 195.361C607.37 194.917 607.827 194.59 608.35 194.428C608.719 194.32 609.108 194.3 609.486 194.37C609.864 194.439 610.221 194.597 610.527 194.83C610.836 195.062 611.087 195.361 611.262 195.705C611.437 196.048 611.531 196.428 611.536 196.814V197.684C610.758 197.32 609.91 197.132 609.051 197.132C608.192 197.132 607.343 197.32 606.565 197.684V196.889ZM609.051 207.181C608.213 207.187 607.393 206.943 606.694 206.481C605.996 206.018 605.45 205.359 605.127 204.585C604.803 203.812 604.717 202.96 604.878 202.137C605.039 201.314 605.441 200.558 606.033 199.965C606.624 199.371 607.378 198.967 608.2 198.804C609.021 198.64 609.872 198.725 610.645 199.047C611.419 199.369 612.079 199.914 612.542 200.613C613.005 201.311 613.25 202.132 613.247 202.97C613.253 203.526 613.149 204.077 612.94 204.591C612.732 205.106 612.424 205.574 612.034 205.968C611.643 206.363 611.179 206.675 610.667 206.888C610.154 207.101 609.605 207.21 609.051 207.209V207.181Z" fill="#2D5967"/>
<path id="Vector_67" d="M609.051 201.174H608.902C608.633 201.207 608.383 201.328 608.189 201.517C607.995 201.706 607.868 201.954 607.827 202.222C607.788 202.475 607.83 202.733 607.945 202.962C608.061 203.19 608.245 203.376 608.472 203.494L608.229 205.085H609.874L609.649 203.494C609.843 203.385 610.004 203.226 610.115 203.033C610.227 202.841 610.285 202.622 610.285 202.4C610.282 202.074 610.151 201.762 609.92 201.532C609.689 201.303 609.377 201.174 609.051 201.174V201.174Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_6">
<text id="IconLabel_9" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="583.969" y="245.816">Private</tspan></text>
<text id="IconLabel_10" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="576.016" y="261.816">Endpoint</tspan></text>
</g>
</g>
<g id="Autonomous DB">
<g id="Autonomous-Database">
<g id="Group 7">
<path id="Vector_68" d="M765.391 227.449C761.548 227.449 757.829 227.078 755.102 226.458C751.507 225.59 749.647 224.226 749.647 222.367V204.392H738.118L738.242 202.532C738.614 197.945 741.218 193.978 745.309 191.871C746.176 191.375 746.796 190.631 747.044 189.64C747.664 186.416 749.895 183.689 752.871 182.449C754.11 181.954 755.474 181.582 756.961 181.582C757.209 181.582 757.581 181.582 757.953 181.582C758.077 181.582 758.201 181.582 758.325 181.582C759.193 181.582 760.061 181.21 760.556 180.59C762.664 178.235 765.515 176.871 768.614 176.623H769.854C774.441 176.747 778.532 179.35 780.515 183.441C780.639 183.689 780.887 184.061 781.135 184.309C781.383 184.681 781.879 185.301 782.127 185.797C785.846 185.921 789.193 187.904 791.176 191.003V191.127L791.548 192.987L796.631 198.069L794.152 200.549L792.54 198.937C791.548 204.144 786.961 207.987 781.507 207.987C781.383 207.987 781.135 207.987 781.011 207.987V222.243C781.011 224.102 779.275 225.466 775.556 226.334C772.953 227.078 769.234 227.449 765.391 227.449Z" fill="white"/>
<path id="Vector_69" d="M769.36 177.244C773.822 177.244 777.789 179.723 779.773 183.69C780.021 184.062 780.145 184.434 780.517 184.682C780.764 185.054 781.26 185.798 781.632 186.294C785.351 186.294 788.698 188.277 790.558 191.252L791.054 193.236L795.888 198.071L794.277 199.682L792.169 197.575C791.798 203.029 787.211 207.368 781.632 207.368C781.26 207.368 780.888 207.368 780.517 207.244V222.244C780.517 223.732 778.905 224.971 775.558 225.715C772.831 226.335 769.236 226.707 765.393 226.707C761.55 226.707 757.955 226.335 755.227 225.715C751.88 224.971 750.269 223.732 750.269 222.244V203.649H738.864L738.988 202.409C739.36 198.071 741.839 194.228 745.682 192.244C746.674 191.872 747.417 190.88 747.665 189.765C748.285 186.79 750.269 184.186 753.12 182.947C754.36 182.451 755.599 182.203 756.963 182.203C757.211 182.203 757.583 182.203 757.831 182.203C757.955 182.203 758.079 182.203 758.202 182.203C759.194 182.203 760.186 181.831 760.93 181.087C763.037 178.732 766.012 177.492 769.112 177.368V178.484V177.368C769.112 177.244 769.236 177.244 769.36 177.244ZM770.227 176.004H768.988H767.748V176.128C764.773 176.5 761.921 177.864 759.814 180.095C759.442 180.715 758.822 180.963 758.079 180.963C757.955 180.963 757.955 180.963 757.831 180.963C757.459 180.963 757.211 180.963 756.839 180.963C755.351 180.963 753.864 181.335 752.5 181.831C749.277 183.194 747.045 186.046 746.302 189.517C746.178 190.261 745.682 191.004 744.938 191.376C740.723 193.608 737.996 197.823 737.624 202.533L737.5 203.773V205.013H738.864H749.029V222.368C749.029 225.591 753.492 226.707 754.979 227.079C757.831 227.699 761.55 228.071 765.393 228.071C769.36 228.071 772.955 227.699 775.806 227.079C777.293 226.707 781.756 225.715 781.756 222.368V208.732C786.963 208.732 791.55 205.137 792.913 200.178L793.285 200.55L794.153 201.418L795.021 200.55L796.632 198.938L797.5 198.071L796.632 197.203L792.045 192.616L791.674 191.004V190.756L791.55 190.632C789.566 187.409 786.095 185.302 782.252 185.054C782.004 184.682 781.632 184.186 781.508 183.938V183.814L781.384 183.69C781.26 183.69 781.012 183.442 780.888 183.194C778.905 178.98 774.814 176.376 770.227 176.004Z" fill="white"/>
<path id="Vector_70" d="M741.343 201.541H748.533V203.773H738.863L738.987 202.533C739.359 198.194 741.839 194.351 745.682 192.368C746.673 191.872 747.417 190.88 747.665 189.764C748.285 186.789 750.268 184.186 753.12 182.946C754.483 182.202 756.095 181.954 757.706 182.202C758.946 182.326 760.062 181.954 760.806 181.087C762.913 178.731 765.888 177.492 768.987 177.368C769.111 177.368 769.235 177.368 769.235 177.368C773.698 177.368 777.665 179.847 779.649 183.814C779.897 184.186 780.02 184.558 780.392 184.806C779.525 184.93 778.657 185.054 777.913 185.302C777.789 185.178 777.789 185.054 777.665 184.806C776.054 181.583 772.83 179.599 769.235 179.599C769.111 179.599 769.111 179.599 768.987 179.599C766.508 179.599 764.029 180.715 762.293 182.574C761.054 183.938 759.194 184.682 757.335 184.434C756.095 184.31 754.979 184.558 753.739 185.054C751.632 186.045 750.02 187.905 749.649 190.26C749.277 192.12 748.161 193.607 746.425 194.475C743.822 195.839 741.963 198.442 741.343 201.541ZM780.516 190.88H782.748L785.847 201.913H783.368L782.996 199.558H780.268L779.649 201.913H777.293L780.516 190.88ZM780.64 197.698H782.5L781.508 193.607L780.64 197.698ZM771.095 196.211L768.987 194.103L767.376 195.715L772.211 200.549L777.045 195.715L775.434 194.103L773.45 196.087C773.822 191.872 777.417 188.649 781.632 188.649C784.731 188.649 787.458 190.384 788.946 192.988L790.558 191.376C788.698 188.401 785.351 186.417 781.632 186.417C776.054 186.417 771.467 190.756 771.095 196.211ZM795.888 198.07L791.054 193.359L786.219 198.194L787.83 199.806L789.814 197.822C789.442 202.037 785.847 205.26 781.632 205.26C778.533 205.26 775.806 203.525 774.318 200.921L772.706 202.533C774.566 205.508 777.913 207.492 781.632 207.492C787.211 207.492 791.797 203.153 792.169 197.698L794.277 199.806L795.888 198.07ZM778.161 208.979C778.905 209.227 779.649 209.351 780.392 209.475V222.492C780.392 223.979 778.781 225.219 775.434 225.963C772.706 226.583 769.111 226.954 765.268 226.954C761.425 226.954 757.83 226.583 755.103 225.963C751.756 225.219 750.144 223.979 750.144 222.492V198.07C750.144 196.583 751.756 195.467 755.103 194.723C757.706 194.103 761.301 193.855 765.268 193.855C765.392 193.855 765.64 193.855 765.888 193.855V196.087C765.764 196.087 765.516 196.087 765.268 196.087C757.087 196.087 752.996 197.45 752.5 198.194V198.318C752.996 199.186 757.706 200.549 765.268 200.549C766.88 200.549 768.244 200.549 769.607 200.426C769.855 201.169 770.103 201.913 770.475 202.657C768.863 202.781 767.128 202.905 765.268 202.905C761.425 202.905 757.83 202.533 755.103 201.913C753.987 201.665 753.12 201.417 752.376 201.045V206.376C752.872 207.244 757.582 208.607 765.144 208.607C769.359 208.607 772.706 208.111 774.938 207.616C776.054 208.111 777.045 208.607 778.161 208.979C777.417 209.351 776.549 209.599 775.434 209.847C772.706 210.467 769.111 210.839 765.268 210.839C761.425 210.839 757.83 210.467 755.103 209.847C753.987 209.599 753.12 209.351 752.376 208.979V214.31C752.872 215.178 757.582 216.541 765.144 216.541C772.706 216.541 777.417 215.054 777.913 214.31L778.161 208.979ZM778.161 217.037C777.417 217.409 776.549 217.657 775.434 217.905C772.706 218.525 769.111 218.897 765.268 218.897C761.425 218.897 757.83 218.525 755.103 217.905C753.987 217.657 753.12 217.409 752.376 217.037V222.368C752.872 223.111 757.087 224.599 765.144 224.599C773.202 224.599 777.541 222.988 777.913 222.368L778.161 217.037Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_7">
<text id="IconLabel_11" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="695.43" y="245.816">Oracle Autonomous</tspan></text>
<text id="IconLabel_12" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="703.258" y="261.816">Database Primary</tspan></text>
</g>
</g>
<path id="Vector 1707" d="M544.707 196.707C545.098 196.317 545.098 195.683 544.707 195.293L538.343 188.929C537.953 188.538 537.319 188.538 536.929 188.929C536.538 189.319 536.538 189.953 536.929 190.343L542.586 196L536.929 201.657C536.538 202.047 536.538 202.681 536.929 203.071C537.319 203.462 537.953 203.462 538.343 203.071L544.707 196.707ZM391.293 195.293C390.902 195.683 390.902 196.317 391.293 196.707L397.657 203.071C398.047 203.462 398.681 203.462 399.071 203.071C399.462 202.681 399.462 202.047 399.071 201.657L393.414 196L399.071 190.343C399.462 189.953 399.462 189.319 399.071 188.929C398.681 188.538 398.047 188.538 397.657 188.929L391.293 195.293ZM544 195L392 195L392 197L544 197L544 195Z" fill="#312D2A"/>
<path id="Vector 1711" d="M1051.71 196.707C1052.1 196.317 1052.1 195.683 1051.71 195.293L1045.34 188.929C1044.95 188.538 1044.32 188.538 1043.93 188.929C1043.54 189.319 1043.54 189.953 1043.93 190.343L1049.59 196L1043.93 201.657C1043.54 202.047 1043.54 202.681 1043.93 203.071C1044.32 203.462 1044.95 203.462 1045.34 203.071L1051.71 196.707ZM1051 195L798 195L798 197L1051 197L1051 195Z" fill="#312D2A"/>
<g id="Connector Line Label">
<rect width="97" height="14" transform="translate(420 189)" fill="#DAE8FC"/>
<text id="Line Label" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="424.374" y="201.089">VNET Peering</tspan></text>
</g>
<path id="Vector 1714" d="M544.707 460.707C545.098 460.317 545.098 459.683 544.707 459.293L538.343 452.929C537.953 452.538 537.319 452.538 536.929 452.929C536.538 453.319 536.538 453.953 536.929 454.343L542.586 460L536.929 465.657C536.538 466.047 536.538 466.681 536.929 467.071C537.319 467.462 537.953 467.462 538.343 467.071L544.707 460.707ZM391.293 459.293C390.902 459.683 390.902 460.317 391.293 460.707L397.657 467.071C398.047 467.462 398.681 467.462 399.071 467.071C399.462 466.681 399.462 466.047 399.071 465.657L393.414 460L399.071 454.343C399.462 453.953 399.462 453.319 399.071 452.929C398.681 452.538 398.047 452.538 397.657 452.929L391.293 459.293ZM544 459L392 459L392 461L544 461L544 459Z" fill="#312D2A"/>
<g id="Connector Line Label_2">
<rect width="97" height="14" transform="translate(420 453)" fill="#DAE8FC"/>
<text id="Line Label_2" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="424.374" y="465.089">VNET Peering</tspan></text>
</g>
<g id="Oracle Database@Azure_3">
<rect x="545" y="369" width="326" height="182" fill="white"/>
<rect x="545" y="369" width="326" height="182" stroke="#706E6F" stroke-width="2" stroke-dasharray="4 4"/>
<g id="VNet icon_3">
<rect id="White Vnet BG_3" x="819" y="366" width="45" height="6" fill="white"/>
<g id="Icon Master_5">
<g id="Azure_VNet_3">
<g id="Group_14">
<g id="Group_15">
<path id="Vector_71" d="M850.294 371.545C851.725 371.545 852.884 370.386 852.884 368.955C852.884 367.524 851.725 366.365 850.294 366.365C848.863 366.365 847.704 367.524 847.704 368.955C847.704 370.386 848.863 371.545 850.294 371.545Z" fill="url(#paint18_linear_16122_355283)"/>
<path id="Vector_72" d="M842.125 371.545C843.555 371.545 844.715 370.386 844.715 368.955C844.715 367.524 843.555 366.365 842.125 366.365C840.694 366.365 839.534 367.524 839.534 368.955C839.534 370.386 840.694 371.545 842.125 371.545Z" fill="url(#paint19_linear_16122_355283)"/>
<path id="Vector_73" d="M833.955 371.545C835.386 371.545 836.545 370.386 836.545 368.955C836.545 367.524 835.386 366.365 833.955 366.365C832.525 366.365 831.365 367.524 831.365 368.955C831.365 370.386 832.525 371.545 833.955 371.545Z" fill="url(#paint20_linear_16122_355283)"/>
<path id="Vector_74" d="M835.748 379.316L834.154 380.91C833.955 380.91 833.557 380.91 833.357 380.711L822.398 369.752C822 369.354 822 368.556 822.398 367.959L823.993 366.564L835.748 378.32C835.948 378.519 835.948 378.918 835.748 379.316Z" fill="#50E6FF"/>
<path id="Vector_75" d="M834.154 357.199L835.748 358.793C835.948 358.993 835.948 359.391 835.748 359.59L823.993 371.346L822.399 369.752C821.801 369.154 821.801 368.357 822.399 367.959L833.158 357.199C833.357 357 833.756 357 834.154 357.199Z" fill="#1490DF"/>
<path id="Vector_76" d="M860.057 366.365L861.452 367.76C862.05 368.357 862.05 369.154 861.452 369.553L850.493 380.512C850.294 380.711 849.895 380.711 849.497 380.512L847.903 378.918C847.704 378.718 847.704 378.32 847.903 377.921L860.057 366.365Z" fill="#50E6FF"/>
<path id="Vector_77" d="M861.651 369.752L860.057 371.346L848.501 359.79C848.301 359.59 848.301 359.192 848.501 358.793L849.895 357.199C850.095 357 850.493 357 850.892 357.199L861.651 367.959C862.05 368.357 862.05 369.154 861.651 369.752Z" fill="#1490DF"/>
</g>
</g>
</g>
</g>
</g>
<text id="VNet_3" fill="#706E6F" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="553" y="390.816">Primary Database VNet</tspan></text>
</g>
<g id="Group 1496">
<g id="Oracle Database@Azure_4">
<rect x="552.5" y="400.5" width="311" height="143" fill="white"/>
<rect x="552.5" y="400.5" width="311" height="143" stroke="#706E6F" stroke-dasharray="8 4"/>
<text id="Azure subnet_2" fill="#706E6F" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="560" y="421.816">Delegated subnet</tspan></text>
</g>
<g id="Private Endpoint IP_2">
<g id="Private-Endpoint-IP-Address_2">
<g id="Group 424_2">
<path id="Vector_78" d="M597.52 474.541C595.402 471.477 594.586 467.697 595.252 464.031C595.918 460.365 598.011 457.115 601.071 454.994C604.13 452.874 607.906 452.057 611.567 452.724C615.228 453.391 618.474 455.486 620.592 458.55C622.209 460.909 623.074 463.703 623.074 466.564C623.074 469.425 622.209 472.219 620.592 474.578L609.061 491.186L597.52 474.541Z" fill="white"/>
<path id="Vector_79" d="M609.042 452.936C611.524 452.927 613.961 453.599 616.088 454.879C618.215 456.16 619.951 458 621.107 460.199C622.263 462.398 622.795 464.872 622.645 467.353C622.494 469.834 621.668 472.226 620.255 474.269L609.06 490.363L597.902 474.269C596.493 472.231 595.668 469.846 595.514 467.372C595.361 464.898 595.887 462.429 597.034 460.232C598.181 458.035 599.906 456.195 602.022 454.908C604.139 453.622 606.566 452.94 609.042 452.936V452.936ZM609.042 452C606.395 452.005 603.801 452.734 601.539 454.109C599.277 455.483 597.433 457.451 596.207 459.799C594.981 462.147 594.42 464.786 594.583 467.43C594.747 470.075 595.63 472.624 597.136 474.802L608.294 490.896L609.06 492L609.827 490.896L620.975 474.802C622.483 472.622 623.366 470.07 623.528 467.423C623.691 464.776 623.127 462.135 621.898 459.787C620.668 457.438 618.82 455.47 616.554 454.098C614.288 452.725 611.69 452 609.042 452V452Z" fill="white"/>
<path id="Vector_80" d="M620.21 458.784C618.159 455.822 615.017 453.797 611.475 453.155C607.933 452.513 604.282 453.306 601.324 455.359C598.366 457.413 596.344 460.559 595.702 464.105C595.061 467.651 595.853 471.307 597.903 474.269L609.061 490.363L620.21 474.269C621.774 471.991 622.611 469.291 622.611 466.526C622.611 463.762 621.774 461.062 620.21 458.784V458.784ZM618.855 473.343L609.061 487.49L599.23 473.333C597.991 471.541 597.265 469.442 597.132 467.266C596.998 465.09 597.462 462.918 598.472 460.987C599.483 459.056 601.002 457.438 602.866 456.31C604.729 455.181 606.865 454.584 609.043 454.584C611.22 454.584 613.356 455.181 615.219 456.31C617.083 457.438 618.602 459.056 619.613 460.987C620.623 462.918 621.087 465.09 620.953 467.266C620.82 469.442 620.094 471.541 618.855 473.333V473.343Z" fill="#2D5967"/>
<path id="Vector_81" d="M613.172 462.835V460.814C613.166 460.174 613.013 459.544 612.724 458.972C612.436 458.401 612.02 457.904 611.508 457.52C611.002 457.134 610.411 456.872 609.784 456.756C609.157 456.641 608.512 456.675 607.901 456.856C607.038 457.118 606.283 457.652 605.747 458.379C605.212 459.105 604.925 459.986 604.93 460.889V462.835C604.107 463.652 603.546 464.696 603.316 465.833C603.087 466.971 603.2 468.151 603.642 469.223C604.083 470.296 604.833 471.214 605.796 471.859C606.759 472.505 607.892 472.849 609.051 472.849C610.21 472.849 611.342 472.505 612.305 471.859C613.268 471.214 614.018 470.296 614.459 469.223C614.901 468.151 615.014 466.971 614.785 465.833C614.556 464.696 613.994 463.652 613.172 462.835V462.835ZM606.565 460.889C606.557 460.34 606.726 459.804 607.048 459.361C607.37 458.917 607.827 458.59 608.35 458.428C608.719 458.32 609.108 458.3 609.486 458.37C609.864 458.439 610.221 458.597 610.527 458.83C610.836 459.062 611.087 459.361 611.262 459.705C611.437 460.048 611.531 460.428 611.536 460.814V461.684C610.758 461.32 609.91 461.132 609.051 461.132C608.192 461.132 607.343 461.32 606.565 461.684V460.889ZM609.051 471.181C608.213 471.187 607.393 470.943 606.694 470.481C605.996 470.018 605.45 469.359 605.127 468.585C604.803 467.812 604.717 466.96 604.878 466.137C605.039 465.314 605.441 464.558 606.033 463.965C606.624 463.371 607.378 462.967 608.2 462.804C609.021 462.64 609.872 462.725 610.645 463.047C611.419 463.369 612.079 463.914 612.542 464.613C613.005 465.311 613.25 466.132 613.247 466.97C613.253 467.526 613.149 468.077 612.94 468.591C612.732 469.106 612.424 469.574 612.034 469.968C611.643 470.363 611.179 470.675 610.667 470.888C610.154 471.101 609.605 471.21 609.051 471.209V471.181Z" fill="#2D5967"/>
<path id="Vector_82" d="M609.051 465.174H608.902C608.633 465.207 608.383 465.328 608.189 465.517C607.995 465.706 607.868 465.954 607.827 466.222C607.788 466.475 607.83 466.733 607.945 466.962C608.061 467.19 608.245 467.376 608.472 467.494L608.229 469.085H609.874L609.649 467.494C609.843 467.385 610.004 467.226 610.115 467.033C610.227 466.841 610.285 466.622 610.285 466.4C610.282 466.074 610.151 465.762 609.92 465.532C609.689 465.303 609.377 465.174 609.051 465.174V465.174Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_8">
<text id="IconLabel_13" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="583.969" y="509.816">Private</tspan></text>
<text id="IconLabel_14" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="576.016" y="525.816">Endpoint</tspan></text>
</g>
</g>
<g id="Autonomous DB_2">
<g id="Autonomous-Database_2">
<g id="Group 7_2">
<path id="Vector_83" d="M765.391 491.449C761.548 491.449 757.829 491.078 755.102 490.458C751.507 489.59 749.647 488.226 749.647 486.367V468.392H738.118L738.242 466.532C738.614 461.945 741.218 457.978 745.309 455.871C746.176 455.375 746.796 454.631 747.044 453.64C747.664 450.416 749.895 447.689 752.871 446.449C754.11 445.954 755.474 445.582 756.961 445.582C757.209 445.582 757.581 445.582 757.953 445.582C758.077 445.582 758.201 445.582 758.325 445.582C759.193 445.582 760.061 445.21 760.556 444.59C762.664 442.235 765.515 440.871 768.614 440.623H769.854C774.441 440.747 778.532 443.35 780.515 447.441C780.639 447.689 780.887 448.061 781.135 448.309C781.383 448.681 781.879 449.301 782.127 449.797C785.846 449.921 789.193 451.904 791.176 455.003V455.127L791.548 456.987L796.631 462.069L794.152 464.549L792.54 462.937C791.548 468.144 786.961 471.987 781.507 471.987C781.383 471.987 781.135 471.987 781.011 471.987V486.243C781.011 488.102 779.275 489.466 775.556 490.334C772.953 491.078 769.234 491.449 765.391 491.449Z" fill="white"/>
<path id="Vector_84" d="M769.36 441.244C773.822 441.244 777.789 443.723 779.773 447.69C780.021 448.062 780.145 448.434 780.517 448.682C780.764 449.054 781.26 449.798 781.632 450.294C785.351 450.294 788.698 452.277 790.558 455.252L791.054 457.236L795.888 462.071L794.277 463.682L792.169 461.575C791.798 467.029 787.211 471.368 781.632 471.368C781.26 471.368 780.888 471.368 780.517 471.244V486.244C780.517 487.732 778.905 488.971 775.558 489.715C772.831 490.335 769.236 490.707 765.393 490.707C761.55 490.707 757.955 490.335 755.227 489.715C751.88 488.971 750.269 487.732 750.269 486.244V467.649H738.864L738.988 466.409C739.36 462.071 741.839 458.228 745.682 456.244C746.674 455.872 747.417 454.88 747.665 453.765C748.285 450.79 750.269 448.186 753.12 446.947C754.36 446.451 755.599 446.203 756.963 446.203C757.211 446.203 757.583 446.203 757.831 446.203C757.955 446.203 758.079 446.203 758.202 446.203C759.194 446.203 760.186 445.831 760.93 445.087C763.037 442.732 766.012 441.492 769.112 441.368V442.484V441.368C769.112 441.244 769.236 441.244 769.36 441.244ZM770.227 440.004H768.988H767.748V440.128C764.773 440.5 761.921 441.864 759.814 444.095C759.442 444.715 758.822 444.963 758.079 444.963C757.955 444.963 757.955 444.963 757.831 444.963C757.459 444.963 757.211 444.963 756.839 444.963C755.351 444.963 753.864 445.335 752.5 445.831C749.277 447.194 747.045 450.046 746.302 453.517C746.178 454.261 745.682 455.004 744.938 455.376C740.723 457.608 737.996 461.823 737.624 466.533L737.5 467.773V469.013H738.864H749.029V486.368C749.029 489.591 753.492 490.707 754.979 491.079C757.831 491.699 761.55 492.071 765.393 492.071C769.36 492.071 772.955 491.699 775.806 491.079C777.293 490.707 781.756 489.715 781.756 486.368V472.732C786.963 472.732 791.55 469.137 792.913 464.178L793.285 464.55L794.153 465.418L795.021 464.55L796.632 462.938L797.5 462.071L796.632 461.203L792.045 456.616L791.674 455.004V454.756L791.55 454.632C789.566 451.409 786.095 449.302 782.252 449.054C782.004 448.682 781.632 448.186 781.508 447.938V447.814L781.384 447.69C781.26 447.69 781.012 447.442 780.888 447.194C778.905 442.98 774.814 440.376 770.227 440.004Z" fill="white"/>
<path id="Vector_85" d="M741.343 465.541H748.533V467.773H738.863L738.987 466.533C739.359 462.194 741.839 458.351 745.682 456.368C746.673 455.872 747.417 454.88 747.665 453.764C748.285 450.789 750.268 448.186 753.12 446.946C754.483 446.202 756.095 445.954 757.706 446.202C758.946 446.326 760.062 445.954 760.806 445.087C762.913 442.731 765.888 441.492 768.987 441.368C769.111 441.368 769.235 441.368 769.235 441.368C773.698 441.368 777.665 443.847 779.649 447.814C779.897 448.186 780.02 448.558 780.392 448.806C779.525 448.93 778.657 449.054 777.913 449.302C777.789 449.178 777.789 449.054 777.665 448.806C776.054 445.583 772.83 443.599 769.235 443.599C769.111 443.599 769.111 443.599 768.987 443.599C766.508 443.599 764.029 444.715 762.293 446.574C761.054 447.938 759.194 448.682 757.335 448.434C756.095 448.31 754.979 448.558 753.739 449.054C751.632 450.045 750.02 451.905 749.649 454.26C749.277 456.12 748.161 457.607 746.425 458.475C743.822 459.839 741.963 462.442 741.343 465.541ZM780.516 454.88H782.748L785.847 465.913H783.368L782.996 463.558H780.268L779.649 465.913H777.293L780.516 454.88ZM780.64 461.698H782.5L781.508 457.607L780.64 461.698ZM771.095 460.211L768.987 458.103L767.376 459.715L772.211 464.549L777.045 459.715L775.434 458.103L773.45 460.087C773.822 455.872 777.417 452.649 781.632 452.649C784.731 452.649 787.458 454.384 788.946 456.988L790.558 455.376C788.698 452.401 785.351 450.417 781.632 450.417C776.054 450.417 771.467 454.756 771.095 460.211ZM795.888 462.07L791.054 457.359L786.219 462.194L787.83 463.806L789.814 461.822C789.442 466.037 785.847 469.26 781.632 469.26C778.533 469.26 775.806 467.525 774.318 464.921L772.706 466.533C774.566 469.508 777.913 471.492 781.632 471.492C787.211 471.492 791.797 467.153 792.169 461.698L794.277 463.806L795.888 462.07ZM778.161 472.979C778.905 473.227 779.649 473.351 780.392 473.475V486.492C780.392 487.979 778.781 489.219 775.434 489.963C772.706 490.583 769.111 490.954 765.268 490.954C761.425 490.954 757.83 490.583 755.103 489.963C751.756 489.219 750.144 487.979 750.144 486.492V462.07C750.144 460.583 751.756 459.467 755.103 458.723C757.706 458.103 761.301 457.855 765.268 457.855C765.392 457.855 765.64 457.855 765.888 457.855V460.087C765.764 460.087 765.516 460.087 765.268 460.087C757.087 460.087 752.996 461.45 752.5 462.194V462.318C752.996 463.186 757.706 464.549 765.268 464.549C766.88 464.549 768.244 464.549 769.607 464.426C769.855 465.169 770.103 465.913 770.475 466.657C768.863 466.781 767.128 466.905 765.268 466.905C761.425 466.905 757.83 466.533 755.103 465.913C753.987 465.665 753.12 465.417 752.376 465.045V470.376C752.872 471.244 757.582 472.607 765.144 472.607C769.359 472.607 772.706 472.111 774.938 471.616C776.054 472.111 777.045 472.607 778.161 472.979C777.417 473.351 776.549 473.599 775.434 473.847C772.706 474.467 769.111 474.839 765.268 474.839C761.425 474.839 757.83 474.467 755.103 473.847C753.987 473.599 753.12 473.351 752.376 472.979V478.31C752.872 479.178 757.582 480.541 765.144 480.541C772.706 480.541 777.417 479.054 777.913 478.31L778.161 472.979ZM778.161 481.037C777.417 481.409 776.549 481.657 775.434 481.905C772.706 482.525 769.111 482.897 765.268 482.897C761.425 482.897 757.83 482.525 755.103 481.905C753.987 481.657 753.12 481.409 752.376 481.037V486.368C752.872 487.111 757.087 488.599 765.144 488.599C773.202 488.599 777.541 486.988 777.913 486.368L778.161 481.037Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_9">
<text id="IconLabel_15" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="695.43" y="509.816">Oracle Autonomous</tspan></text>
<text id="IconLabel_16" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="702.008" y="525.816">Database Standby</tspan></text>
</g>
</g>
</g>
<path id="Vector 1713" d="M766.293 400.707C766.683 401.098 767.317 401.098 767.707 400.707L774.071 394.343C774.462 393.953 774.462 393.319 774.071 392.929C773.681 392.538 773.047 392.538 772.657 392.929L767 398.586L761.343 392.929C760.953 392.538 760.319 392.538 759.929 392.929C759.538 393.319 759.538 393.953 759.929 394.343L766.293 400.707ZM766 280L766 400L768 400L768 280L766 280Z" fill="#312D2A"/>
<g id="Connector Line Label_3">
<rect width="74" height="30" transform="translate(915 187)" fill="white"/>
<text id="Line Label_3" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="919.297" y="199.089">Automatic&#10;</tspan><tspan x="928.977" y="215.089">backup</tspan></text>
</g>
<g id="Connector Line Label_4">
<rect width="166" height="14" transform="translate(684 305)" fill="white"/>
<text id="Line Label_4" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="688.325" y="317.089">Autonomous Data Guard</tspan></text>
</g>
<path id="Vector 1715" d="M268 223V222H267V223H268ZM544.707 223.707C545.098 223.317 545.098 222.683 544.707 222.293L538.343 215.929C537.953 215.538 537.319 215.538 536.929 215.929C536.538 216.319 536.538 216.953 536.929 217.343L542.586 223L536.929 228.657C536.538 229.047 536.538 229.681 536.929 230.071C537.319 230.462 537.953 230.462 538.343 230.071L544.707 223.707ZM269 276V223H267V276H269ZM268 224H544V222H268V224Z" fill="#312D2A"/>
<path id="Vector 1716" d="M280 432V433H279V432H280ZM544.707 431.293C545.098 431.683 545.098 432.317 544.707 432.707L538.343 439.071C537.953 439.462 537.319 439.462 536.929 439.071C536.538 438.681 536.538 438.047 536.929 437.657L542.586 432L536.929 426.343C536.538 425.953 536.538 425.319 536.929 424.929C537.319 424.538 537.953 424.538 538.343 424.929L544.707 431.293ZM281 369V370.969H279V369H281ZM281 374.906V378.844H279V374.906H281ZM281 382.781V386.719H279V382.781H281ZM281 390.656V394.594H279V390.656H281ZM281 398.531V402.469H279V398.531H281ZM281 406.406V410.344H279V406.406H281ZM281 414.281V418.219H279V414.281H281ZM281 422.156V426.094H279V422.156H281ZM281 430.031V432H279V430.031H281ZM280 431H282V433H280V431ZM286 431H290V433H286V431ZM294 431H298V433H294V431ZM302 431H306V433H302V431ZM310 431H314V433H310V431ZM318 431H322V433H318V431ZM326 431H330V433H326V431ZM334 431H338V433H334V431ZM342 431H346V433H342V431ZM350 431H354V433H350V431ZM358 431H362V433H358V431ZM366 431H370V433H366V431ZM374 431H378V433H374V431ZM382 431H386V433H382V431ZM390 431H394V433H390V431ZM398 431H402V433H398V431ZM406 431H410V433H406V431ZM414 431H418V433H414V431ZM422 431H426V433H422V431ZM430 431H434V433H430V431ZM438 431H442V433H438V431ZM446 431H450V433H446V431ZM454 431H458V433H454V431ZM462 431H466V433H462V431ZM470 431H474V433H470V431ZM478 431H482V433H478V431ZM486 431H490V433H486V431ZM494 431H498V433H494V431ZM502 431H506V433H502V431ZM510 431H514V433H510V431ZM518 431H522V433H518V431ZM526 431H530V433H526V431ZM534 431H538V433H534V431ZM542 431H544V433H542V431Z" fill="#312D2A"/>
<path id="Vector 1717" d="M100.293 311.293C99.9024 311.683 99.9024 312.317 100.293 312.707L106.657 319.071C107.047 319.462 107.681 319.462 108.071 319.071C108.462 318.681 108.462 318.047 108.071 317.657L102.414 312L108.071 306.343C108.462 305.953 108.462 305.319 108.071 304.929C107.681 304.538 107.047 304.538 106.657 304.929L100.293 311.293ZM234 311L101 311L101 313L234 313L234 311Z" fill="#312D2A"/>
<path id="Vector 1718" d="M234.707 482.707C235.098 482.317 235.098 481.683 234.707 481.293L228.343 474.929C227.953 474.538 227.319 474.538 226.929 474.929C226.538 475.319 226.538 475.953 226.929 476.343L232.586 482L226.929 487.657C226.538 488.047 226.538 488.681 226.929 489.071C227.319 489.462 227.953 489.462 228.343 489.071L234.707 482.707ZM234 481L101 481L101 483L234 483L234 481Z" fill="#312D2A"/>
<path id="Vector 1719" d="M256.707 369.293C256.317 368.902 255.683 368.902 255.293 369.293L248.929 375.657C248.538 376.047 248.538 376.681 248.929 377.071C249.319 377.462 249.953 377.462 250.343 377.071L256 371.414L261.657 377.071C262.047 377.462 262.681 377.462 263.071 377.071C263.462 376.681 263.462 376.047 263.071 375.657L256.707 369.293ZM255 370L255 460L257 460L257 370L255 370Z" fill="#312D2A"/>
</g>
<defs>
<linearGradient id="paint0_linear_16122_355283" x1="368.488" y1="104.129" x2="372.128" y2="107.759" gradientUnits="userSpaceOnUse">
<stop stop-color="#86D633"/>
<stop offset="1" stop-color="#5E9624"/>
</linearGradient>
<linearGradient id="paint1_linear_16122_355283" x1="358.479" y1="102.342" x2="362.093" y2="105.978" gradientUnits="userSpaceOnUse">
<stop stop-color="#86D633"/>
<stop offset="1" stop-color="#5E9624"/>
</linearGradient>
<linearGradient id="paint2_linear_16122_355283" x1="350.282" y1="102.335" x2="353.896" y2="105.971" gradientUnits="userSpaceOnUse">
<stop stop-color="#86D633"/>
<stop offset="1" stop-color="#5E9624"/>
</linearGradient>
<linearGradient id="paint3_linear_16122_355283" x1="65.3057" y1="265.356" x2="65.3057" y2="327.824" gradientUnits="userSpaceOnUse">
<stop stop-color="#5EA0EF"/>
<stop offset="1" stop-color="#0078D4"/>
</linearGradient>
<linearGradient id="paint4_linear_16122_355283" x1="79.7242" y1="310.147" x2="79.7242" y2="318.219" gradientUnits="userSpaceOnUse">
<stop stop-color="#333132"/>
<stop offset="1" stop-color="#5B5A5C"/>
</linearGradient>
<linearGradient id="paint5_linear_16122_355283" x1="67.9337" y1="496.585" x2="67.9337" y2="456.537" gradientUnits="userSpaceOnUse">
<stop stop-color="#0078D4"/>
<stop offset="0.82" stop-color="#5EA0EF"/>
</linearGradient>
<linearGradient id="paint6_linear_16122_355283" x1="67.9337" y1="512.037" x2="67.9337" y2="496.585" gradientUnits="userSpaceOnUse">
<stop offset="0.15" stop-color="#CCCCCC"/>
<stop offset="1" stop-color="#707070"/>
</linearGradient>
<linearGradient id="paint7_linear_16122_355283" x1="268.5" y1="518.166" x2="268.5" y2="448.6" gradientUnits="userSpaceOnUse">
<stop stop-color="#5E9624"/>
<stop offset="0.02" stop-color="#5F9724"/>
<stop offset="1" stop-color="#76BC2D"/>
</linearGradient>
<linearGradient id="paint8_linear_16122_355283" x1="248.256" y1="287.096" x2="267.272" y2="287.096" gradientUnits="userSpaceOnUse">
<stop stop-color="#B77AF4"/>
<stop offset="1" stop-color="#773ADC"/>
</linearGradient>
<linearGradient id="paint9_linear_16122_355283" x1="268.799" y1="287.262" x2="287.781" y2="287.262" gradientUnits="userSpaceOnUse">
<stop stop-color="#B77AF4"/>
<stop offset="1" stop-color="#773ADC"/>
</linearGradient>
<linearGradient id="paint10_linear_16122_355283" x1="238.533" y1="304.95" x2="257.515" y2="304.95" gradientUnits="userSpaceOnUse">
<stop stop-color="#B77AF4"/>
<stop offset="1" stop-color="#773ADC"/>
</linearGradient>
<linearGradient id="paint11_linear_16122_355283" x1="259.009" y1="304.817" x2="277.991" y2="304.817" gradientUnits="userSpaceOnUse">
<stop stop-color="#B77AF4"/>
<stop offset="1" stop-color="#773ADC"/>
</linearGradient>
<linearGradient id="paint12_linear_16122_355283" x1="279.485" y1="304.983" x2="298.5" y2="304.983" gradientUnits="userSpaceOnUse">
<stop stop-color="#B77AF4"/>
<stop offset="1" stop-color="#773ADC"/>
</linearGradient>
<linearGradient id="paint13_linear_16122_355283" x1="248.024" y1="323.003" x2="267.04" y2="323.003" gradientUnits="userSpaceOnUse">
<stop stop-color="#B77AF4"/>
<stop offset="1" stop-color="#773ADC"/>
</linearGradient>
<linearGradient id="paint14_linear_16122_355283" x1="268.533" y1="323.136" x2="287.548" y2="323.136" gradientUnits="userSpaceOnUse">
<stop stop-color="#B77AF4"/>
<stop offset="1" stop-color="#773ADC"/>
</linearGradient>
<linearGradient id="paint15_linear_16122_355283" x1="848.488" y1="103.129" x2="852.128" y2="106.759" gradientUnits="userSpaceOnUse">
<stop stop-color="#86D633"/>
<stop offset="1" stop-color="#5E9624"/>
</linearGradient>
<linearGradient id="paint16_linear_16122_355283" x1="838.479" y1="101.342" x2="842.093" y2="104.978" gradientUnits="userSpaceOnUse">
<stop stop-color="#86D633"/>
<stop offset="1" stop-color="#5E9624"/>
</linearGradient>
<linearGradient id="paint17_linear_16122_355283" x1="830.282" y1="101.335" x2="833.896" y2="104.971" gradientUnits="userSpaceOnUse">
<stop stop-color="#86D633"/>
<stop offset="1" stop-color="#5E9624"/>
</linearGradient>
<linearGradient id="paint18_linear_16122_355283" x1="848.488" y1="367.129" x2="852.128" y2="370.759" gradientUnits="userSpaceOnUse">
<stop stop-color="#86D633"/>
<stop offset="1" stop-color="#5E9624"/>
</linearGradient>
<linearGradient id="paint19_linear_16122_355283" x1="838.479" y1="365.342" x2="842.093" y2="368.978" gradientUnits="userSpaceOnUse">
<stop stop-color="#86D633"/>
<stop offset="1" stop-color="#5E9624"/>
</linearGradient>
<linearGradient id="paint20_linear_16122_355283" x1="830.282" y1="365.335" x2="833.896" y2="368.971" gradientUnits="userSpaceOnUse">
<stop stop-color="#86D633"/>
<stop offset="1" stop-color="#5E9624"/>
</linearGradient>
<clipPath id="clip0_16122_355283">
<rect width="1168" height="576" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 62 KiB

View File

@@ -0,0 +1,197 @@
# Build Azure CI/CD Pipelines using Oracle Exadata Database Service in Oracle Database@Azure
- Source: https://docs.oracle.com/en/solutions/azure-pipeline-exacs-dbazure/index.html
- Date: 2025-04
- Type: reference-architecture
- Services: exacs, azure
- Tags: database, multicloud, azure, devops
## Summary (catalog)
Azure DevOps pipeline integration with ExaCS on Database@Azure. Automated schema deployment, testing, and migration using Azure Pipelines with Oracle database tooling.
## Architecture (fetched from source)
Architecture
This architecture shows how you can build and deploy Microsoft Azure
Pipelines using Azure DevOps with Oracle Exadata Database Service on Dedicated
Infrastructure .
The application and database source code are hosted on a Microsoft Azure
DevOps code repository, GitHub, or similar. A user commits changes into the code
repository which triggers the continuous integration (CI) pipeline. This phase includes
running unit tests, integration tests, static code analysis, and also testing of
containers within the Azure Kubernetes Service (AKS) cluster to verify deployment
readiness.
Once testing is complete, the build pipeline creates Docker images and pushes
them to the Azure container registry. These artifacts then initiate the continuous
delivery (CD) pipeline. In the CD phase, the artifacts are deployed to AKS where
end-to-end and system tests are run to ensure microservices operate correctly within the
Kubernetes environment and the Oracle Database. Staging and production environments,
using strategies like blue/green or canary deployments, are then initiated for zero
downtime deployment of the new changes.
A Kubernetes cluster can contain multiple pods, each connecting to its own
respective pluggable database (PDB). The PDBs in the primary database are deployed on
Oracle Database@Azure that runs on Oracle Exadata Database Service on Dedicated
Infrastructure in an Azure Availability Zone. The container images are stored in the Azure container
registry. Users access the application externally through a public load balancer.
Cloud automation simplifies most lifecycle and management tasks for Oracle Exadata Cloud Infrastructure and Oracle multitenant databases ( CDB s, PDB s). For example, adding servers and scaling OCPUs up and down, creating databases and
database homes, scheduling infrastructure maintenance, updating and upgrading the VM
operating system, Oracle Grid Infrastructure , and databases, performing backup and recovery operations, and even enabling disaster
recovery protections through Oracle Data Guard .
Metrics, logs, and tracing of the entire CI/CD process are observed continuously using
tools like Azure Monitor, Oracle Cloud
Infrastructure (OCI) and Oracle Database's Unified Observability OpenTelemetry framework which
provides traces from the entry point of the application residing on Azure, across all
subsystems, and into the Oracle Database ensuring the performance and reliability of
both the microservices and the database. This approach ensures a robust, efficient, and
scalable solution for deploying and managing modern applications in a cloud-native
environment.
The following diagram illustrates this reference architecture.
Description of the illustration exadata-database-service.png
exadata-database-service-oracle.zip
The architecture has the following components:
- Region
An Oracle Cloud
Infrastructure region is a localized geographic area that contains one or more data centers, hosting availability domains. Regions are independent of other regions, and vast distances can separate them (across countries or even continents).
An Azure region is a geographical area in which
one or more physical Azure data centers, called availability zones, reside.
Regions are independent of other regions, and vast distances can separate them
(across countries or even continents).
Azure and OCI regions
are localized geographic areas. For Oracle Database@Azure, an Azure region is
connected to an OCI region, with availability zones (AZs) in Azure connected to
availability domains (ADs) in OCI. Azure and OCI region pairs are selected to
minimize distance and latency.
- Azure availability zone
An availability zone is a physically separate data
center within a region that is designed to be available and fault tolerant.
Availability zones are close enough to have low-latency connections to other
availability zones.
Subnet delegation is Microsoft's ability to inject a
managed service, specifically a platform-as-a-service service, directly into
your virtual network.
- Microsoft Azure Virtual Network
Microsoft Azure Virtual Network (VNet) is
the fundamental building block for your private network in Azure. VNet enables
many types of Azure resources, such as Azure virtual machines (VM), to securely
communicate with each other, the internet, and on-premises
networks.
Subnet delegation is Microsoft's ability to inject a managed
service, specifically a platform-as-a-service service, directly into your
virtual network.
- Azure Pipelines
Azure Pipelines are part of the
Azure DevOps service offered by Microsoft Azure to automatically builds, tests,
and deploys code projects for continuous integration, continuous testing and
continuous delivery. (CI-CD)
- Azure Kubernetes Service
Azure Kubernetes Service
(AKS) is a managed Kubernetes service offered by Microsoft Azure to deploy and
manage containerized applications. A Kubernetes cluster can contain multiple
pods.
- Kubernetes Control Plane
A Kubernetes control plane manages the resources
for the worker nodes and pods within a Kubernetes cluster. The control plane
components detect and respond to events, perform scheduling, and move cluster
resources.
- Oracle Exadata Database Service on Dedicated
Infrastructure
Oracle Exadata Database
Service delivers proven Oracle Database capabilities on purpose-built, optimized
Oracle Exadata Cloud Infrastructure in the public cloud. Built-in cloud
automation, elastic resource scaling, security, and fast performance for OLTP,
in-memory analytics, and converged Oracle Database workloads help simplify
management and reduce costs.
Oracle Exadata Cloud Infrastructure brings
more CPU cores, increased storage, and a faster network fabric to the public
cloud. Oracle Exadata storage servers include Exadata RDMA Memory (XRMEM),
creating an additional tier of storage, boosting overall system performance.
Exadata combines XRMEM with innovative RDMA algorithms that bypass the network
and I/O stack, eliminating expensive CPU interrupts and context
switches.
Oracle Exadata Cloud Infrastructure increases the throughput of
its 100 Gbps active-active Remote Direct Memory Access over Converged Ethernet
(RoCE) internal network fabric, providing a faster interconnect than previous
generations with extremely low-latency between all compute and storage
servers.
- Oracle Database Autonomous
Recovery Service
Oracle Database Autonomous
Recovery Service is a fully managed service designed to protect Oracle Databases from data loss and cyber threats. It offers faster backups with reduced database overhead, reliable recovery with validated backups, and real-time protection enabling recovery to within less than a second of an outage or ransomware attack. Oracle Database Zero Data Loss Autonomous Recovery Service is a Zero Data Loss option for the Autonomous Recovery Service. This service provides a centralized data protection dashboard and is recommended for backing up Oracle Databases.
- Oracle Database@Azure
Oracle Database@Azure is the Oracle Database service ( Oracle Exadata Database Service on Dedicated
Infrastructure and Oracle Autonomous Database Serverless ) running on Oracle Cloud
Infrastructure (OCI), deployed in Microsoft Azure data centers. The service offers features and price parity with OCI. Purchase the service on Azure Marketplace.
Oracle Database@Azure integrates Oracle Exadata Database
Service , Oracle Real Application Clusters (Oracle
RAC) , and Oracle Data Guard technologies into the Azure platform. Users manage the service on the Azure console and with Azure automation tools. The service is deployed in Azure Virtual Network (VNet) and integrated with the Azure identity and access management system. The OCI and Oracle Database generic metrics and audit logs are natively

View File

@@ -0,0 +1,548 @@
# Auto-extracted absolute_layout template from
# kb/diagram/assets/archcenter-refs/azure-pipeline-exacs-dbazure/exadata-database-service-oracle/exadata-database-service.drawio
# Source: Oracle Architecture Center reference (canonical geometry).
# Use this as the starting scaffold for a new spec — copy, rename ids,
# and replace `type: TODO_identify` on services with the right OCI
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
# edge waypoints are Oracle's canonical layout; preserve unless the
# customer's topology requires a change.
absolute_layout:
canvas:
width: 850
height: 1100
containers: []
services:
- id: s1
type: TODO_identify
label: ''
x: 1167
y: 50
w: 28
h: 31
- id: s14
type: TODO_identify
label: ''
x: 197
y: 169
w: 63
h: 63
- id: s28
type: TODO_identify
label: ''
x: 344
y: 169
w: 63
h: 63
- id: s24
type: TODO_identify
label: ''
x: 446
y: 169
w: 63
h: 63
- id: s20
type: TODO_identify
label: ''
x: 546
y: 169
w: 57
h: 63
- id: s13
type: TODO_identify
label: ''
x: 197
y: 170
w: 62
h: 62
- id: s15
type: TODO_identify
label: ''
x: 198
y: 170
w: 60
h: 60
- id: s27
type: TODO_identify
label: ''
x: 345
y: 170
w: 61
h: 61
- id: s29
type: TODO_identify
label: ''
x: 345
y: 170
w: 60
h: 60
- id: s23
type: TODO_identify
label: ''
x: 447
y: 170
w: 61
h: 61
- id: s25
type: TODO_identify
label: ''
x: 448
y: 170
w: 43
h: 56
- id: s19
type: TODO_identify
label: ''
x: 547
y: 170
w: 56
h: 61
- id: s21
type: TODO_identify
label: ''
x: 548
y: 170
w: 43
h: 56
- id: s30
type: TODO_identify
label: ''
x: 357
y: 184
w: 36
h: 34
- id: s11
type: TODO_identify
label: ''
x: 57
y: 186
w: 63
h: 46
- id: s12
type: TODO_identify
label: ''
x: 58
y: 187
w: 44
h: 44
- id: s26
type: TODO_identify
label: ''
x: 478
y: 191
w: 28
h: 28
- id: s54
type: TODO_identify
label: ''
x: 1403
y: 199
w: 63
h: 33
- id: s53
type: TODO_identify
label: ''
x: 1404
y: 200
w: 61
h: 31
- id: s55
type: TODO_identify
label: ''
x: 1404
y: 201
w: 60
h: 30
- id: s22
type: TODO_identify
label: ''
x: 577
y: 206
w: 24
h: 24
- id: s9
type: TODO_identify
label: ''
x: 61
y: 321
w: 57
h: 63
- id: s17
type: TODO_identify
label: ''
x: 197
y: 321
w: 63
h: 63
- id: s32
type: TODO_identify
label: ''
x: 347
y: 321
w: 56
h: 63
- id: s41
type: TODO_identify
label: ''
x: 543
y: 321
w: 63
h: 63
- id: s16
type: TODO_identify
label: ''
x: 197
y: 322
w: 62
h: 62
- id: s31
type: TODO_identify
label: ''
x: 348
y: 322
w: 55
h: 61
- id: s40
type: TODO_identify
label: ''
x: 544
y: 322
w: 61
h: 62
- id: s8
type: TODO_identify
label: ''
x: 63
y: 323
w: 53
h: 59
- id: s18
type: TODO_identify
label: ''
x: 198
y: 323
w: 60
h: 60
- id: s43
type: TODO_identify
label: ''
x: 572
y: 323
w: 33
h: 33
- id: s42
type: TODO_identify
label: ''
x: 545
y: 326
w: 57
h: 56
- id: s34
type: TODO_identify
label: ''
x: 446
y: 328
w: 61
h: 55
- id: s35
type: TODO_identify
label: ''
x: 446
y: 328
w: 63
h: 57
- id: s33
type: TODO_identify
label: ''
x: 349
y: 329
w: 35
h: 50
- id: s36
type: TODO_identify
label: ''
x: 447
y: 329
w: 54
h: 54
- id: s38
type: TODO_identify
label: ''
x: 463
y: 331
w: 39
h: 30
- id: s37
type: TODO_identify
label: ''
x: 454
y: 336
w: 41
h: 41
- id: s39
type: TODO_identify
label: ''
x: 458
y: 336
w: 48
h: 34
- id: s10
type: TODO_identify
label: ''
x: 66
y: 343
w: 47
h: 37
- id: s6
type: TODO_identify
label: ''
x: 61
y: 457
w: 57
h: 63
- id: s45
type: TODO_identify
label: ''
x: 447
y: 457
w: 58
h: 63
- id: s57
type: TODO_identify
label: ''
x: 1403
y: 457
w: 63
h: 63
- id: s56
type: TODO_identify
label: ''
x: 1404
y: 457
w: 62
h: 62
- id: s44
type: TODO_identify
label: ''
x: 448
y: 458
w: 57
h: 61
- id: s46
type: TODO_identify
label: ''
x: 449
y: 458
w: 55
h: 60
- id: s5
type: TODO_identify
label: ''
x: 63
y: 459
w: 53
h: 59
- id: s62
type: TODO_identify
label: ''
x: 1076
y: 461
w: 96
h: 127
- id: s72
type: TODO_identify
label: ''
x: 652
y: 464
w: 135
h: 53
- id: s63
type: TODO_identify
label: ''
x: 1079
y: 464
w: 90
h: 45
- id: s58
type: TODO_identify
label: ''
x: 1404
y: 464
w: 60
h: 54
- id: s7
type: TODO_identify
label: ''
x: 66
y: 478
w: 47
h: 37
- id: s67
type: TODO_identify
label: ''
x: 958
y: 479
w: 63
h: 40
- id: s66
type: TODO_identify
label: ''
x: 959
y: 480
w: 62
h: 39
- id: s71
type: TODO_identify
label: ''
x: 647
y: 482
w: 135
h: 31
- id: s65
type: TODO_identify
label: ''
x: 1102
y: 489
w: 47
h: 97
- id: s68
type: TODO_identify
label: ''
x: 509
y: 491
w: 75
h: 211
- id: s61
type: TODO_identify
label: ''
x: 1107
y: 493
w: 38
h: 87
- id: s64
type: TODO_identify
label: ''
x: 1107
y: 493
w: 38
h: 87
- id: s3
type: TODO_identify
label: ''
x: 1260
y: 537
w: 42
h: 42
- id: s2
type: TODO_identify
label: ''
x: 1260
y: 538
w: 41
h: 41
- id: s4
type: TODO_identify
label: ''
x: 1261
y: 552
w: 29
h: 26
- id: s48
type: TODO_identify
label: ''
x: 447
y: 562
w: 58
h: 63
- id: s59
type: TODO_identify
label: ''
x: 823
y: 562
w: 55
h: 63
- id: s47
type: TODO_identify
label: ''
x: 448
y: 563
w: 57
h: 61
- id: s49
type: TODO_identify
label: ''
x: 449
y: 564
w: 55
h: 60
- id: s60
type: TODO_identify
label: ''
x: 825
y: 564
w: 34
h: 25
- id: s73
type: TODO_identify
label: ''
x: 1291
y: 595
w: 41
h: 41
- id: s74
type: TODO_identify
label: ''
x: 1291
y: 595
w: 42
h: 42
- id: s75
type: TODO_identify
label: ''
x: 1291
y: 595
w: 30
h: 31
- id: s76
type: TODO_identify
label: ''
x: 1296
y: 600
w: 36
h: 36
- id: s70
type: TODO_identify
label: ''
x: 954
y: 605
w: 72
h: 32
- id: s69
type: TODO_identify
label: ''
x: 951
y: 611
w: 78
h: 31
- id: s51
type: TODO_identify
label: ''
x: 447
y: 668
w: 58
h: 63
- id: s50
type: TODO_identify
label: ''
x: 448
y: 669
w: 57
h: 61
- id: s52
type: TODO_identify
label: ''
x: 449
y: 670
w: 55
h: 60
labels: []
connections: []

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 148 KiB

View File

@@ -0,0 +1,7 @@
The diagram you downloaded is available in these formats:
- DRAWIO
- SVG
You can customize them for your organization using the associated tools:
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.

View File

@@ -0,0 +1,229 @@
# Back up from Oracle Base Database Service to Zero Data Loss Autonomous Recovery
- Source: https://docs.oracle.com/en/solutions/back-up-base-database-zero-data-loss-recovery/index.html
- Date: 2025-07
- Type: reference-architecture
- Services: base-db
- Tags: database, ha-dr
## Summary (catalog)
Autonomous Recovery Service for Base DB backups. Real-time protection with continuous redo log shipping. Point-in-time recovery with sub-second RPO for mission-critical workloads.
## Architecture (fetched from source)
Architecture
This playbook describes how to perform backup and recovery operations between Oracle Base Database Service and Recovery
Service .
Description of the illustration base-database-recovery-backup-architecture.png
base-database-recovery-backup-architecture.zip
Before You Begin
Before you begin, check the versions of major software components used in this setup, and review the product documentation for later reference
Review Software Requirements
- Oracle Database 19.18 and above, or 21.8 and above
- Oracle Base Database Service
Review Documentation
- Introducing the Oracle Database Zero Data Loss Autonomous Recovery Service
- About Oracle Database Autonomous Recovery Service
- "Back Up and Recovery in Base Database Service" in Oracle Cloud
Infrastructure documentation
Considerations for Configuration
Before you begin to configure backups and recovery, review these assumptions and considerations.
- The virtual cloud network (VCN) where Oracle Base Database Service is configured, must route packages to the OCI Services Network (where Recovery
Service is configured) via a service gateway.
- There are two types of backups: Oracle managed backups and unmanaged backups. Oracle managed backups are configured using the OCI console or REST API. Unmanaged backups are configured using dbaascli or RMAN .
- This playbook uses Oracle managed backups to Recovery
Service . Unmanaged backups are out of scope of this playbook.
- Combining Oracle managed backups and unmanaged backups is not supported.
- The Recovery
Service enables databases to restore to the last known good state with minimal data loss, to a specific timestamp, or SCN. The OCI console, however, does not support restoring a database from a specific backup from the list of backups displayed in the interface. Although it's not possible to restore a database from a backup in this list, the list of backups can be used as a reference as to what data is currently available to restore the database.
- The OCI console cannot restore a particular pluggable database (PDB) . Only the full container database (CDB) can be restored.
About Required Products and Roles
This solution requires the following products:
- Oracle Cloud
Infrastructure
- Oracle Cloud Infrastructure Identity
and Access Management
- Oracle Base Database Service
- Oracle Database Zero Data Loss Autonomous Recovery Service
- Oracle Database
These are the roles needed for each product.
Product Name: Role
Required to...
Oracle Cloud
Infrastructure : VCN admin
Add OCI services gateway and create security rules to allow connections from Oracle Database Zero Data Loss Autonomous Recovery Service to the Oracle Base Database Service backup network.
Oracle Cloud Infrastructure Identity
and Access Management : IAM service admin
Add security policies for Oracle Database Zero Data Loss Autonomous Recovery Service .
Oracle Base Database Service : database admin
- Create database with automatic backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
- Modify database to add automatic backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
Oracle Database Zero Data Loss Autonomous Recovery Service : admin
Add Oracle Database Zero Data Loss Autonomous Recovery Service subnet for Oracle Base Database Service backups.
Oracle Database : sys
Configure backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
See Oracle Products, Solutions, and Services to get what you need.
Title and Copyright Information
Back up Oracle Base Database Service to Oracle Database Zero Data Loss Autonomous Recovery
F84016-03
July 2025
Copyright © 2023,2025,
Oracle and/or its affiliates.

View File

@@ -0,0 +1,373 @@
# Auto-extracted absolute_layout template from
# kb/diagram/assets/archcenter-refs/back-up-base-database-zero-data-loss-recovery/base-database-recovery-backup-architecture/base-database-recovery-backup-architecture.drawio
# Source: Oracle Architecture Center reference (canonical geometry).
# Use this as the starting scaffold for a new spec — copy, rename ids,
# and replace `type: TODO_identify` on services with the right OCI
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
# edge waypoints are Oracle's canonical layout; preserve unless the
# customer's topology requires a change.
absolute_layout:
canvas:
width: 850
height: 1100
containers:
- id: c1
type: region
label: ''
x: 0
y: 0
w: 413
h: 505
- id: c7
type: region
label: ''
x: 229
y: 261
w: 2
h: 80
- id: c9
type: region
label: ''
x: 29
y: 158
w: 2
h: 63
- id: c4
type: region
label: ''
x: 351
y: 359
w: 46
h: 2
services:
- id: '9'
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 39
- id: '10'
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 40
- id: '16'
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: '17'
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 41
- id: '18'
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: '38'
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 38
- id: '39'
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 39
- id: '44'
type: TODO_identify
label: ''
x: 0
y: 0
w: 62
h: 58
- id: '45'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 59
- id: '68'
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: '69'
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 41
- id: '70'
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: '77'
type: TODO_identify
label: ''
x: 0
y: 0
w: 38
h: 63
- id: '78'
type: TODO_identify
label: ''
x: 0
y: 0
w: 37
h: 61
- id: '79'
type: TODO_identify
label: ''
x: 0
y: 0
w: 38
h: 63
- id: '95'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 59
- id: '96'
type: TODO_identify
label: ''
x: 0
y: 0
w: 62
h: 58
- id: '97'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 59
- id: '101'
type: TODO_identify
label: ''
x: 0
y: 0
w: 62
h: 58
- id: '102'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 59
- id: '11'
type: TODO_identify
label: ''
x: 1
y: 0
w: 40
h: 38
- id: '55'
type: TODO_identify
label: ''
x: 11
y: 0
w: 42
h: 42
- id: '56'
type: TODO_identify
label: ''
x: 11
y: 0
w: 41
h: 41
- id: '57'
type: TODO_identify
label: ''
x: 11
y: 0
w: 42
h: 42
- id: '58'
type: TODO_identify
label: ''
x: 11
y: 0
w: 30
h: 31
- id: '40'
type: TODO_identify
label: ''
x: 0
y: 1
w: 40
h: 37
- id: '19'
type: TODO_identify
label: ''
x: 1
y: 1
w: 40
h: 40
- id: '46'
type: TODO_identify
label: ''
x: 1
y: 1
w: 48
h: 33
- id: '71'
type: TODO_identify
label: ''
x: 1
y: 1
w: 40
h: 40
- id: '80'
type: TODO_identify
label: ''
x: 1
y: 1
w: 35
h: 60
- id: '81'
type: TODO_identify
label: ''
x: 1
y: 1
w: 35
h: 60
- id: '98'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 57
- id: '103'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 30
- id: '59'
type: TODO_identify
label: ''
x: 16
y: 5
w: 36
h: 36
- id: '20'
type: TODO_identify
label: ''
x: 1
y: 14
w: 29
h: 26
- id: '104'
type: TODO_identify
label: ''
x: 14
y: 19
w: 34
h: 38
- id: '47'
type: TODO_identify
label: ''
x: 35
y: 23
w: 26
h: 35
- id: s2
type: TODO_identify
label: ''
x: 352
y: 29
w: 42
h: 40
- id: '63'
type: TODO_identify
label: ''
x: 0
y: 45
w: 123
h: 37
- id: s3
type: TODO_identify
label: ''
x: 342
y: 69
w: 42
h: 42
- id: s13
type: TODO_identify
label: ''
x: 197
y: 141
w: 63
h: 59
- id: s10
type: TODO_identify
label: ''
x: 9
y: 158
w: 55
h: 66
- id: s8
type: TODO_identify
label: ''
x: 198
y: 261
w: 123
h: 82
- id: s5
type: TODO_identify
label: ''
x: 353
y: 341
w: 42
h: 39
- id: s11
type: TODO_identify
label: ''
x: 211
y: 402
w: 38
h: 63
- id: s6
type: TODO_identify
label: ''
x: 75
y: 405
w: 63
h: 59
- id: s12
type: TODO_identify
label: ''
x: 322
y: 405
w: 63
h: 59
labels: []
connections: []

View File

@@ -0,0 +1,7 @@
The diagram you downloaded is available in these formats:
- DRAWIO
- SVG
You can customize them for your organization using the associated tools:
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.

View File

@@ -0,0 +1,236 @@
# Back up from Exadata on Dedicated Infrastructure to Zero Data Loss Autonomous Recovery
- Source: https://docs.oracle.com/en/solutions/back-up-exadata-dedicated-zero-data-loss-recovery/index.html
- Date: 2025-07
- Type: reference-architecture
- Services: exacs
- Tags: database, ha-dr
## Summary (catalog)
Autonomous Recovery Service for ExaCS backups. Automated backup management with real-time redo protection. Validates backup recoverability automatically.
## Architecture (fetched from source)
Architecture
This playbook describes how to perform backup and recovery operations between Oracle Exadata Database Service on Dedicated
Infrastructure and Recovery
Service .
Description of the illustration exadata-dedicated-recovery-backup-architecture.png
exadata-dedicated-recovery-backup-architecture.zip
Before You Begin
Before you begin, check the versions of major software components used in this setup, and review the product documentation for later reference
Review Software Requirements
- Oracle Exadata Database Service on Dedicated
Infrastructure
- Oracle Database Enterprise Edition Extreme Performance 19.18 or newer
Review Documentation
- Introducing the Oracle Database Zero Data Loss Autonomous Recovery Service
- About Oracle Database Autonomous Recovery Service
- "Back Up and Recovery in Base Database Service" in Oracle Cloud
Infrastructure documentation
Considerations for Configuration
Before you begin to configure backups and recovery, review these assumptions and considerations.
- The virtual cloud network (VCN) where Oracle Exadata Database Service on Dedicated
Infrastructure is configured, must route packages to the OCI Services Network (where Recovery
Service is configured) via a service gateway.
- There are two types of backups: Oracle managed backups and user configured backups. Oracle managed backups are configured using the OCI console or REST API. User configured backups are configured using the dbaascli only.
- This playbook uses Oracle managed backups to Recovery
Service . User configured backups are out of scope of this playbook.
- Combining Oracle managed backups and user configured backups is not supported.
- The Recovery
Service enables databases to restore to the last known good state with minimal data loss, to a specific timestamp, or SCN. The OCI console, however, does not support restoring a database from a specific backup from the list of backups displayed in the console. Although it's not possible to restore a database from a backup in this list, the list of backups can be used as a reference as to what data is currently available for restore operations.
- The OCI console cannot restore a particular pluggable database (PDB) . Only the full container database (CDB) can be restored.
About Required Products and Roles
This solution requires the following products and roles:
- Oracle Cloud
Infrastructure
- Oracle Cloud Infrastructure Identity
and Access Management
- Oracle Exadata Database Service on Dedicated
Infrastructure
- Oracle Database Zero Data Loss Autonomous Recovery Service
- Oracle Database
These are the roles needed for each product.
Service Name: Role
Required to...
Oracle Cloud
Infrastructure : VCN admin
Add OCI services gateway and create security rules to allow connections from Oracle Database Zero Data Loss Autonomous Recovery Service to the Oracle Exadata Database Service on Dedicated
Infrastructure backup network.
Oracle Cloud Infrastructure Identity
and Access Management : IAM service admin
Add security policies for Oracle Database Zero Data Loss Autonomous Recovery Service .
Oracle Exadata Database Service on Dedicated
Infrastructure : database admin
- Create database with Oracle managed backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
- Modify database to add Oracle managed backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
Oracle Database Zero Data Loss Autonomous Recovery Service : admin
Add Oracle Database Zero Data Loss Autonomous Recovery Service subnet for Oracle Exadata Database Service on Dedicated
Infrastructure backups.
Oracle Database : sys
Configure backups to Oracle Database Zero Data Loss Autonomous Recovery Service .
See Oracle Products, Solutions, and Services to get what you need.
Title and Copyright Information
Back up Oracle Exadata on Dedicated Infrastructure to Oracle Zero Data Loss Autonomous Recovery Service
F84015-04
July 2025
Copyright © 2023,2025,
Oracle and/or its affiliates.

View File

@@ -0,0 +1,408 @@
# Auto-extracted absolute_layout template from
# kb/diagram/assets/archcenter-refs/back-up-exadata-dedicated-zero-data-loss-recovery/exadata-dedicated-recovery-backup-architecture/exadata-dedicated-recovery-backup-architecture.drawio
# Source: Oracle Architecture Center reference (canonical geometry).
# Use this as the starting scaffold for a new spec — copy, rename ids,
# and replace `type: TODO_identify` on services with the right OCI
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
# edge waypoints are Oracle's canonical layout; preserve unless the
# customer's topology requires a change.
absolute_layout:
canvas:
width: 850
height: 1100
containers:
- id: c1
type: region
label: ''
x: 270
y: 300
w: 406
h: 601
- id: c8
type: region
label: ''
x: 492
y: 649
w: 2
h: 80
- id: c11
type: region
label: ''
x: 299
y: 492
w: 2
h: 63
- id: c5
type: region
label: ''
x: 613
y: 755
w: 46
h: 2
services:
- id: HmliP5wbrd6Yz27v1M2G-7
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 39
- id: HmliP5wbrd6Yz27v1M2G-8
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 40
- id: HmliP5wbrd6Yz27v1M2G-14
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: HmliP5wbrd6Yz27v1M2G-15
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 41
- id: HmliP5wbrd6Yz27v1M2G-16
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: HmliP5wbrd6Yz27v1M2G-36
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: HmliP5wbrd6Yz27v1M2G-37
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 41
- id: HmliP5wbrd6Yz27v1M2G-38
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: HmliP5wbrd6Yz27v1M2G-58
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 38
- id: HmliP5wbrd6Yz27v1M2G-59
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 39
- id: HmliP5wbrd6Yz27v1M2G-64
type: TODO_identify
label: ''
x: 0
y: 0
w: 62
h: 58
- id: HmliP5wbrd6Yz27v1M2G-65
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 59
- id: HmliP5wbrd6Yz27v1M2G-75
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 41
- id: HmliP5wbrd6Yz27v1M2G-76
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: HmliP5wbrd6Yz27v1M2G-77
type: TODO_identify
label: ''
x: 0
y: 0
w: 30
h: 31
- id: HmliP5wbrd6Yz27v1M2G-87
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 41
- id: HmliP5wbrd6Yz27v1M2G-88
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: HmliP5wbrd6Yz27v1M2G-95
type: TODO_identify
label: ''
x: 0
y: 0
w: 38
h: 63
- id: HmliP5wbrd6Yz27v1M2G-96
type: TODO_identify
label: ''
x: 0
y: 0
w: 37
h: 61
- id: HmliP5wbrd6Yz27v1M2G-97
type: TODO_identify
label: ''
x: 0
y: 0
w: 38
h: 63
- id: HmliP5wbrd6Yz27v1M2G-113
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 59
- id: HmliP5wbrd6Yz27v1M2G-114
type: TODO_identify
label: ''
x: 0
y: 0
w: 62
h: 58
- id: HmliP5wbrd6Yz27v1M2G-115
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 59
- id: HmliP5wbrd6Yz27v1M2G-119
type: TODO_identify
label: ''
x: 0
y: 0
w: 46
h: 62
- id: HmliP5wbrd6Yz27v1M2G-120
type: TODO_identify
label: ''
x: 0
y: 0
w: 48
h: 63
- id: HmliP5wbrd6Yz27v1M2G-9
type: TODO_identify
label: ''
x: 1
y: 0
w: 40
h: 38
- id: HmliP5wbrd6Yz27v1M2G-60
type: TODO_identify
label: ''
x: 0
y: 1
w: 40
h: 37
- id: HmliP5wbrd6Yz27v1M2G-17
type: TODO_identify
label: ''
x: 1
y: 1
w: 40
h: 40
- id: HmliP5wbrd6Yz27v1M2G-39
type: TODO_identify
label: ''
x: 1
y: 1
w: 40
h: 40
- id: HmliP5wbrd6Yz27v1M2G-66
type: TODO_identify
label: ''
x: 1
y: 1
w: 48
h: 33
- id: HmliP5wbrd6Yz27v1M2G-89
type: TODO_identify
label: ''
x: 1
y: 1
w: 40
h: 40
- id: HmliP5wbrd6Yz27v1M2G-98
type: TODO_identify
label: ''
x: 1
y: 1
w: 35
h: 60
- id: HmliP5wbrd6Yz27v1M2G-99
type: TODO_identify
label: ''
x: 1
y: 1
w: 35
h: 60
- id: HmliP5wbrd6Yz27v1M2G-116
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 57
- id: HmliP5wbrd6Yz27v1M2G-78
type: TODO_identify
label: ''
x: 5
y: 5
w: 36
h: 36
- id: HmliP5wbrd6Yz27v1M2G-122
type: TODO_identify
label: ''
x: 10
y: 13
w: 29
h: 48
- id: HmliP5wbrd6Yz27v1M2G-123
type: TODO_identify
label: ''
x: 10
y: 13
w: 29
h: 48
- id: HmliP5wbrd6Yz27v1M2G-18
type: TODO_identify
label: ''
x: 1
y: 14
w: 29
h: 26
- id: HmliP5wbrd6Yz27v1M2G-40
type: TODO_identify
label: ''
x: 1
y: 14
w: 29
h: 26
- id: HmliP5wbrd6Yz27v1M2G-121
type: TODO_identify
label: ''
x: 11
y: 14
w: 27
h: 46
- id: HmliP5wbrd6Yz27v1M2G-67
type: TODO_identify
label: ''
x: 35
y: 23
w: 26
h: 35
- id: s2
type: TODO_identify
label: ''
x: 614
y: 329
w: 42
h: 40
- id: s3
type: TODO_identify
label: ''
x: 605
y: 369
w: 42
h: 42
- id: s15
type: TODO_identify
label: ''
x: 469
y: 474
w: 48
h: 63
- id: s12
type: TODO_identify
label: ''
x: 279
y: 492
w: 42
h: 42
- id: s4
type: TODO_identify
label: ''
x: 605
y: 507
w: 42
h: 42
- id: s9
type: TODO_identify
label: ''
x: 472
y: 649
w: 42
h: 42
- id: s10
type: TODO_identify
label: ''
x: 460
y: 695
w: 123
h: 37
- id: s6
type: TODO_identify
label: ''
x: 616
y: 736
w: 42
h: 39
- id: s13
type: TODO_identify
label: ''
x: 474
y: 797
w: 38
h: 63
- id: s14
type: TODO_identify
label: ''
x: 585
y: 800
w: 63
h: 59
- id: s7
type: TODO_identify
label: ''
x: 337
y: 801
w: 63
h: 59
labels: []
connections: []

View File

@@ -0,0 +1,7 @@
The diagram you downloaded is available in these formats:
- DRAWIO
- SVG
You can customize them for your organization using the associated tools:
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.

View File

@@ -0,0 +1,187 @@
# Run PeopleSoft ERP and Autonomous Database in an HA multicloud deployment
- Source: https://docs.oracle.com/en/solutions/bread-multicloud-on-oci/index.html
- Date: 2025-02
- Type: reference-architecture
- Services: adb-s, compute, load-balancer
- Tags: application, ha-dr, multicloud, peoplesoft, autonomous
## Summary (catalog)
PeopleSoft HA with ADB-S across cloud providers. Application tier on OCI compute with database on ADB-S. Multi-AZ deployment for high availability with automatic failover.
## Architecture (fetched from source)
Architecture
The Oracle partner has built and deployed a highly-available Oracle
PeopleSoft application using two availability domains in the Oracle Cloud
Infrastructure (OCI) region in Ashburn. They use the Phoenix region as a standby region for Oracle Autonomous Database and as a disaster recovery site.
Each of the web and application virtual machine (VM) instances are
configured as a high availability pair by using load balancers and by being placed in
different availability domains (AD). Each of the load balancers handles certain
PeopleSoft functions and URLs.
Separate instances of Oracle Autonomous Transaction
Processing on Dedicated Infrastructure (ATP-D) are created for each of the PeopleSoft functions:
Financials, Phire, Vertex, and Human Capital Management (HCM). Oracle Data Guard is used
to replicate the primary databases in Ashburn to standby databases in Phoenix.
They have also built and deployed development (DEV), user acceptance test
(UAT), quality assurance (QA), and test environments in the Phoenix region. Oracle Data
Guard and RackWare are also used for the DEV, UAT, QA, and test environments.
Windows Servers with file shares are used to store PeopleSoft configuration
files. Users are able to access PeopleSoft by using the Internet through an internet
gateway or from the partner private network by using Oracle Cloud
Infrastructure FastConnect to connect to the load balancers. After connecting to the load balancers, users are
redirected to an OKTA Access Gateway (OAG). The OAG is used for access authentication
and single sign-on (SSO) before allowing users to access PeopleSoft.
The move to OCI involved first migrating its PeopleSoft web/application tier
and Oracle Database to Oracle Exadata Database
Service . After realizing the benefits of ATP, the partner successfully migrated its 7 TB
PeopleSoft database to Oracle Autonomous Database . They recognized ease of maintenance and operation of Autonomous Database as key benefits for their modernization effort.
The following diagram illustrates the migration process:
Description of the illustration peoplesoft-migration-process.png
peoplesoft-migration-process-oracle.zip
The partner has built a multicloud architecture that integrates with banking
systems, SaaS applications, Microsoft Azure for Active Directory single sign-on (SSO),
and MuleSoft (SaaS) for data integration. These integrations connect to Oracle Cloud through their data center private network by using a customer-premises router and
then connect into the virtual cloud network (VCN) by using ATP.
For disaster recovery, they use Oracle Data Guard to replicate databases to
the Phoenix region and uses Oracle Cloud
Marketplace partner RackWare to take snapshots of VM instances. This allows them to quickly
recover in another region and continue operations in case of a disaster event.
To continue their cloud modernization and maturation journey, the partner has
future plans to move more systems into cloud native services to reduce the amount of
patching, upgrades, and maintenance required.
The following diagram illustrates this reference architecture.
Description of the illustration peoplesoft-prod-oci.png
peoplesoft-prod-oci-oracle.zip
The architecture has the following components:
- Tenancy
A tenancy is a secure and isolated partition that Oracle sets up within Oracle Cloud when you sign up for Oracle Cloud
Infrastructure . You can create, organize, and administer your resources in Oracle Cloud within your tenancy. A tenancy is synonymous with a company or organization. Usually, a company will have a single tenancy and reflect its organizational structure within that tenancy. A single tenancy is usually associated with a single subscription, and a single subscription usually only has one tenancy.
- Region
An Oracle Cloud
Infrastructure region is a localized geographic area that contains one or more data centers, called availability domains. Regions are independent of other regions, and vast distances can separate them (across countries or even continents).
- Audit
The Oracle Cloud Infrastructure Audit service automatically records calls to all supported Oracle Cloud
Infrastructure public application programming interface (API) endpoints as log events. All OCI services support logging by Oracle Cloud Infrastructure Audit .
- Policy
An Oracle Cloud Infrastructure Identity
and Access Management policy specifies who can access which resources, and how. Access is granted at the group and compartment level, which means you can write a policy that gives a group a specific type of access within a specific compartment, or to the tenancy.
- Logging
Oracle Cloud Infrastructure Logging is a highly-scalable and fully-managed service that provides access to the following types of logs from your resources in the cloud:
- Audit logs: Logs related to events produced by OCI Audit .
- Service logs: Logs published by individual services such as OCI API Gateway , OCI Events , OCI Functions , OCI Load Balancing , OCI Object Storage , and VCN flow logs.
- Custom logs: Logs that contain diagnostic information from custom applications, other cloud providers, or an on-premises environment.
- Object storage
OCI Object Storage provides quick access to large amounts of structured and unstructured data of any content type, including database backups, analytic data, and rich content such as images and videos. You can safely and securely store data directly from the internet or from within the cloud platform. You can scale storage without experiencing any degradation in performance or service reliability.
Use standard storage for "hot" storage that you need to access quickly, immediately, and frequently. Use archive storage for "cold" storage that you retain for long periods of time and seldom or rarely access.
- Compartment
Compartments are cross-regional logical partitions within an Oracle Cloud
Infrastructure tenancy. Use compartments to organize, control access, and set usage quotas for your Oracle Cloud resources. In a given compartment, you define policies that control access and set privileges for resources.
- Availability domain
Availability domains are standalone, independent data centers within a region. The physical resources in each availability domain are isolated from the resources in the other availability domains, which provides fault tolerance. Availability domains dont share infrastructure such as power or cooling, or the internal availability domain network. So, a failure at one availability domain shouldn't affect the other availability domains in the region.
- Virtual cloud network (VCN) and subnets
A VCN is a customizable, software-defined network that you set up in an Oracle Cloud
Infrastructure region. Like traditional data center networks, VCNs give you control over your network environment. A VCN can have multiple non-overlapping CIDR blocks that you can change after you create the VCN. You can segment a VCN into subnets, which can be scoped to a region or to an availability domain. Each subnet consists of a contiguous range of addresses that don't overlap with the other subnets in the VCN. You can change the size of a subnet after creation. A subnet can be public or private.
- Security list
For each subnet, you can create security rules that specify the source, destination, and type of traffic that must be allowed in and out of the subnet.
- Route table
Virtual route tables contain rules to route traffic from subnets to destinations outside a VCN, typically through gateways.
- Internet gateway
An internet gateway allows traffic between the public subnets in a VCN and the public internet.
- Dynamic routing gateway (DRG)
The DRG is a virtual router that provides a path for private network traffic between VCNs in the sa

View File

@@ -0,0 +1,513 @@
# Auto-extracted absolute_layout template from
# kb/diagram/assets/archcenter-refs/bread-multicloud-on-oci/peoplesoft-migration-process-oracle/peoplesoft-migration-process.drawio
# Source: Oracle Architecture Center reference (canonical geometry).
# Use this as the starting scaffold for a new spec — copy, rename ids,
# and replace `type: TODO_identify` on services with the right OCI
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
# edge waypoints are Oracle's canonical layout; preserve unless the
# customer's topology requires a change.
absolute_layout:
canvas:
width: 850
height: 1100
containers:
- id: '9'
type: region
label: ''
x: 0
y: 75
w: 159
h: 549
- id: '39'
type: region
label: ''
x: 347
y: 75
w: 159
h: 549
- id: '70'
type: region
label: ''
x: 728
y: 75
w: 159
h: 532
- id: '76'
type: region
label: ''
x: 1058
y: 75
w: 159
h: 532
services:
- id: '12'
type: TODO_identify
label: ''
x: 42
y: 143
w: 170
h: 121
- id: '13'
type: TODO_identify
label: ''
x: 48
y: 143
w: 63
h: 63
- id: '14'
type: TODO_identify
label: ''
x: 48
y: 143
w: 61
h: 61
- id: '15'
type: TODO_identify
label: ''
x: 48
y: 143
w: 63
h: 63
- id: '43'
type: TODO_identify
label: ''
x: 389
y: 143
w: 159
h: 121
- id: '44'
type: TODO_identify
label: ''
x: 395
y: 143
w: 63
h: 63
- id: '45'
type: TODO_identify
label: ''
x: 395
y: 143
w: 61
h: 61
- id: '46'
type: TODO_identify
label: ''
x: 395
y: 143
w: 63
h: 63
- id: '80'
type: TODO_identify
label: ''
x: 770
y: 143
w: 135
h: 104
- id: '81'
type: TODO_identify
label: ''
x: 776
y: 143
w: 63
h: 63
- id: '82'
type: TODO_identify
label: ''
x: 776
y: 143
w: 61
h: 61
- id: '83'
type: TODO_identify
label: ''
x: 776
y: 143
w: 63
h: 63
- id: '92'
type: TODO_identify
label: ''
x: 1104
y: 143
w: 135
h: 104
- id: '93'
type: TODO_identify
label: ''
x: 1106
y: 143
w: 63
h: 63
- id: '94'
type: TODO_identify
label: ''
x: 1106
y: 143
w: 62
h: 62
- id: '95'
type: TODO_identify
label: ''
x: 1106
y: 143
w: 63
h: 63
- id: '16'
type: TODO_identify
label: ''
x: 49
y: 144
w: 60
h: 60
- id: '47'
type: TODO_identify
label: ''
x: 396
y: 144
w: 60
h: 60
- id: '84'
type: TODO_identify
label: ''
x: 777
y: 144
w: 60
h: 60
- id: '103'
type: TODO_identify
label: ''
x: 1107
y: 144
w: 60
h: 30
- id: '20'
type: TODO_identify
label: ''
x: 59
y: 159
w: 40
h: 40
- id: '51'
type: TODO_identify
label: ''
x: 406
y: 159
w: 40
h: 40
- id: '88'
type: TODO_identify
label: ''
x: 787
y: 159
w: 40
h: 40
- id: '101'
type: TODO_identify
label: ''
x: 1123
y: 160
w: 31
h: 44
- id: '193'
type: TODO_identify
label: ''
x: 205
y: 176
w: 182
h: 51
- id: '21'
type: TODO_identify
label: ''
x: 42
y: 210
w: 170
h: 54
- id: '52'
type: TODO_identify
label: ''
x: 389
y: 210
w: 159
h: 54
- id: '89'
type: TODO_identify
label: ''
x: 770
y: 210
w: 135
h: 37
- id: '104'
type: TODO_identify
label: ''
x: 1104
y: 210
w: 135
h: 37
- id: '107'
type: TODO_identify
label: ''
x: 1106
y: 268
w: 119
h: 104
- id: '108'
type: TODO_identify
label: ''
x: 1106
y: 268
w: 63
h: 63
- id: '109'
type: TODO_identify
label: ''
x: 1106
y: 268
w: 63
h: 63
- id: '110'
type: TODO_identify
label: ''
x: 1106
y: 268
w: 62
h: 61
- id: '111'
type: TODO_identify
label: ''
x: 1106
y: 268
w: 63
h: 63
- id: '112'
type: TODO_identify
label: ''
x: 1107
y: 269
w: 60
h: 60
- id: '128'
type: TODO_identify
label: ''
x: 1106
y: 335
w: 119
h: 37
- id: '131'
type: TODO_identify
label: ''
x: 1103
y: 394
w: 152
h: 91
- id: '132'
type: TODO_identify
label: ''
x: 1105
y: 394
w: 63
h: 50
- id: '133'
type: TODO_identify
label: ''
x: 1105
y: 394
w: 62
h: 48
- id: '134'
type: TODO_identify
label: ''
x: 1105
y: 394
w: 63
h: 50
- id: '140'
type: TODO_identify
label: ''
x: 1106
y: 395
w: 60
h: 30
- id: '141'
type: TODO_identify
label: ''
x: 1103
y: 448
w: 152
h: 37
- id: '25'
type: TODO_identify
label: ''
x: 40
y: 456
w: 155
h: 121
- id: '26'
type: TODO_identify
label: ''
x: 49
y: 456
w: 59
h: 63
- id: '27'
type: TODO_identify
label: ''
x: 49
y: 456
w: 58
h: 61
- id: '28'
type: TODO_identify
label: ''
x: 49
y: 456
w: 59
h: 63
- id: '56'
type: TODO_identify
label: ''
x: 396
y: 456
w: 121
h: 121
- id: '57'
type: TODO_identify
label: ''
x: 402
y: 456
w: 48
h: 63
- id: '58'
type: TODO_identify
label: ''
x: 402
y: 456
w: 46
h: 62
- id: '59'
type: TODO_identify
label: ''
x: 402
y: 456
w: 48
h: 63
- id: '30'
type: TODO_identify
label: ''
x: 50
y: 457
w: 53
h: 59
- id: '152'
type: TODO_identify
label: ''
x: 758
y: 459
w: 191
h: 135
- id: '153'
type: TODO_identify
label: ''
x: 776
y: 459
w: 63
h: 57
- id: '154'
type: TODO_identify
label: ''
x: 776
y: 459
w: 63
h: 57
- id: '61'
type: TODO_identify
label: ''
x: 412
y: 469
w: 29
h: 48
- id: '62'
type: TODO_identify
label: ''
x: 412
y: 469
w: 29
h: 48
- id: '60'
type: TODO_identify
label: ''
x: 413
y: 470
w: 27
h: 46
- id: '32'
type: TODO_identify
label: ''
x: 78
y: 489
w: 28
h: 28
- id: '144'
type: TODO_identify
label: ''
x: 1106
y: 500
w: 103
h: 93
- id: '145'
type: TODO_identify
label: ''
x: 1106
y: 500
w: 63
h: 53
- id: '146'
type: TODO_identify
label: ''
x: 1106
y: 500
w: 61
h: 51
- id: '147'
type: TODO_identify
label: ''
x: 1106
y: 500
w: 63
h: 53
- id: '148'
type: TODO_identify
label: ''
x: 1107
y: 500
w: 59
h: 51
- id: '33'
type: TODO_identify
label: ''
x: 40
y: 523
w: 155
h: 54
- id: '64'
type: TODO_identify
label: ''
x: 396
y: 523
w: 121
h: 54
- id: '181'
type: TODO_identify
label: ''
x: 758
y: 523
w: 191
h: 71
- id: '149'
type: TODO_identify
label: ''
x: 1107
y: 556
w: 101
h: 37
labels: []
connections: []

View File

@@ -0,0 +1,343 @@
<svg width="1170" height="592" viewBox="0 0 1170 592" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="bread-financial-migration-process" clip-path="url(#clip0_6913_243525)">
<rect width="1170" height="592" fill="white"/>
<g id="Text Heading">
<rect x="672.5" y="32.5" width="495" height="559" rx="3.5" fill="white"/>
<text id="Neutral Group Heading H1" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="800" letter-spacing="0em"><tspan x="802.141" y="53.816">Current State - Modernization</tspan></text>
<rect x="672.5" y="32.5" width="495" height="559" rx="3.5" stroke="#9E9892"/>
</g>
<g id="On-premises box">
<g id="Internet">
<rect x="0.5" y="72.5" width="151" height="519" rx="3.5" fill="#F5F4F2"/>
<text id="OCI Region" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="28.0859" y="93.816">On Premises</tspan></text>
<rect x="0.5" y="72.5" width="151" height="519" rx="3.5" stroke="#9E9892"/>
</g>
</g>
<g id="webapp physical">
<g id="Site-to-Site VPN or FastConnect">
<g id="Web-Application">
<g id="Group 486">
<path id="Vector" d="M101.886 136.715H50.1145C48.2367 136.715 46.7145 138.237 46.7145 140.115V191.886C46.7145 193.764 48.2367 195.286 50.1145 195.286H101.886C103.764 195.286 105.286 193.764 105.286 191.886V140.115C105.286 138.237 103.764 136.715 101.886 136.715Z" fill="white"/>
<path id="Vector_2" d="M101.9 137.429C102.61 137.432 103.289 137.717 103.79 138.22C104.29 138.723 104.571 139.404 104.571 140.114V191.9C104.571 192.609 104.29 193.288 103.789 193.789C103.288 194.29 102.609 194.571 101.9 194.571H50.1143C49.4045 194.571 48.7235 194.29 48.2202 193.79C47.717 193.289 47.4323 192.61 47.4286 191.9V140.114C47.4286 139.402 47.7115 138.719 48.2152 138.215C48.7189 137.712 49.402 137.429 50.1143 137.429H101.9ZM101.9 136H50.1143C49.0231 136 47.9766 136.433 47.205 137.205C46.4335 137.977 46 139.023 46 140.114V191.9C46.0038 192.989 46.4389 194.032 47.2101 194.8C47.9813 195.569 49.0256 196 50.1143 196H101.9C102.986 195.996 104.027 195.563 104.795 194.795C105.563 194.027 105.996 192.986 106 191.9V140.114C106 139.026 105.569 137.981 104.8 137.21C104.032 136.439 102.989 136.004 101.9 136V136Z" fill="white"/>
<path id="Vector_3" d="M101.9 137.429H50.1148C49.4025 137.429 48.7193 137.712 48.2157 138.216C47.712 138.719 47.429 139.402 47.429 140.115V191.9C47.4328 192.61 47.7174 193.29 48.2207 193.79C48.724 194.291 49.4049 194.572 50.1148 194.572H101.9C102.609 194.572 103.288 194.29 103.789 193.789C104.29 193.288 104.572 192.609 104.572 191.9V140.115C104.572 139.405 104.291 138.724 103.79 138.221C103.29 137.717 102.61 137.433 101.9 137.429ZM50.1148 139.815H101.9C101.939 139.815 101.978 139.822 102.013 139.838C102.049 139.853 102.081 139.875 102.108 139.903C102.134 139.931 102.155 139.965 102.169 140.001C102.182 140.037 102.188 140.076 102.186 140.115V146.958H49.8148V140.115C49.8148 140.035 49.8464 139.959 49.9026 139.903C49.9589 139.846 50.0352 139.815 50.1148 139.815ZM101.9 192.186H50.1148C50.0761 192.188 50.0374 192.182 50.001 192.169C49.9647 192.155 49.9315 192.134 49.9034 192.108C49.8754 192.081 49.853 192.049 49.8378 192.013C49.8225 191.977 49.8147 191.939 49.8148 191.9V149.329H102.186V191.9C102.186 191.976 102.156 192.049 102.103 192.102C102.049 192.156 101.976 192.186 101.9 192.186Z" fill="#2D5967"/>
<path id="Vector_4" d="M53.8285 145.072C54.649 145.072 55.3142 144.407 55.3142 143.586C55.3142 142.766 54.649 142.1 53.8285 142.1C53.008 142.1 52.3428 142.766 52.3428 143.586C52.3428 144.407 53.008 145.072 53.8285 145.072Z" fill="#2D5967"/>
<path id="Vector_5" d="M59.0857 145.072C59.9062 145.072 60.5714 144.407 60.5714 143.586C60.5714 142.766 59.9062 142.1 59.0857 142.1C58.2651 142.1 57.5999 142.766 57.5999 143.586C57.5999 144.407 58.2651 145.072 59.0857 145.072Z" fill="#2D5967"/>
<path id="Vector_6" d="M64.2435 145.072C65.0641 145.072 65.7292 144.407 65.7292 143.586C65.7292 142.766 65.0641 142.1 64.2435 142.1C63.423 142.1 62.7578 142.766 62.7578 143.586C62.7578 144.407 63.423 145.072 64.2435 145.072Z" fill="#2D5967"/>
<path id="Vector_7" d="M76.0007 151.715C72.2908 151.715 68.6643 152.815 65.5797 154.876C62.4951 156.937 60.091 159.866 58.6713 163.294C57.2516 166.721 56.8802 170.493 57.6039 174.131C58.3277 177.77 60.1141 181.112 62.7373 183.735C65.3606 186.358 68.7028 188.145 72.3413 188.868C75.9798 189.592 79.7513 189.221 83.1787 187.801C86.6061 186.381 89.5356 183.977 91.5966 180.893C93.6577 177.808 94.7578 174.182 94.7578 170.472C94.754 165.498 92.7766 160.729 89.2598 157.213C85.7429 153.696 80.9742 151.718 76.0007 151.715ZM90.7292 163.343C90.0009 165.349 88.9804 167.236 87.7007 168.943C87.3559 168.824 86.9941 168.761 86.6292 168.757C86.417 168.77 86.2064 168.804 86.0007 168.857C84.6294 166.967 82.9936 165.283 81.1435 163.857C79.3622 162.479 77.4013 161.349 75.3149 160.5C75.2784 159.913 75.0861 159.346 74.7578 158.857C76.1215 157.2 77.7249 155.756 79.5149 154.572C81.9232 155.097 84.182 156.158 86.1235 157.677C88.0651 159.196 89.6393 161.132 90.7292 163.343ZM87.5292 172.029C87.5321 172.207 87.4817 172.383 87.3845 172.533C87.2874 172.683 87.1478 172.8 86.9837 172.87C86.8195 172.941 86.6381 172.961 86.4626 172.928C86.287 172.894 86.1254 172.81 85.9981 172.685C85.8708 172.559 85.7836 172.399 85.7477 172.224C85.7118 172.049 85.7288 171.867 85.7965 171.702C85.8641 171.537 85.9795 171.395 86.1278 171.296C86.2761 171.196 86.4506 171.143 86.6292 171.143C86.8655 171.143 87.0922 171.236 87.2606 171.402C87.429 171.567 87.5255 171.793 87.5292 172.029ZM83.5578 173.143C80.3334 175.63 76.4896 177.186 72.4435 177.643C72.2247 177.158 71.8903 176.733 71.4694 176.407C71.0485 176.081 70.554 175.863 70.0292 175.772C69.4904 171.73 70.0736 167.618 71.7149 163.886H72.0578C72.5363 163.891 73.0099 163.789 73.4446 163.589C73.8793 163.389 74.2643 163.095 74.5721 162.729C76.4112 163.492 78.1407 164.496 79.7149 165.715C81.3416 166.974 82.7841 168.455 84.0007 170.115C83.5905 170.668 83.37 171.34 83.3721 172.029C83.3659 172.409 83.4288 172.786 83.5578 173.143ZM70.3578 178.986C70.3739 179.113 70.3628 179.241 70.3252 179.364C70.2877 179.486 70.2246 179.598 70.1402 179.694C70.0557 179.79 69.9518 179.867 69.8354 179.919C69.719 179.972 69.5927 179.999 69.4649 179.999C69.3372 179.999 69.2109 179.972 69.0945 179.919C68.9781 179.867 68.8742 179.79 68.7897 179.694C68.7053 179.598 68.6422 179.486 68.6046 179.364C68.5671 179.241 68.556 179.113 68.5721 178.986C68.5996 178.769 68.7055 178.569 68.8699 178.424C69.0343 178.279 69.2458 178.199 69.4649 178.199C69.684 178.199 69.8956 178.279 70.06 178.424C70.2244 178.569 70.3302 178.769 70.3578 178.986ZM71.1435 160.643C71.1711 160.426 71.2769 160.226 71.4413 160.081C71.6057 159.936 71.8173 159.856 72.0364 159.856C72.2555 159.856 72.467 159.936 72.6314 160.081C72.7958 160.226 72.9017 160.426 72.9292 160.643C72.9453 160.77 72.9342 160.899 72.8967 161.021C72.8591 161.143 72.796 161.256 72.7116 161.351C72.6271 161.447 72.5232 161.524 72.4068 161.577C72.2904 161.629 72.1641 161.656 72.0364 161.656C71.9086 161.656 71.7823 161.629 71.6659 161.577C71.5495 161.524 71.4456 161.447 71.3611 161.351C71.2767 161.256 71.2136 161.143 71.1761 161.021C71.1385 160.899 71.1274 160.77 71.1435 160.643ZM76.0007 154.1C74.8295 155.104 73.7579 156.219 72.8007 157.429C72.5477 157.371 72.2888 157.342 72.0292 157.343C71.4775 157.344 70.9348 157.483 70.4506 157.747C69.9664 158.012 69.5563 158.393 69.2578 158.857C67.7089 158.66 66.1445 158.612 64.5864 158.715C67.6442 155.747 71.7399 154.092 76.0007 154.1ZM62.3578 161.429C64.5015 161.03 66.6936 160.963 68.8578 161.229C68.9648 161.803 69.2266 162.336 69.6149 162.772C68.6933 164.841 68.0634 167.029 67.7435 169.272C67.422 171.58 67.422 173.921 67.7435 176.229C67.2566 176.544 66.8622 176.983 66.6007 177.5C64.4905 177.166 62.4404 176.526 60.5149 175.6C59.7359 173.249 59.5021 170.751 59.8313 168.296C60.1605 165.84 61.044 163.492 62.4149 161.429H62.3578ZM61.9149 178.857C63.3444 179.359 64.8174 179.728 66.3149 179.957C66.5091 180.618 66.9059 181.201 67.4493 181.624C67.9928 182.047 68.6554 182.289 69.3435 182.315C69.9188 183.689 70.6169 185.009 71.4292 186.257C67.4368 185.081 64.0375 182.438 61.9149 178.857ZM76.0007 186.829C75.6149 186.829 75.2292 186.829 74.8578 186.829C73.5141 185.216 72.4121 183.416 71.5864 181.486C72.035 181.108 72.3711 180.614 72.5578 180.057C74.8344 179.812 77.0656 179.249 79.1864 178.386C81.3106 177.527 83.3057 176.378 85.1149 174.972C85.5803 175.223 86.1004 175.355 86.6292 175.357H86.8149C87.5863 177.3 88.0676 179.346 88.2435 181.429C86.7017 183.145 84.8129 184.513 82.7023 185.444C80.5917 186.375 78.3074 186.847 76.0007 186.829ZM90.2864 178.557C90.0162 177.093 89.6048 175.657 89.0578 174.272C89.649 173.664 89.9774 172.848 89.9721 172C89.9718 171.462 89.8393 170.932 89.5864 170.457C90.5024 169.248 91.3057 167.957 91.9864 166.6C92.9746 170.657 92.366 174.937 90.2864 178.557Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label">
<text id="IconLabel" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="57.1016" y="213.816">PSFT</tspan></text>
<text id="IconLabel_2" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="40.2969" y="229.816"> Web/App</tspan></text>
<text id="IconLabel_3" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="41.625" y="245.816">(Physical)</tspan></text>
</g>
</g>
</g>
<g id="DB exadata">
<g id="Database-Action-gear">
<g id="Group 309">
<path id="Vector_8" d="M85.1504 491.089L85.0651 490.32C81.5803 490.712 78.0766 490.911 74.57 490.918C71.9107 490.918 48.5456 490.705 48.5456 483.083V440.576C48.5456 432.742 71.9107 432.514 74.57 432.514C77.2293 432.514 100.609 432.742 100.609 440.576V468.112L102.5 470.021L100.68 472.3L103.524 472.628V481.274L100.68 481.602L102.5 483.881L96.385 490.007L94.4651 488.468L94.067 488.596L93.7825 491.089H85.1504Z" fill="white"/>
<path id="Vector_9" d="M74.5688 433.225C83.3858 433.225 99.8964 434.764 99.8964 440.576V468.41L101.546 470.063L99.8964 472.143V472.926L102.869 473.254V480.647L99.8964 480.975V481.758L101.546 483.838L96.3411 489.051L94.6062 487.627L93.4116 487.997L93.1556 490.334H85.775L85.6896 489.493C81.9996 489.946 78.2864 490.184 74.5688 490.205C65.8229 490.205 49.2554 488.781 49.2554 483.083V440.576C49.2554 434.764 65.8229 433.225 74.5688 433.225ZM74.5688 431.801C70.1034 431.801 47.8333 432.228 47.8333 440.576V483.083C47.8333 491.245 70.1034 491.63 74.5688 491.63C77.8654 491.624 81.1596 491.448 84.4382 491.103L84.5093 491.801H94.464L94.6062 490.533L94.72 489.55L95.4879 490.163L96.4834 490.96L97.3793 490.063L102.598 484.835L103.494 483.938L102.698 482.94L102.086 482.171L103.068 482.057L104.333 481.915V471.943L103.068 471.801L102.044 471.687L102.655 470.918L103.452 469.92L102.556 469.023L101.318 467.784V440.576C101.318 432.228 79.1195 431.801 74.5688 431.801Z" fill="white"/>
<path id="Vector_10" d="M99.4982 481.26L99.5694 481.075L99.4982 481.26Z" fill="#2D5967"/>
<path id="Vector_11" d="M78.5815 487.569C77.2732 487.569 75.9364 487.641 74.5712 487.641C68.9315 487.698 63.3031 487.125 57.7904 485.931C52.7704 484.777 51.647 483.438 51.647 483.082V472.284C56.4679 475.133 67.5318 476.017 74.2868 476.031V473.652C68.7437 473.703 63.2117 473.144 57.7904 471.985C52.7562 470.789 51.6328 469.435 51.6328 469.065V458.495C56.539 461.344 67.8447 462.242 74.557 462.242C77.259 462.242 80.7005 462.099 84.1704 461.757H84.341C89.4464 461.23 94.5944 460.233 97.4955 458.524V463.524L97.595 463.609L99.8846 465.903V441.145C99.8908 441.064 99.8908 440.983 99.8846 440.903C99.8916 440.789 99.8916 440.675 99.8846 440.561C99.8846 435.632 86.7586 433.438 74.557 433.438C62.3554 433.438 49.2578 435.632 49.2578 440.561C49.2508 440.675 49.2508 440.789 49.2578 440.903C49.2517 440.983 49.2517 441.064 49.2578 441.145V483.082C49.2578 488.609 65.8253 490.062 74.5712 490.062C76.4057 490.062 78.5673 490.062 80.8427 489.848L78.5815 487.569ZM74.5712 435.774C80.2125 435.697 85.8438 436.275 91.352 437.498C96.4004 438.737 97.5097 440.133 97.5097 440.561C97.5097 440.988 96.4004 442.37 91.352 443.609C85.8438 444.832 80.2125 445.41 74.5712 445.333C68.9299 445.411 63.2986 444.832 57.7904 443.609C52.7562 442.37 51.647 440.988 51.647 440.561C51.647 440.133 52.7562 438.737 57.7904 437.498C63.2986 436.275 68.9299 435.697 74.5712 435.774ZM91.352 458.196C85.8378 459.376 80.2093 459.935 74.5712 459.863C68.9331 459.935 63.3046 459.376 57.7904 458.196C52.7562 456.999 51.6328 455.646 51.6328 455.262V443.866C55.8991 446.515 65.5124 447.74 74.557 447.74C83.6015 447.74 93.1723 446.515 97.4955 443.866V455.262C97.5097 455.646 96.3862 456.999 91.352 458.196Z" fill="#2D5967"/>
<path id="Vector_12" d="M89.5578 470.39C88.2643 470.404 87.0038 470.801 85.9351 471.531C84.8664 472.261 84.0372 473.292 83.5519 474.493C83.0666 475.694 82.9468 477.012 83.2078 478.281C83.4687 479.55 84.0986 480.714 85.0182 481.625C85.9379 482.536 87.1061 483.155 88.3758 483.402C89.6456 483.65 90.9601 483.516 92.1539 483.017C93.3476 482.518 94.3674 481.676 95.0846 480.598C95.8019 479.52 96.1847 478.253 96.1848 476.957C96.1848 476.089 96.0129 475.229 95.679 474.427C95.3451 473.626 94.8558 472.899 94.2395 472.288C93.6232 471.677 92.8921 471.195 92.0884 470.869C91.2848 470.544 90.4247 470.381 89.5578 470.39ZM89.5578 481.131C88.7297 481.134 87.9193 480.89 87.2296 480.431C86.5399 479.972 86.0018 479.318 85.6836 478.552C85.3654 477.786 85.2814 476.943 85.4422 476.129C85.6031 475.315 86.0016 474.568 86.5872 473.981C87.1728 473.395 87.919 472.996 88.7314 472.835C89.5437 472.673 90.3856 472.758 91.1501 473.076C91.9147 473.395 92.5675 473.934 93.0258 474.625C93.4842 475.316 93.7273 476.127 93.7245 476.957C93.7245 478.064 93.2855 479.126 92.5041 479.908C91.7227 480.691 90.6629 481.131 89.5578 481.131Z" fill="#2D5967"/>
<path id="Vector_13" d="M99.5978 472.898L99.4982 472.641L101.546 470.063L96.3412 464.849L93.7672 466.9L93.5112 466.801L93.1557 463.524H85.775L85.4195 466.801L85.1635 466.9L82.5895 464.849L77.3846 470.063L79.4324 472.641L79.3329 472.898L76.062 473.254V480.647L79.3329 481.003L79.4324 481.259L77.3846 483.838L82.5895 489.051L85.1635 487L85.4195 487.1L85.775 490.376H93.1557L93.5112 487.1L93.7672 487L96.3412 489.051L101.546 483.838L99.4982 481.259L99.5978 481.003L102.869 480.647V473.254L99.5978 472.898ZM100.451 478.51L97.8059 478.795L97.5642 479.536C97.4237 479.999 97.238 480.448 97.0096 480.875L96.654 481.573L98.3321 483.653L96.1847 485.932L94.1085 484.251L93.3405 484.507C92.9143 484.736 92.4665 484.922 92.0038 485.063L91.2785 485.305L90.9799 487.955H87.9081L87.6522 485.334L86.9127 485.091C86.4508 484.948 86.0033 484.762 85.5759 484.536L84.808 484.18L82.7743 485.932L80.5417 483.653L82.2055 481.573L81.9638 480.875C81.7354 480.448 81.5496 479.999 81.4091 479.536L81.0963 478.809L78.4512 478.524V475.391L81.0963 475.106L81.338 474.365C81.481 473.902 81.6667 473.454 81.8926 473.026L82.2482 472.342L80.5417 470.262L82.7317 468.054L84.808 469.721L85.4906 469.365C85.918 469.139 86.3655 468.953 86.8273 468.809L87.5668 468.567L87.8512 465.918H90.9656L91.2643 468.567L91.9896 468.809C92.4523 468.95 92.9001 469.136 93.3263 469.365L94.0232 469.721L96.1847 468.04L98.3606 470.262L96.6825 472.356L97.038 473.04C97.2639 473.468 97.4496 473.917 97.5926 474.379L97.8344 475.12L100.479 475.405L100.451 478.51Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_2">
<text id="IconLabel_4" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="57.1016" y="509.617">PSFT</tspan></text>
<text id="IconLabel_5" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="38.4375" y="525.617">Databases</tspan></text>
<text id="IconLabel_6" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="41.8047" y="541.617">(Exadata)</tspan></text>
</g>
</g>
<g id="On-premises box_2">
<g id="OCi">
<g id="Internet_2">
<rect x="328.5" y="72.5" width="151" height="519" rx="3.5" fill="#F5F4F2"/>
<text id="OCI Region_2" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="355.305" y="93.816">Oracle Cloud</tspan></text>
<rect x="328.5" y="72.5" width="151" height="519" rx="3.5" stroke="#9E9892"/>
</g>
<text id="Infrastructure" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="350.664" y="115.816">Infrastructure</tspan></text>
</g>
</g>
<g id="web app virtual">
<g id="Site-to-Site VPN or FastConnect_2">
<g id="Web-Application_2">
<g id="Group 486_2">
<path id="Vector_14" d="M429.886 136.715H378.115C376.237 136.715 374.715 138.237 374.715 140.115V191.886C374.715 193.764 376.237 195.286 378.115 195.286H429.886C431.764 195.286 433.286 193.764 433.286 191.886V140.115C433.286 138.237 431.764 136.715 429.886 136.715Z" fill="white"/>
<path id="Vector_15" d="M429.9 137.429C430.61 137.432 431.289 137.717 431.79 138.22C432.29 138.723 432.571 139.404 432.571 140.114V191.9C432.571 192.609 432.29 193.288 431.789 193.789C431.288 194.29 430.609 194.571 429.9 194.571H378.114C377.404 194.571 376.723 194.29 376.22 193.79C375.717 193.289 375.432 192.61 375.429 191.9V140.114C375.429 139.402 375.712 138.719 376.215 138.215C376.719 137.712 377.402 137.429 378.114 137.429H429.9ZM429.9 136H378.114C377.023 136 375.977 136.433 375.205 137.205C374.433 137.977 374 139.023 374 140.114V191.9C374.004 192.989 374.439 194.032 375.21 194.8C375.981 195.569 377.026 196 378.114 196H429.9C430.986 195.996 432.027 195.563 432.795 194.795C433.563 194.027 433.996 192.986 434 191.9V140.114C434 139.026 433.569 137.981 432.8 137.21C432.032 136.439 430.989 136.004 429.9 136V136Z" fill="white"/>
<path id="Vector_16" d="M429.9 137.429H378.115C377.402 137.429 376.719 137.712 376.216 138.216C375.712 138.719 375.429 139.402 375.429 140.115V191.9C375.433 192.61 375.717 193.29 376.221 193.79C376.724 194.291 377.405 194.572 378.115 194.572H429.9C430.609 194.572 431.288 194.29 431.789 193.789C432.29 193.288 432.572 192.609 432.572 191.9V140.115C432.572 139.405 432.291 138.724 431.79 138.221C431.29 137.717 430.61 137.433 429.9 137.429ZM378.115 139.815H429.9C429.939 139.815 429.978 139.822 430.013 139.838C430.049 139.853 430.081 139.875 430.108 139.903C430.134 139.931 430.155 139.965 430.169 140.001C430.182 140.037 430.188 140.076 430.186 140.115V146.958H377.815V140.115C377.815 140.035 377.846 139.959 377.903 139.903C377.959 139.846 378.035 139.815 378.115 139.815ZM429.9 192.186H378.115C378.076 192.188 378.037 192.182 378.001 192.169C377.965 192.155 377.931 192.134 377.903 192.108C377.875 192.081 377.853 192.049 377.838 192.013C377.823 191.977 377.815 191.939 377.815 191.9V149.329H430.186V191.9C430.186 191.976 430.156 192.049 430.102 192.102C430.049 192.156 429.976 192.186 429.9 192.186Z" fill="#2D5967"/>
<path id="Vector_17" d="M381.828 145.072C382.649 145.072 383.314 144.407 383.314 143.586C383.314 142.766 382.649 142.1 381.828 142.1C381.008 142.1 380.343 142.766 380.343 143.586C380.343 144.407 381.008 145.072 381.828 145.072Z" fill="#2D5967"/>
<path id="Vector_18" d="M387.086 145.072C387.906 145.072 388.571 144.407 388.571 143.586C388.571 142.766 387.906 142.1 387.086 142.1C386.265 142.1 385.6 142.766 385.6 143.586C385.6 144.407 386.265 145.072 387.086 145.072Z" fill="#2D5967"/>
<path id="Vector_19" d="M392.244 145.072C393.064 145.072 393.729 144.407 393.729 143.586C393.729 142.766 393.064 142.1 392.244 142.1C391.423 142.1 390.758 142.766 390.758 143.586C390.758 144.407 391.423 145.072 392.244 145.072Z" fill="#2D5967"/>
<path id="Vector_20" d="M404.001 151.715C400.291 151.715 396.664 152.815 393.58 154.876C390.495 156.937 388.091 159.866 386.671 163.294C385.252 166.721 384.88 170.493 385.604 174.131C386.328 177.77 388.114 181.112 390.737 183.735C393.361 186.358 396.703 188.145 400.341 188.868C403.98 189.592 407.751 189.221 411.179 187.801C414.606 186.381 417.536 183.977 419.597 180.893C421.658 177.808 422.758 174.182 422.758 170.472C422.754 165.498 420.777 160.729 417.26 157.213C413.743 153.696 408.974 151.718 404.001 151.715ZM418.729 163.343C418.001 165.349 416.98 167.236 415.701 168.943C415.356 168.824 414.994 168.761 414.629 168.757C414.417 168.77 414.206 168.804 414.001 168.857C412.629 166.967 410.994 165.283 409.143 163.857C407.362 162.479 405.401 161.349 403.315 160.5C403.278 159.913 403.086 159.346 402.758 158.857C404.121 157.2 405.725 155.756 407.515 154.572C409.923 155.097 412.182 156.158 414.124 157.677C416.065 159.196 417.639 161.132 418.729 163.343ZM415.529 172.029C415.532 172.207 415.482 172.383 415.385 172.533C415.287 172.683 415.148 172.8 414.984 172.87C414.819 172.941 414.638 172.961 414.463 172.928C414.287 172.894 414.125 172.81 413.998 172.685C413.871 172.559 413.784 172.399 413.748 172.224C413.712 172.049 413.729 171.867 413.796 171.702C413.864 171.537 413.979 171.395 414.128 171.296C414.276 171.196 414.451 171.143 414.629 171.143C414.865 171.143 415.092 171.236 415.261 171.402C415.429 171.567 415.525 171.793 415.529 172.029ZM411.558 173.143C408.333 175.63 404.49 177.186 400.443 177.643C400.225 177.158 399.89 176.733 399.469 176.407C399.048 176.081 398.554 175.863 398.029 175.772C397.49 171.73 398.074 167.618 399.715 163.886H400.058C400.536 163.891 401.01 163.789 401.445 163.589C401.879 163.389 402.264 163.095 402.572 162.729C404.411 163.492 406.141 164.496 407.715 165.715C409.342 166.974 410.784 168.455 412.001 170.115C411.59 170.668 411.37 171.34 411.372 172.029C411.366 172.409 411.429 172.786 411.558 173.143ZM398.358 178.986C398.374 179.113 398.363 179.241 398.325 179.364C398.288 179.486 398.225 179.598 398.14 179.694C398.056 179.79 397.952 179.867 397.835 179.919C397.719 179.972 397.593 179.999 397.465 179.999C397.337 179.999 397.211 179.972 397.094 179.919C396.978 179.867 396.874 179.79 396.79 179.694C396.705 179.598 396.642 179.486 396.605 179.364C396.567 179.241 396.556 179.113 396.572 178.986C396.6 178.769 396.705 178.569 396.87 178.424C397.034 178.279 397.246 178.199 397.465 178.199C397.684 178.199 397.896 178.279 398.06 178.424C398.224 178.569 398.33 178.769 398.358 178.986ZM399.143 160.643C399.171 160.426 399.277 160.226 399.441 160.081C399.606 159.936 399.817 159.856 400.036 159.856C400.255 159.856 400.467 159.936 400.631 160.081C400.796 160.226 400.902 160.426 400.929 160.643C400.945 160.77 400.934 160.899 400.897 161.021C400.859 161.143 400.796 161.256 400.712 161.351C400.627 161.447 400.523 161.524 400.407 161.577C400.29 161.629 400.164 161.656 400.036 161.656C399.909 161.656 399.782 161.629 399.666 161.577C399.549 161.524 399.446 161.447 399.361 161.351C399.277 161.256 399.214 161.143 399.176 161.021C399.139 160.899 399.127 160.77 399.143 160.643ZM404.001 154.1C402.829 155.104 401.758 156.219 400.801 157.429C400.548 157.371 400.289 157.342 400.029 157.343C399.477 157.344 398.935 157.483 398.451 157.747C397.966 158.012 397.556 158.393 397.258 158.857C395.709 158.66 394.144 158.612 392.586 158.715C395.644 155.747 399.74 154.092 404.001 154.1ZM390.358 161.429C392.501 161.03 394.694 160.963 396.858 161.229C396.965 161.803 397.227 162.336 397.615 162.772C396.693 164.841 396.063 167.029 395.743 169.272C395.422 171.58 395.422 173.921 395.743 176.229C395.257 176.544 394.862 176.983 394.601 177.5C392.491 177.166 390.44 176.526 388.515 175.6C387.736 173.249 387.502 170.751 387.831 168.296C388.16 165.84 389.044 163.492 390.415 161.429H390.358ZM389.915 178.857C391.344 179.359 392.817 179.728 394.315 179.957C394.509 180.618 394.906 181.201 395.449 181.624C395.993 182.047 396.655 182.289 397.343 182.315C397.919 183.689 398.617 185.009 399.429 186.257C395.437 185.081 392.038 182.438 389.915 178.857ZM404.001 186.829C403.615 186.829 403.229 186.829 402.858 186.829C401.514 185.216 400.412 183.416 399.586 181.486C400.035 181.108 400.371 180.614 400.558 180.057C402.834 179.812 405.066 179.249 407.186 178.386C409.311 177.527 411.306 176.378 413.115 174.972C413.58 175.223 414.1 175.355 414.629 175.357H414.815C415.586 177.3 416.068 179.346 416.243 181.429C414.702 183.145 412.813 184.513 410.702 185.444C408.592 186.375 406.307 186.847 404.001 186.829ZM418.286 178.557C418.016 177.093 417.605 175.657 417.058 174.272C417.649 173.664 417.977 172.848 417.972 172C417.972 171.462 417.839 170.932 417.586 170.457C418.502 169.248 419.306 167.957 419.986 166.6C420.975 170.657 420.366 174.937 418.286 178.557Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_3">
<text id="IconLabel_7" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="385.102" y="213.816">PSFT</tspan></text>
<text id="IconLabel_8" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="368.297" y="229.816"> Web/App</tspan></text>
<text id="IconLabel_9" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="374.805" y="245.816">(Virtual)</tspan></text>
</g>
</g>
</g>
<g id="exadata">
<g id="Services-Exadata-Database-System">
<g id="Group 515">
<path id="Vector_21" d="M390.486 491.129V488.814L392.911 487.656V455.312H382.269L382.412 453.24C382.539 451.411 383.13 449.646 384.129 448.111C385.127 446.575 386.5 445.32 388.118 444.464C388.392 444.32 388.631 444.117 388.818 443.87C389.006 443.623 389.137 443.338 389.202 443.035C389.471 441.712 390.057 440.474 390.909 439.429C391.762 438.383 392.855 437.56 394.095 437.032C395.153 436.572 396.294 436.334 397.447 436.332C397.708 436.317 397.97 436.317 398.232 436.332H398.431C398.699 436.337 398.965 436.284 399.211 436.178C399.457 436.072 399.677 435.915 399.858 435.717C400.813 434.703 401.965 433.896 403.243 433.345C404.521 432.795 405.899 432.512 407.29 432.515C409.179 432.507 411.032 433.031 412.639 434.026C414.245 435.022 415.54 436.45 416.377 438.147C416.518 438.426 416.719 438.671 416.966 438.864C417.212 439.056 417.498 439.192 417.803 439.262C418.973 439.54 420.083 440.024 421.084 440.691C423.303 442.096 424.909 444.29 425.579 446.833C426.248 449.376 425.932 452.079 424.693 454.397L424.166 455.384H417.347V487.656L419.701 488.814V491.129H390.486Z" fill="white"/>
<path id="Vector_22" d="M407.289 433.23C409.044 433.222 410.766 433.708 412.259 434.633C413.752 435.558 414.956 436.884 415.734 438.461C415.932 438.825 416.207 439.141 416.54 439.388C416.872 439.635 417.254 439.806 417.659 439.89C419.117 440.211 420.481 440.867 421.642 441.805C422.804 442.744 423.733 443.94 424.355 445.299C424.977 446.658 425.276 448.143 425.228 449.638C425.18 451.132 424.787 452.595 424.079 453.911L423.751 454.526H416.618V488.113L418.972 489.271V490.4H391.198V489.257L393.566 488.099V454.669H383.038L383.124 453.425C383.229 451.698 383.78 450.027 384.723 448.577C385.665 447.126 386.967 445.945 388.502 445.15C388.868 444.956 389.189 444.684 389.44 444.353C389.691 444.023 389.868 443.641 389.957 443.235C390.297 441.495 391.23 439.929 392.596 438.802C393.962 437.676 395.677 437.06 397.446 437.06C397.683 437.046 397.922 437.046 398.159 437.06H398.43C398.797 437.064 399.16 436.991 399.496 436.846C399.833 436.701 400.135 436.487 400.384 436.217C401.271 435.273 402.341 434.521 403.528 434.008C404.715 433.494 405.995 433.229 407.289 433.23ZM407.289 431.801C405.797 431.803 404.323 432.113 402.956 432.711C401.589 433.308 400.359 434.18 399.343 435.274C399.225 435.397 399.083 435.495 398.926 435.561C398.769 435.627 398.6 435.661 398.43 435.66H398.302H397.446C395.349 435.655 393.316 436.379 391.693 437.708C390.07 439.037 388.957 440.89 388.544 442.949C388.509 443.148 388.427 443.336 388.306 443.497C388.184 443.659 388.027 443.789 387.845 443.878C386.109 444.784 384.633 446.12 383.557 447.758C382.481 449.397 381.841 451.283 381.697 453.24L381.611 454.483L381.497 456.098H392.139V487.213L390.57 487.985L389.771 488.371V491.529L390.841 491.801H391.012H420.413V488.371L419.614 487.985L418.059 487.213V456.098H424.607L425.006 455.341L425.334 454.74C426.674 452.248 427.017 449.338 426.293 446.601C425.57 443.865 423.835 441.506 421.44 440.005C420.362 439.327 419.174 438.844 417.93 438.575C417.724 438.535 417.53 438.447 417.364 438.318C417.198 438.189 417.065 438.022 416.975 437.832C416.082 436.022 414.701 434.499 412.99 433.433C411.278 432.367 409.304 431.802 407.289 431.801V431.801Z" fill="white"/>
<path id="Vector_23" d="M391.925 489.7L394.278 488.557V445.479H415.919V488.557L418.258 489.7H391.925Z" fill="white"/>
<path id="Vector_24" d="M415.206 446.194V488.971H394.992V446.194H415.206ZM416.632 444.765H393.565V488.114L391.197 489.272V490.401H418.986V489.257L416.632 488.1V444.765Z" fill="white"/>
<path id="Vector_25" d="M416.632 488.114V444.765H393.565V488.114L391.197 489.272V490.401H418.986V489.257L416.632 488.114ZM395.933 447.08H414.307V488.114H395.933V447.08ZM397.702 448.809H412.481V451.125H397.702V448.809ZM410.712 452.854H399.471V454.884H397.702V457.199H399.471V459.214H410.712V457.199H412.481V454.884H410.712V452.854ZM408.344 456.899H401.839V455.17H408.344V456.899ZM406.789 477.737L410.141 484.355H407.174L405.035 479.71L402.98 484.355H400.042L403.423 477.652L400.213 471.334H403.166L405.163 475.622L407.089 471.334H409.942L406.789 477.737ZM400.042 463.245H397.702V460.944H400.042V463.245ZM404.179 463.245H401.839V460.944H404.207L404.179 463.245ZM408.316 463.245H405.976V460.944H408.344L408.316 463.245ZM410.099 460.929H412.452V463.245H410.127L410.099 460.929ZM400.113 467.29H397.702V464.989H400.042L400.113 467.29ZM401.882 464.974H404.25V467.29H401.839L401.882 464.974ZM406.019 464.974H408.387V467.29H405.976L406.019 464.974ZM410.17 464.974H412.524V467.29H410.127L410.17 464.974Z" fill="#2D5967"/>
<path id="Vector_26" d="M424.081 453.982L423.753 454.596H418.047V452.281H422.326C423.005 450.671 423.09 448.871 422.568 447.204C422.045 445.537 420.949 444.109 419.473 443.176C418.768 442.719 417.984 442.395 417.163 442.219C416.415 442.056 415.713 441.726 415.11 441.253C414.507 440.781 414.019 440.177 413.682 439.489C413.167 438.455 412.41 437.561 411.475 436.884C410.54 436.208 409.455 435.768 408.313 435.604C407.172 435.439 406.007 435.555 404.92 435.94C403.832 436.326 402.855 436.97 402.07 437.817C401.551 438.38 400.908 438.813 400.192 439.084C399.477 439.354 398.708 439.454 397.947 439.375C397.046 439.287 396.136 439.435 395.308 439.803C394.519 440.151 393.825 440.685 393.286 441.36C392.747 442.034 392.379 442.829 392.213 443.677C392.064 444.423 391.749 445.127 391.292 445.735C390.835 446.344 390.248 446.842 389.574 447.193C388.589 447.707 387.727 448.427 387.045 449.305C386.363 450.183 385.878 451.198 385.622 452.281H392.099V454.668H383.04L383.126 453.424C383.231 451.697 383.782 450.026 384.725 448.575C385.667 447.125 386.97 445.944 388.504 445.149C388.871 444.955 389.191 444.683 389.442 444.352C389.694 444.021 389.87 443.64 389.959 443.234C390.185 442.023 390.702 440.885 391.465 439.919C392.228 438.952 393.214 438.187 394.338 437.688C395.524 437.158 396.827 436.947 398.119 437.074C398.528 437.121 398.944 437.071 399.331 436.927C399.718 436.783 400.065 436.549 400.344 436.245C401.381 435.116 402.676 434.257 404.119 433.743C405.561 433.228 407.107 433.073 408.622 433.292C410.138 433.51 411.577 434.094 412.817 434.995C414.056 435.895 415.058 437.085 415.736 438.46C415.934 438.824 416.209 439.14 416.542 439.387C416.874 439.634 417.257 439.805 417.662 439.889C419.119 440.21 420.483 440.865 421.645 441.804C422.807 442.742 423.735 443.938 424.358 445.297C424.98 446.657 425.279 448.142 425.231 449.636C425.183 451.131 424.789 452.594 424.081 453.91" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_4">
<text id="IconLabel_10" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="374.961" y="509.617">Exadata</tspan></text>
<text id="IconLabel_11" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="382.875" y="525.617">Cloud</tspan></text>
<text id="IconLabel_12" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="377.789" y="541.617">Service</tspan></text>
</g>
</g>
<g id="On-premises box_3">
<g id="OCi_2">
<g id="Internet_3">
<rect x="688.5" y="72.5" width="151" height="503" rx="3.5" fill="#F5F4F2"/>
<text id="OCI Region_3" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="715.305" y="93.816">Oracle Cloud</tspan></text>
<rect x="688.5" y="72.5" width="151" height="503" rx="3.5" stroke="#9E9892"/>
</g>
<text id="Infrastructure_2" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="710.664" y="114.893">Infrastructure</tspan></text>
</g>
</g>
<g id="On-premises box_4">
<g id="OCi_3">
<g id="Internet_4">
<rect x="1000.5" y="72.5" width="151" height="503" rx="3.5" fill="#F5F4F2"/>
<text id="OCI Region_4" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="1040.99" y="93.816">3rd Party</tspan></text>
<rect x="1000.5" y="72.5" width="151" height="503" rx="3.5" stroke="#9E9892"/>
</g>
<text id="Integration" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="1033.29" y="114.893">Integration</tspan></text>
</g>
</g>
<g id="web app">
<g id="Site-to-Site VPN or FastConnect_3">
<g id="Web-Application_3">
<g id="Group 486_3">
<path id="Vector_27" d="M789.886 136.715H738.115C736.237 136.715 734.715 138.237 734.715 140.115V191.886C734.715 193.764 736.237 195.286 738.115 195.286H789.886C791.764 195.286 793.286 193.764 793.286 191.886V140.115C793.286 138.237 791.764 136.715 789.886 136.715Z" fill="white"/>
<path id="Vector_28" d="M789.9 137.429C790.61 137.432 791.289 137.717 791.79 138.22C792.29 138.723 792.571 139.404 792.571 140.114V191.9C792.571 192.609 792.29 193.288 791.789 193.789C791.288 194.29 790.609 194.571 789.9 194.571H738.114C737.404 194.571 736.723 194.29 736.22 193.79C735.717 193.289 735.432 192.61 735.429 191.9V140.114C735.429 139.402 735.712 138.719 736.215 138.215C736.719 137.712 737.402 137.429 738.114 137.429H789.9ZM789.9 136H738.114C737.023 136 735.977 136.433 735.205 137.205C734.433 137.977 734 139.023 734 140.114V191.9C734.004 192.989 734.439 194.032 735.21 194.8C735.981 195.569 737.026 196 738.114 196H789.9C790.986 195.996 792.027 195.563 792.795 194.795C793.563 194.027 793.996 192.986 794 191.9V140.114C794 139.026 793.569 137.981 792.8 137.21C792.032 136.439 790.989 136.004 789.9 136V136Z" fill="white"/>
<path id="Vector_29" d="M789.9 137.429H738.115C737.402 137.429 736.719 137.712 736.216 138.216C735.712 138.719 735.429 139.402 735.429 140.115V191.9C735.433 192.61 735.717 193.29 736.221 193.79C736.724 194.291 737.405 194.572 738.115 194.572H789.9C790.609 194.572 791.288 194.29 791.789 193.789C792.29 193.288 792.572 192.609 792.572 191.9V140.115C792.572 139.405 792.291 138.724 791.79 138.221C791.29 137.717 790.61 137.433 789.9 137.429ZM738.115 139.815H789.9C789.939 139.815 789.978 139.822 790.013 139.838C790.049 139.853 790.081 139.875 790.108 139.903C790.134 139.931 790.155 139.965 790.169 140.001C790.182 140.037 790.188 140.076 790.186 140.115V146.958H737.815V140.115C737.815 140.035 737.846 139.959 737.903 139.903C737.959 139.846 738.035 139.815 738.115 139.815ZM789.9 192.186H738.115C738.076 192.188 738.037 192.182 738.001 192.169C737.965 192.155 737.931 192.134 737.903 192.108C737.875 192.081 737.853 192.049 737.838 192.013C737.823 191.977 737.815 191.939 737.815 191.9V149.329H790.186V191.9C790.186 191.976 790.156 192.049 790.102 192.102C790.049 192.156 789.976 192.186 789.9 192.186Z" fill="#2D5967"/>
<path id="Vector_30" d="M741.828 145.072C742.649 145.072 743.314 144.407 743.314 143.586C743.314 142.766 742.649 142.1 741.828 142.1C741.008 142.1 740.343 142.766 740.343 143.586C740.343 144.407 741.008 145.072 741.828 145.072Z" fill="#2D5967"/>
<path id="Vector_31" d="M747.086 145.072C747.906 145.072 748.571 144.407 748.571 143.586C748.571 142.766 747.906 142.1 747.086 142.1C746.265 142.1 745.6 142.766 745.6 143.586C745.6 144.407 746.265 145.072 747.086 145.072Z" fill="#2D5967"/>
<path id="Vector_32" d="M752.244 145.072C753.064 145.072 753.729 144.407 753.729 143.586C753.729 142.766 753.064 142.1 752.244 142.1C751.423 142.1 750.758 142.766 750.758 143.586C750.758 144.407 751.423 145.072 752.244 145.072Z" fill="#2D5967"/>
<path id="Vector_33" d="M764.001 151.715C760.291 151.715 756.664 152.815 753.58 154.876C750.495 156.937 748.091 159.866 746.671 163.294C745.252 166.721 744.88 170.493 745.604 174.131C746.328 177.77 748.114 181.112 750.737 183.735C753.361 186.358 756.703 188.145 760.341 188.868C763.98 189.592 767.751 189.221 771.179 187.801C774.606 186.381 777.536 183.977 779.597 180.893C781.658 177.808 782.758 174.182 782.758 170.472C782.754 165.498 780.777 160.729 777.26 157.213C773.743 153.696 768.974 151.718 764.001 151.715ZM778.729 163.343C778.001 165.349 776.98 167.236 775.701 168.943C775.356 168.824 774.994 168.761 774.629 168.757C774.417 168.77 774.206 168.804 774.001 168.857C772.629 166.967 770.994 165.283 769.143 163.857C767.362 162.479 765.401 161.349 763.315 160.5C763.278 159.913 763.086 159.346 762.758 158.857C764.121 157.2 765.725 155.756 767.515 154.572C769.923 155.097 772.182 156.158 774.124 157.677C776.065 159.196 777.639 161.132 778.729 163.343ZM775.529 172.029C775.532 172.207 775.482 172.383 775.385 172.533C775.287 172.683 775.148 172.8 774.984 172.87C774.819 172.941 774.638 172.961 774.463 172.928C774.287 172.894 774.125 172.81 773.998 172.685C773.871 172.559 773.784 172.399 773.748 172.224C773.712 172.049 773.729 171.867 773.796 171.702C773.864 171.537 773.979 171.395 774.128 171.296C774.276 171.196 774.451 171.143 774.629 171.143C774.865 171.143 775.092 171.236 775.261 171.402C775.429 171.567 775.525 171.793 775.529 172.029ZM771.558 173.143C768.333 175.63 764.49 177.186 760.443 177.643C760.225 177.158 759.89 176.733 759.469 176.407C759.048 176.081 758.554 175.863 758.029 175.772C757.49 171.73 758.074 167.618 759.715 163.886H760.058C760.536 163.891 761.01 163.789 761.445 163.589C761.879 163.389 762.264 163.095 762.572 162.729C764.411 163.492 766.141 164.496 767.715 165.715C769.342 166.974 770.784 168.455 772.001 170.115C771.59 170.668 771.37 171.34 771.372 172.029C771.366 172.409 771.429 172.786 771.558 173.143ZM758.358 178.986C758.374 179.113 758.363 179.241 758.325 179.364C758.288 179.486 758.225 179.598 758.14 179.694C758.056 179.79 757.952 179.867 757.835 179.919C757.719 179.972 757.593 179.999 757.465 179.999C757.337 179.999 757.211 179.972 757.094 179.919C756.978 179.867 756.874 179.79 756.79 179.694C756.705 179.598 756.642 179.486 756.605 179.364C756.567 179.241 756.556 179.113 756.572 178.986C756.6 178.769 756.705 178.569 756.87 178.424C757.034 178.279 757.246 178.199 757.465 178.199C757.684 178.199 757.896 178.279 758.06 178.424C758.224 178.569 758.33 178.769 758.358 178.986ZM759.143 160.643C759.171 160.426 759.277 160.226 759.441 160.081C759.606 159.936 759.817 159.856 760.036 159.856C760.255 159.856 760.467 159.936 760.631 160.081C760.796 160.226 760.902 160.426 760.929 160.643C760.945 160.77 760.934 160.899 760.897 161.021C760.859 161.143 760.796 161.256 760.712 161.351C760.627 161.447 760.523 161.524 760.407 161.577C760.29 161.629 760.164 161.656 760.036 161.656C759.909 161.656 759.782 161.629 759.666 161.577C759.549 161.524 759.446 161.447 759.361 161.351C759.277 161.256 759.214 161.143 759.176 161.021C759.139 160.899 759.127 160.77 759.143 160.643ZM764.001 154.1C762.829 155.104 761.758 156.219 760.801 157.429C760.548 157.371 760.289 157.342 760.029 157.343C759.477 157.344 758.935 157.483 758.451 157.747C757.966 158.012 757.556 158.393 757.258 158.857C755.709 158.66 754.144 158.612 752.586 158.715C755.644 155.747 759.74 154.092 764.001 154.1ZM750.358 161.429C752.501 161.03 754.694 160.963 756.858 161.229C756.965 161.803 757.227 162.336 757.615 162.772C756.693 164.841 756.063 167.029 755.743 169.272C755.422 171.58 755.422 173.921 755.743 176.229C755.257 176.544 754.862 176.983 754.601 177.5C752.491 177.166 750.44 176.526 748.515 175.6C747.736 173.249 747.502 170.751 747.831 168.296C748.16 165.84 749.044 163.492 750.415 161.429H750.358ZM749.915 178.857C751.344 179.359 752.817 179.728 754.315 179.957C754.509 180.618 754.906 181.201 755.449 181.624C755.993 182.047 756.655 182.289 757.343 182.315C757.919 183.689 758.617 185.009 759.429 186.257C755.437 185.081 752.038 182.438 749.915 178.857ZM764.001 186.829C763.615 186.829 763.229 186.829 762.858 186.829C761.514 185.216 760.412 183.416 759.586 181.486C760.035 181.108 760.371 180.614 760.558 180.057C762.834 179.812 765.066 179.249 767.186 178.386C769.311 177.527 771.306 176.378 773.115 174.972C773.58 175.223 774.1 175.355 774.629 175.357H774.815C775.586 177.3 776.068 179.346 776.243 181.429C774.702 183.145 772.813 184.513 770.702 185.444C768.592 186.375 766.307 186.847 764.001 186.829ZM778.286 178.557C778.016 177.093 777.605 175.657 777.058 174.272C777.649 173.664 777.977 172.848 777.972 172C777.972 171.462 777.839 170.932 777.586 170.457C778.502 169.248 779.306 167.957 779.986 166.6C780.975 170.657 780.366 174.937 778.286 178.557Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_5">
<text id="IconLabel_13" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="745.102" y="213.816">PSFT</tspan></text>
<text id="IconLabel_14" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="728.297" y="229.816"> Web/App</tspan></text>
</g>
</g>
</g>
<g id="Mulesoft">
<g id="Services-SaaS-Cloud-Service">
<g id="Group 522">
<path id="Vector_34" d="M1065.06 195.27C1064.14 195.27 1063.26 194.896 1062.61 194.231C1061.96 193.566 1061.59 192.664 1061.59 191.724V167.342H1046.77L1046.93 165.182C1047.12 162.732 1047.92 160.373 1049.26 158.33C1050.59 156.286 1052.41 154.627 1054.55 153.509C1055.01 153.253 1055.4 152.894 1055.69 152.458C1055.99 152.023 1056.18 151.524 1056.26 150.999C1056.75 148.479 1058.07 146.209 1060 144.578C1061.94 142.946 1064.37 142.054 1066.88 142.055C1067.22 142.033 1067.56 142.033 1067.91 142.055H1068.23C1068.68 142.06 1069.13 141.969 1069.54 141.788C1069.95 141.607 1070.32 141.34 1070.63 141.004C1072.09 139.395 1073.91 138.174 1075.94 137.445C1077.97 136.716 1080.14 136.502 1082.26 136.82C1084.39 137.139 1086.4 137.981 1088.14 139.274C1089.88 140.567 1091.28 142.272 1092.23 144.243C1092.46 144.736 1092.79 145.17 1093.21 145.511C1093.62 145.852 1094.11 146.092 1094.63 146.213C1096.15 146.553 1097.59 147.165 1098.9 148.023C1101.81 149.901 1103.91 152.838 1104.79 156.242C1105.66 159.646 1105.25 163.263 1103.62 166.364L1103.08 167.4H1093.03V191.724C1093.03 192.666 1092.66 193.567 1092.01 194.232C1091.36 194.897 1090.47 195.27 1089.55 195.27H1065.06Z" fill="white"/>
<path id="Vector_35" d="M1080.36 137.459C1082.7 137.449 1084.99 138.111 1086.98 139.37C1088.97 140.629 1090.57 142.434 1091.61 144.58C1091.88 145.153 1092.29 145.655 1092.78 146.049C1093.27 146.443 1093.84 146.719 1094.46 146.856C1095.9 147.189 1097.28 147.771 1098.53 148.578C1101.3 150.35 1103.3 153.132 1104.13 156.361C1104.96 159.589 1104.56 163.02 1103.01 165.956L1102.66 166.613H1092.32V191.725C1092.32 192.096 1092.25 192.463 1092.11 192.806C1091.97 193.148 1091.76 193.46 1091.51 193.721C1091.25 193.983 1090.95 194.19 1090.61 194.331C1090.27 194.471 1089.92 194.543 1089.55 194.541H1065.06C1064.33 194.541 1063.63 194.244 1063.11 193.716C1062.59 193.188 1062.3 192.472 1062.3 191.725V166.642H1047.54L1047.64 165.3C1047.8 162.967 1048.54 160.714 1049.78 158.755C1051.03 156.797 1052.74 155.197 1054.77 154.108C1055.32 153.818 1055.8 153.405 1056.17 152.9C1056.55 152.395 1056.81 151.811 1056.93 151.19C1057.24 149.552 1057.94 148.016 1058.96 146.713C1059.97 145.409 1061.28 144.377 1062.78 143.704C1064.06 143.133 1065.44 142.835 1066.84 142.829C1067.16 142.829 1067.48 142.829 1067.79 142.829H1068.19C1068.73 142.821 1069.25 142.704 1069.74 142.483C1070.23 142.263 1070.67 141.943 1071.04 141.545C1072.23 140.241 1073.68 139.204 1075.28 138.501C1076.89 137.798 1078.62 137.443 1080.36 137.459ZM1080.36 136C1078.44 136.002 1076.53 136.409 1074.77 137.198C1073.01 137.986 1071.42 139.138 1070.11 140.582C1069.87 140.844 1069.58 141.052 1069.26 141.193C1068.93 141.333 1068.59 141.404 1068.23 141.399H1067.96C1067.6 141.377 1067.24 141.377 1066.88 141.399C1064.21 141.407 1061.62 142.362 1059.56 144.102C1057.5 145.841 1056.08 148.258 1055.56 150.942C1055.48 151.352 1055.31 151.738 1055.07 152.071C1054.82 152.404 1054.5 152.677 1054.14 152.868C1051.91 154.062 1050.01 155.82 1048.62 157.975C1047.23 160.129 1046.41 162.61 1046.22 165.183L1046.12 166.525L1046 168.101H1060.88V191.725C1060.88 192.859 1061.32 193.946 1062.1 194.748C1062.89 195.55 1063.95 196 1065.06 196H1089.55C1090.66 196 1091.73 195.55 1092.51 194.749C1093.3 193.947 1093.74 192.86 1093.74 191.725V168.101H1103.52L1103.92 167.342L1104.26 166.686C1105.32 164.696 1105.91 162.481 1105.99 160.215C1106.07 157.95 1105.63 155.697 1104.71 153.636C1103.79 151.574 1102.42 149.76 1100.69 148.337C1098.97 146.915 1096.95 145.923 1094.78 145.441C1094.38 145.353 1094 145.177 1093.67 144.925C1093.34 144.673 1093.07 144.351 1092.87 143.982C1091.73 141.585 1089.95 139.567 1087.73 138.156C1085.52 136.745 1082.97 135.998 1080.36 136Z" fill="white"/>
<path id="Vector_36" d="M1086.8 179.978H1085.28C1084.6 179.978 1084.05 180.54 1084.05 181.233V182.794C1084.05 183.487 1084.6 184.049 1085.28 184.049H1086.8C1087.48 184.049 1088.03 183.487 1088.03 182.794V181.233C1088.03 180.54 1087.48 179.978 1086.8 179.978Z" fill="#2D5967"/>
<path id="Vector_37" d="M1075.16 180.124H1073.63C1072.96 180.124 1072.41 180.686 1072.41 181.379V182.94C1072.41 183.633 1072.96 184.195 1073.63 184.195H1075.16C1075.84 184.195 1076.38 183.633 1076.38 182.94V181.379C1076.38 180.686 1075.84 180.124 1075.16 180.124Z" fill="#2D5967"/>
<path id="Vector_38" d="M1069.35 180.124H1067.82C1067.14 180.124 1066.59 180.686 1066.59 181.379V182.94C1066.59 183.633 1067.14 184.195 1067.82 184.195H1069.35C1070.02 184.195 1070.57 183.633 1070.57 182.94V181.379C1070.57 180.686 1070.02 180.124 1069.35 180.124Z" fill="#2D5967"/>
<path id="Vector_39" d="M1080.99 180.124H1079.46C1078.79 180.124 1078.24 180.686 1078.24 181.379V182.94C1078.24 183.633 1078.79 184.195 1079.46 184.195H1080.99C1081.66 184.195 1082.21 183.633 1082.21 182.94V181.379C1082.21 180.686 1081.66 180.124 1080.99 180.124Z" fill="#2D5967"/>
<path id="Vector_40" d="M1086.5 157.245H1068.13C1067.93 157.243 1067.73 157.282 1067.55 157.36C1067.36 157.437 1067.19 157.552 1067.05 157.697C1066.9 157.842 1066.79 158.015 1066.71 158.206C1066.63 158.396 1066.59 158.6 1066.59 158.806V176.681C1066.59 176.893 1066.62 177.105 1066.69 177.304C1066.76 177.503 1066.88 177.685 1067.02 177.838C1067.16 177.991 1067.34 178.112 1067.53 178.194C1067.72 178.276 1067.93 178.317 1068.13 178.315H1086.5C1086.91 178.315 1087.3 178.151 1087.58 177.858C1087.87 177.565 1088.03 177.168 1088.03 176.754V158.806C1088.03 158.392 1087.87 157.995 1087.58 157.702C1087.3 157.41 1086.91 157.245 1086.5 157.245ZM1085.58 175.747H1069.05V159.697H1085.58V175.747Z" fill="#2D5967"/>
<path id="Vector_41" d="M1089.55 152.854H1065.06C1064.32 152.858 1063.63 153.158 1063.11 153.688C1062.59 154.218 1062.3 154.936 1062.3 155.684V191.725C1062.3 192.472 1062.59 193.189 1063.11 193.717C1063.63 194.245 1064.33 194.542 1065.06 194.542H1089.55C1089.92 194.543 1090.28 194.472 1090.61 194.331C1090.95 194.191 1091.25 193.984 1091.51 193.722C1091.76 193.46 1091.97 193.149 1092.11 192.806C1092.25 192.464 1092.32 192.096 1092.32 191.725V155.684C1092.32 154.934 1092.03 154.214 1091.51 153.683C1090.99 153.152 1090.29 152.854 1089.55 152.854ZM1089.87 191.725C1089.87 191.767 1089.86 191.808 1089.84 191.846C1089.83 191.884 1089.8 191.919 1089.77 191.947C1089.75 191.976 1089.71 191.998 1089.67 192.013C1089.63 192.027 1089.59 192.034 1089.55 192.032H1065.06C1065.02 192.032 1064.98 192.024 1064.94 192.008C1064.9 191.993 1064.87 191.97 1064.84 191.942C1064.82 191.914 1064.79 191.88 1064.78 191.843C1064.76 191.805 1064.76 191.766 1064.76 191.725V155.684C1064.75 155.643 1064.76 155.602 1064.77 155.563C1064.79 155.524 1064.81 155.488 1064.84 155.458C1064.87 155.428 1064.9 155.404 1064.94 155.388C1064.97 155.372 1065.01 155.363 1065.06 155.363H1089.55C1089.64 155.363 1089.72 155.397 1089.78 155.458C1089.83 155.518 1089.87 155.599 1089.87 155.684V191.725Z" fill="#2D5967"/>
<path id="Vector_42" d="M1079.45 187.654H1075.17V190.163H1079.45V187.654Z" fill="#2D5967"/>
<path id="Vector_43" d="M1098.55 148.577C1097.29 147.769 1095.91 147.187 1094.46 146.855C1093.85 146.718 1093.27 146.442 1092.78 146.048C1092.29 145.654 1091.89 145.152 1091.61 144.579C1090.57 142.433 1088.97 140.628 1086.98 139.37C1084.99 138.111 1082.7 137.448 1080.36 137.458C1078.63 137.462 1076.92 137.829 1075.34 138.537C1073.76 139.245 1072.33 140.278 1071.16 141.573C1070.73 142.032 1070.22 142.384 1069.64 142.601C1069.06 142.819 1068.45 142.897 1067.83 142.828C1066.12 142.671 1064.4 142.957 1062.82 143.66C1061.33 144.332 1060.02 145.365 1059 146.668C1057.98 147.971 1057.29 149.507 1056.98 151.145C1056.85 151.766 1056.59 152.351 1056.22 152.856C1055.84 153.361 1055.36 153.774 1054.81 154.063C1052.79 155.152 1051.07 156.752 1049.83 158.711C1048.58 160.67 1047.84 162.922 1047.68 165.255L1047.54 166.641H1060.47V164.102H1050.28C1050.6 162.449 1051.27 160.89 1052.26 159.541C1053.25 158.193 1054.52 157.088 1055.98 156.31C1056.86 155.845 1057.62 155.181 1058.21 154.37C1058.8 153.559 1059.21 152.621 1059.4 151.627C1059.64 150.387 1060.16 149.225 1060.94 148.239C1061.71 147.253 1062.7 146.473 1063.83 145.965C1065.02 145.428 1066.32 145.207 1067.62 145.323C1068.6 145.43 1069.59 145.302 1070.52 144.95C1071.44 144.598 1072.28 144.032 1072.95 143.295C1073.9 142.252 1075.05 141.42 1076.32 140.85C1077.6 140.281 1078.97 139.985 1080.36 139.983C1082.24 139.968 1084.09 140.497 1085.68 141.509C1087.28 142.521 1088.57 143.975 1089.4 145.703C1089.84 146.614 1090.48 147.412 1091.27 148.038C1092.06 148.664 1092.97 149.102 1093.94 149.321C1095.12 149.606 1096.23 150.1 1097.24 150.78C1099.36 152.156 1100.92 154.27 1101.65 156.733C1102.37 159.197 1102.2 161.844 1101.17 164.19H1094.2V166.641H1102.67L1103.01 165.985C1104.57 163.047 1104.98 159.61 1104.15 156.376C1103.32 153.141 1101.32 150.352 1098.55 148.577Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_6">
<text id="IconLabel_15" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="1043.85" y="213.816">Mulesoft</tspan></text>
<text id="IconLabel_16" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="1053.2" y="229.816">(SaaS)</tspan></text>
</g>
</g>
<g id="Banking system">
<g id="Treasury">
<g id="Group">
<g id="Group_2">
<g id="Group_3">
<path id="Vector_44" d="M1046.71 313.286V306.018H1048.84V302.17H1050.97V298.464H1053.09V279.652H1050.97V275.946H1048.84V272.241H1046.71V264.972L1076.07 254.711L1105.29 264.972V272.241H1103.16V275.946H1101.04V279.652H1098.91V298.464H1101.04V302.17H1103.16V306.018H1105.29V313.286H1046.71Z" fill="white"/>
<path id="Vector_45" d="M1076.07 255.566L1104.72 265.542V271.671H1102.6V275.376H1100.47V279.082H1098.34V299.319H1100.47V303.025H1102.6V306.73H1104.72V312.573H1047.42V306.73H1049.55V303.025H1051.68V299.319H1053.8V278.939H1051.68V275.234H1049.55V271.528H1047.42V265.4L1076.07 255.566ZM1076.07 253.999L1075.65 254.141L1046.99 264.117L1046 264.402V265.4V271.528V272.953H1047.42H1048.13V275.234V276.659H1049.55H1050.26V278.939V280.364H1051.68H1052.38V297.752H1051.68H1050.26V299.177V301.457H1049.55H1048.13V302.882V305.305H1047.42H1046V306.73V312.573V313.999H1047.42H1104.58H1106V312.573V306.73V305.305H1104.58H1103.87V303.025V301.599H1102.46H1101.75V299.319V297.894H1100.33H1099.62V280.364H1100.33H1101.75V278.939V276.659H1102.46H1103.87V275.234V272.953H1104.58H1106V271.528V265.4V264.402L1105.01 264.117L1076.36 254.141L1076.07 253.999Z" fill="white"/>
</g>
<g id="Group_4">
<path id="Vector_46" d="M1076.07 255.566L1047.42 265.4V271.528H1104.58V265.4L1076.07 255.566ZM1102.46 269.39H1049.55V266.968L1076.07 257.704L1102.6 266.968V269.39H1102.46Z" fill="#2C5967"/>
<path id="Vector_47" d="M1047.42 312.573H1104.58V306.73H1047.42V312.573ZM1049.55 308.725H1102.46V310.293H1049.55V308.725Z" fill="#2C5967"/>
<path id="Vector_48" d="M1076.92 295.471V293.903H1077.35C1078.91 293.903 1080.33 292.621 1080.33 290.911C1080.33 289.343 1079.05 287.918 1077.35 287.918H1074.65C1074.23 287.918 1073.94 287.633 1073.94 287.205C1073.94 286.778 1074.37 286.35 1074.8 286.35H1079.76V284.212H1077.07V282.645H1074.94V284.212H1074.8C1073.24 284.212 1071.82 285.495 1071.82 287.205C1071.82 288.773 1073.09 290.055 1074.65 290.055H1077.35C1077.77 290.055 1078.2 290.483 1078.2 290.911C1078.2 291.338 1077.77 291.766 1077.35 291.766H1072.24V293.903H1074.94V295.471H1076.92Z" fill="#2C5967"/>
<path id="Vector_49" d="M1086.14 289.058C1086.14 283.5 1081.6 278.939 1076.07 278.939C1070.54 278.939 1066 283.5 1066 289.058C1066 294.616 1070.54 299.176 1076.07 299.176C1081.6 299.176 1086.14 294.616 1086.14 289.058ZM1068.13 289.058C1068.13 284.64 1071.68 281.077 1076.07 281.077C1080.47 281.077 1084.02 284.64 1084.02 289.058C1084.02 293.476 1080.47 297.039 1076.07 297.039C1071.68 297.039 1068.13 293.476 1068.13 289.058Z" fill="#2C5967"/>
<path id="Vector_50" d="M1053.8 280.649V297.609H1060.75V280.649H1053.8ZM1058.48 295.471H1055.93V282.645H1058.63V295.471H1058.48Z" fill="#2C5967"/>
<path id="Vector_51" d="M1062.74 276.801H1051.68V278.939H1062.74V276.801Z" fill="#2C5967"/>
<path id="Vector_52" d="M1064.87 273.096H1049.55V275.234H1064.87V273.096Z" fill="#2C5967"/>
<path id="Vector_53" d="M1062.74 299.177H1051.68V301.314H1062.74V299.177Z" fill="#2C5967"/>
<path id="Vector_54" d="M1064.87 302.882H1049.55V305.02H1064.87V302.882Z" fill="#2C5967"/>
<path id="Vector_55" d="M1091.39 280.649V297.609H1098.34V280.649H1091.39ZM1096.21 295.471H1093.52V282.645H1096.21V295.471Z" fill="#2C5967"/>
<path id="Vector_56" d="M1100.33 276.801H1089.26V278.939H1100.33V276.801Z" fill="#2C5967"/>
<path id="Vector_57" d="M1102.46 273.096H1087.14V275.234H1102.46V273.096Z" fill="#2C5967"/>
<path id="Vector_58" d="M1100.33 299.177H1089.26V301.314H1100.33V299.177Z" fill="#2C5967"/>
<path id="Vector_59" d="M1102.46 302.882H1087.14V305.02H1102.46V302.882Z" fill="#2C5967"/>
<path id="Vector_60" d="M1076.07 259.842C1074.23 259.842 1072.67 261.124 1072.24 262.835H1069.69V264.972H1072.24C1072.67 266.683 1074.23 267.965 1076.07 267.965C1077.92 267.965 1079.48 266.683 1079.9 264.972H1082.46V262.692H1079.9C1079.33 261.124 1077.92 259.842 1076.07 259.842ZM1077.92 263.832C1077.92 264.83 1077.07 265.685 1076.07 265.685C1075.08 265.685 1074.23 264.83 1074.23 263.832C1074.23 262.835 1075.08 261.98 1076.07 261.98C1077.07 261.98 1077.92 262.835 1077.92 263.832Z" fill="#2C5967"/>
</g>
</g>
</g>
</g>
<g id="Icon Text Label_7">
<text id="IconLabel_17" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="1046.24" y="331.815">Banking</tspan></text>
<text id="IconLabel_18" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="1045.71" y="347.815">Systems</tspan></text>
</g>
</g>
<g id="3rd part">
<g id="ERP">
<g id="Group 17">
<path id="Vector_61" d="M1059.51 412.142L1066.29 408.746L1059.51 405.365L1062.28 403.938H1046.27L1046.43 401.87C1046.62 399.474 1047.42 397.167 1048.76 395.17C1050.1 393.172 1051.92 391.549 1054.06 390.456C1054.52 390.22 1054.92 389.883 1055.23 389.47C1055.54 389.058 1055.76 388.58 1055.86 388.074C1056.34 385.611 1057.66 383.392 1059.6 381.796C1061.53 380.201 1063.97 379.328 1066.47 379.328C1066.81 379.307 1067.15 379.307 1067.49 379.328H1067.83C1068.28 379.333 1068.72 379.245 1069.14 379.068C1069.55 378.891 1069.92 378.63 1070.23 378.301C1071.69 376.74 1073.5 375.555 1075.52 374.846C1077.54 374.138 1079.7 373.926 1081.81 374.23C1083.93 374.534 1085.94 375.344 1087.68 376.592C1089.41 377.84 1090.82 379.488 1091.78 381.397C1092.01 381.879 1092.34 382.303 1092.76 382.636C1093.18 382.97 1093.66 383.205 1094.18 383.323C1095.7 383.655 1097.15 384.254 1098.46 385.092C1101.37 386.928 1103.48 389.8 1104.35 393.129C1105.23 396.457 1104.81 399.993 1103.18 403.025L1102.64 404.038H1089.29L1091.87 405.465L1085.09 408.789L1091.93 412.213L1075.58 420.16L1059.51 412.142Z" fill="white"/>
<path id="Vector_62" d="M1079.9 374.763C1082.24 374.754 1084.53 375.401 1086.52 376.632C1088.51 377.863 1090.12 379.628 1091.15 381.725C1091.43 382.286 1091.84 382.777 1092.33 383.162C1092.82 383.547 1093.4 383.817 1094.01 383.951C1095.45 384.277 1096.83 384.846 1098.09 385.635C1100.86 387.367 1102.86 390.088 1103.69 393.244C1104.52 396.4 1104.12 399.755 1102.57 402.626L1102.23 403.268H1086.53L1090.33 405.38L1083.48 408.732L1085.55 409.76L1090.33 412.142L1075.58 419.375L1061.11 412.142L1065.83 409.774L1067.89 408.747L1061.11 405.365L1065.29 403.297H1047.04L1047.14 401.984C1047.3 399.703 1048.04 397.501 1049.29 395.586C1050.53 393.671 1052.25 392.106 1054.28 391.042C1054.83 390.758 1055.31 390.355 1055.68 389.861C1056.06 389.367 1056.32 388.796 1056.44 388.188C1056.76 386.587 1057.45 385.085 1058.47 383.811C1059.49 382.536 1060.8 381.527 1062.29 380.869C1063.58 380.309 1064.97 380.018 1066.37 380.013H1067.32H1067.73C1068.26 380.006 1068.79 379.891 1069.28 379.676C1069.77 379.46 1070.22 379.148 1070.58 378.758C1071.77 377.485 1073.22 376.472 1074.82 375.785C1076.43 375.097 1078.15 374.749 1079.9 374.763ZM1079.9 373.337C1077.97 373.338 1076.07 373.737 1074.3 374.508C1072.54 375.278 1070.95 376.405 1069.64 377.816C1069.4 378.071 1069.11 378.274 1068.79 378.411C1068.47 378.549 1068.12 378.618 1067.77 378.615H1067.49C1067.13 378.594 1066.77 378.594 1066.42 378.615C1063.74 378.62 1061.15 379.552 1059.08 381.254C1057.01 382.955 1055.6 385.319 1055.07 387.946C1054.99 388.347 1054.82 388.724 1054.58 389.05C1054.33 389.376 1054.01 389.642 1053.65 389.829C1051.41 390.997 1049.51 392.716 1048.12 394.822C1046.73 396.929 1045.91 399.355 1045.72 401.87L1045.62 403.183L1045.5 404.723H1059.25L1057.93 405.394L1060.47 406.664L1064.75 408.775L1060.47 410.887L1057.93 412.171L1060.47 413.44L1074.93 420.674L1075.58 420.987L1076.2 420.674L1090.96 413.426L1093.54 412.156L1090.96 410.872L1086.68 408.732L1090.96 406.649L1093.41 405.451L1091.98 404.695H1103.02L1103.42 403.953L1103.77 403.311C1104.82 401.37 1105.41 399.211 1105.49 397.003C1105.57 394.796 1105.14 392.6 1104.22 390.588C1103.31 388.577 1101.94 386.806 1100.22 385.414C1098.51 384.022 1096.49 383.048 1094.34 382.567C1093.93 382.481 1093.55 382.31 1093.22 382.063C1092.89 381.817 1092.62 381.502 1092.42 381.141C1091.28 378.798 1089.49 376.824 1087.28 375.445C1085.06 374.065 1082.51 373.335 1079.9 373.337Z" fill="white"/>
<path id="Vector_63" d="M1082.78 411.114L1084.79 412.127L1075.59 416.635L1066.6 412.141L1068.57 411.143L1065.83 409.773L1061.11 412.141L1075.58 419.375L1090.33 412.141L1085.55 409.759L1082.78 411.114Z" fill="#2D5967"/>
<path id="Vector_64" d="M1075.58 412.598L1090.33 405.379L1085.55 402.982L1082.78 404.338L1084.79 405.351L1075.59 409.859L1066.6 405.365L1068.57 404.381L1065.83 403.011L1061.11 405.365L1075.58 412.598Z" fill="#2D5967"/>
<path id="Vector_65" d="M1090.33 398.602L1075.7 391.298L1061.11 398.588L1075.58 405.821L1090.33 398.602ZM1075.7 394.037L1084.79 398.574L1075.59 403.082L1066.6 398.588L1075.7 394.037Z" fill="#2D5967"/>
<path id="Vector_66" d="M1082.78 404.338L1084.79 405.351L1075.59 409.859L1066.6 405.365L1068.57 404.381L1065.83 403.011L1061.11 405.365L1075.58 412.598L1090.33 405.379L1085.55 402.982L1082.78 404.338Z" fill="#2D5967"/>
<path id="Vector_67" d="M1082.78 411.114L1084.79 412.127L1075.59 416.635L1066.6 412.141L1068.57 411.143L1065.83 409.773L1061.11 412.141L1075.58 419.375L1090.33 412.141L1085.55 409.759L1082.78 411.114Z" fill="#2D5967"/>
<path id="Vector_68" d="M1098.1 385.634C1096.84 384.844 1095.46 384.275 1094.01 383.95C1093.4 383.816 1092.82 383.546 1092.33 383.161C1091.83 382.776 1091.43 382.285 1091.15 381.725C1090.12 379.627 1088.51 377.862 1086.52 376.631C1084.53 375.4 1082.24 374.753 1079.9 374.763C1078.17 374.766 1076.46 375.125 1074.87 375.817C1073.29 376.509 1071.86 377.52 1070.68 378.786C1070.26 379.234 1069.74 379.578 1069.16 379.791C1068.59 380.004 1067.97 380.08 1067.36 380.013C1065.64 379.859 1063.91 380.139 1062.33 380.826C1060.84 381.484 1059.53 382.493 1058.51 383.767C1057.49 385.042 1056.8 386.544 1056.49 388.145C1056.36 388.752 1056.1 389.324 1055.73 389.817C1055.35 390.311 1054.87 390.715 1054.32 390.998C1052.29 392.063 1050.58 393.627 1049.33 395.542C1048.08 397.457 1047.34 399.66 1047.18 401.941L1047.04 403.296H1059.05V400.814H1049.78C1050.1 399.197 1050.78 397.673 1051.77 396.354C1052.75 395.035 1054.03 393.956 1055.49 393.195C1056.37 392.74 1057.13 392.091 1057.72 391.298C1058.32 390.505 1058.72 389.588 1058.91 388.616C1059.15 387.404 1059.68 386.267 1060.45 385.303C1061.22 384.339 1062.22 383.577 1063.35 383.08C1064.54 382.554 1065.85 382.339 1067.14 382.452C1068.12 382.555 1069.12 382.43 1070.04 382.086C1070.97 381.742 1071.8 381.189 1072.48 380.469C1073.43 379.45 1074.58 378.636 1075.85 378.079C1077.13 377.522 1078.5 377.233 1079.9 377.231C1081.78 377.216 1083.63 377.733 1085.23 378.723C1086.83 379.712 1088.11 381.134 1088.94 382.823C1089.39 383.714 1090.03 384.494 1090.82 385.106C1091.61 385.718 1092.52 386.147 1093.49 386.361C1094.67 386.639 1095.78 387.122 1096.79 387.788C1098.91 389.133 1100.48 391.2 1101.21 393.608C1101.93 396.017 1101.76 398.606 1100.73 400.899H1092.17V403.296H1102.24L1102.58 402.654C1104.14 399.78 1104.55 396.419 1103.72 393.256C1102.88 390.093 1100.88 387.367 1098.1 385.634Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_8">
<text id="IconLabel_19" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="1042.7" y="438.816">3rd Party</tspan></text>
<text id="IconLabel_20" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="1051.95" y="454.816">clouds</tspan></text>
</g>
</g>
<g id="azure">
<g id="Technology - Self Repairing">
<g id="Group 188">
<path id="Vector_69" d="M1075.5 523.404C1069.3 523.381 1063.34 521.023 1058.81 516.8C1054.28 512.577 1051.5 506.801 1051.05 500.626L1048.77 502.907L1046.37 500.518L1051.24 495.645C1051.49 493.803 1051.94 491.995 1052.6 490.258L1052.81 489.684C1054.31 485.976 1056.7 482.693 1059.77 480.125C1062.85 477.557 1066.5 475.782 1070.42 474.957L1070.79 474.885C1071.41 474.778 1071.99 474.682 1072.66 474.611L1073.19 474.551C1074.05 474.467 1074.77 474.431 1075.47 474.431C1081.67 474.451 1087.63 476.808 1092.17 481.031C1096.7 485.254 1099.47 491.032 1099.93 497.209L1102.21 494.928L1104.6 497.317L1099.74 502.19C1099.49 504.039 1099.03 505.854 1098.38 507.601L1098.18 508.151C1096.68 511.861 1094.29 515.144 1091.21 517.712C1088.14 520.281 1084.48 522.055 1080.56 522.878L1080.18 522.95C1079.57 523.057 1078.98 523.153 1078.32 523.224H1077.79C1076.94 523.308 1076.2 523.344 1075.51 523.344L1075.5 523.404Z" fill="white"/>
<path id="Vector_70" d="M1075.47 475.028C1081.75 475.028 1087.79 477.5 1092.26 481.911C1096.74 486.321 1099.29 492.315 1099.38 498.595L1102.2 495.776L1103.77 497.341L1099.19 501.927C1098.93 503.978 1098.41 505.987 1097.62 507.9C1096.15 511.517 1093.81 514.716 1090.81 517.216C1087.8 519.715 1084.23 521.438 1080.4 522.233H1080.03C1079.44 522.352 1078.84 522.448 1078.22 522.52H1077.69C1076.96 522.579 1076.22 522.627 1075.48 522.627C1069.19 522.628 1063.16 520.155 1058.68 515.745C1054.21 511.334 1051.65 505.34 1051.56 499.061L1048.77 502.059L1047.19 500.494L1051.79 495.907C1052.05 493.856 1052.57 491.848 1053.36 489.935C1054.82 486.303 1057.17 483.088 1060.18 480.577C1063.19 478.067 1066.77 476.337 1070.61 475.542L1070.97 475.482C1071.57 475.363 1072.17 475.267 1072.79 475.196H1073.31C1073.98 475.028 1074.72 475.028 1075.47 475.028ZM1075.47 473.834C1074.76 473.834 1074.02 473.834 1073.15 473.953H1072.73H1072.6C1071.95 474.025 1071.3 474.121 1070.68 474.24L1070.61 474.324H1070.36C1066.33 475.163 1062.56 476.98 1059.4 479.615C1056.24 482.25 1053.77 485.622 1052.22 489.433L1051.77 490.556C1051.21 492.106 1050.81 493.706 1050.57 495.334L1046.27 499.634L1045.5 500.494L1046.35 501.306L1047.89 502.907L1048.74 503.755L1049.59 502.907L1050.55 501.939C1051.31 508.016 1054.26 513.607 1058.85 517.667C1063.45 521.727 1069.36 523.979 1075.49 524.001C1076.19 524.001 1076.92 524.001 1077.79 523.881H1078.2H1078.35C1078.98 523.81 1079.63 523.714 1080.25 523.595H1080.38H1080.63C1084.67 522.745 1088.44 520.915 1091.6 518.265C1094.76 515.615 1097.22 512.227 1098.76 508.401L1099.21 507.29H1099.15C1099.71 505.741 1100.11 504.141 1100.35 502.513L1104.65 498.213L1105.5 497.365L1104.63 496.528L1103.06 494.964L1102.21 494.14L1101.36 494.988L1100.4 495.955C1099.65 489.871 1096.71 484.268 1092.12 480.196C1087.54 476.123 1081.62 473.861 1075.49 473.834V473.834H1075.47Z" fill="white"/>
<path id="Vector_71" d="M1075.51 506.418C1077 506.418 1078.45 505.978 1079.69 505.154C1080.92 504.33 1081.88 503.158 1082.45 501.788C1083.02 500.417 1083.17 498.909 1082.88 497.454C1082.59 495.999 1081.87 494.662 1080.82 493.613C1079.77 492.564 1078.44 491.85 1076.98 491.56C1075.52 491.271 1074.01 491.419 1072.64 491.987C1071.27 492.555 1070.1 493.516 1069.27 494.75C1068.44 495.983 1068 497.434 1068 498.917C1068 499.902 1068.2 500.878 1068.58 501.788C1068.95 502.698 1069.51 503.525 1070.2 504.221C1071.61 505.628 1073.52 506.418 1075.51 506.418ZM1075.51 493.638C1076.56 493.638 1077.58 493.947 1078.45 494.528C1079.32 495.108 1080 495.932 1080.4 496.897C1080.8 497.862 1080.9 498.923 1080.7 499.947C1080.49 500.971 1079.99 501.912 1079.25 502.65C1078.51 503.389 1077.57 503.892 1076.54 504.095C1075.52 504.299 1074.46 504.194 1073.49 503.795C1072.53 503.395 1071.7 502.719 1071.12 501.85C1070.54 500.982 1070.23 499.961 1070.23 498.917C1070.23 497.517 1070.79 496.174 1071.78 495.184C1072.77 494.194 1074.11 493.638 1075.51 493.638ZM1095.59 507.111L1097.66 507.947C1095.58 513.053 1091.79 517.282 1086.94 519.917C1082.09 522.552 1076.48 523.431 1071.06 522.404C1065.64 521.378 1060.74 518.509 1057.19 514.285C1053.64 510.06 1051.67 504.741 1051.6 499.228L1048.77 502.059L1047.19 500.494L1052.68 495.011L1058.32 500.327L1056.81 501.951L1053.87 499.132C1053.92 504.134 1055.7 508.965 1058.92 512.804C1062.13 516.643 1066.57 519.254 1071.49 520.193C1076.4 521.133 1081.5 520.343 1085.9 517.959C1090.3 515.574 1093.74 511.742 1095.64 507.111H1095.59ZM1103.83 497.341L1098.34 502.823L1092.7 497.508L1094.21 495.883L1097.2 498.702C1097.19 493.674 1095.42 488.808 1092.2 484.939C1088.99 481.07 1084.53 478.438 1079.58 477.495C1074.64 476.552 1069.52 477.356 1065.1 479.769C1060.69 482.183 1057.25 486.055 1055.38 490.723L1053.32 489.887C1055.4 484.781 1059.19 480.552 1064.04 477.917C1068.89 475.282 1074.5 474.404 1079.92 475.43C1085.34 476.457 1090.24 479.326 1093.79 483.55C1097.34 487.774 1099.31 493.094 1099.38 498.607L1102.21 495.776L1103.83 497.341ZM1060.54 495.704V502.13L1064.13 502.536C1064.33 503.184 1064.59 503.812 1064.91 504.412L1062.61 507.278L1067.17 511.817L1070.01 509.548C1070.62 509.86 1071.24 510.12 1071.89 510.324L1072.29 513.908H1078.73L1079.12 510.324C1079.77 510.12 1080.4 509.86 1081 509.548L1083.85 511.817L1088.4 507.278L1086.16 504.412C1086.46 503.797 1086.7 503.157 1086.9 502.501L1090.48 502.094V495.704L1086.9 495.298C1086.7 494.653 1086.45 494.026 1086.16 493.423L1088.4 490.556L1083.85 486.017L1081 488.287C1080.4 487.974 1079.77 487.714 1079.12 487.51L1078.73 483.927H1072.29L1071.89 487.51C1071.24 487.714 1070.62 487.974 1070.01 488.287L1067.17 486.017L1062.61 490.556L1064.9 493.399C1064.58 494.018 1064.32 494.666 1064.12 495.334L1060.54 495.704ZM1065.64 490.747L1067.38 489.015L1069.86 490.998L1070.53 490.592C1071.37 490.093 1072.27 489.718 1073.22 489.481L1073.97 489.29L1074.33 486.137H1076.78L1077.14 489.29L1077.89 489.481C1078.82 489.711 1079.71 490.073 1080.54 490.556L1081.21 490.962L1083.68 488.979L1085.43 490.711L1083.43 493.196L1083.84 493.853C1084.35 494.701 1084.73 495.624 1084.96 496.588L1085.14 497.341L1088.3 497.687V500.112L1085.14 500.458L1084.96 501.306C1084.73 502.258 1084.35 503.169 1083.84 504.006L1083.43 504.663L1085.43 507.147L1083.68 508.879L1081.21 506.896L1080.54 507.278C1079.7 507.778 1078.79 508.152 1077.85 508.389L1077.09 508.58L1076.73 511.734H1074.28L1073.92 508.58L1073.17 508.389C1072.22 508.152 1071.32 507.778 1070.48 507.278L1069.81 506.872L1067.33 508.855L1065.59 507.087L1067.59 504.603L1067.18 503.946C1066.68 503.125 1066.3 502.236 1066.06 501.306L1065.83 500.494L1062.72 500.112V497.723L1065.83 497.341L1066.01 496.588C1066.25 495.638 1066.63 494.728 1067.13 493.889L1067.54 493.232L1065.64 490.747Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_9">
<text id="IconLabel_21" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="1054.53" y="541.816">Azure</tspan></text>
<text id="IconLabel_22" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="1047.35" y="557.816">AD SSO</tspan></text>
</g>
</g>
<g id="ADTP">
<g id="Autonomous-Transaction-Processing-ATP">
<g id="ATP-D">
<g id="Group 838">
<path id="Vector_72" d="M792.42 462.142L793.5 461.062L792.42 459.982L790.985 458.615L789.905 457.548L788.838 458.615L788.114 459.339C787.416 455.809 785.966 452.471 783.862 449.551L783.37 448.868L786.583 445.518L787.663 444.452L786.583 443.372L785.216 442.005L784.081 440.843L783.138 441.786C782.456 439.937 781.287 438.306 779.754 437.067C778.221 435.827 776.382 435.025 774.431 434.745C772.48 434.464 770.489 434.717 768.67 435.475C766.85 436.233 765.269 437.469 764.095 439.052H763.124C757.593 439.131 752.248 441.056 747.936 444.52L747.635 444.753C746.634 444.088 745.502 443.644 744.315 443.45C743.128 443.256 741.914 443.317 740.753 443.628C739.591 443.94 738.509 444.495 737.579 445.256C736.649 446.018 735.891 446.969 735.356 448.046C734.822 449.123 734.522 450.302 734.478 451.503C734.434 452.705 734.646 453.902 735.1 455.016C735.554 456.129 736.24 457.133 737.112 457.961C737.984 458.789 739.022 459.422 740.158 459.818L739.857 460.118L734.58 465.395L733.5 466.475L734.58 467.542L736.015 468.977L737.082 470.057L738.162 468.977L738.681 468.471C738.681 468.581 738.681 468.704 738.681 468.813L739.05 470.289C739.05 470.412 739.05 470.522 739.146 470.631V470.781V470.918C739.171 471.038 739.203 471.157 739.242 471.274L739.447 471.902V472.012C739.447 472.094 739.447 472.176 739.447 472.258L739.952 473.693C740.048 473.926 740.144 474.158 740.253 474.377L740.513 474.978L740.718 475.347L740.896 475.73L741.21 476.318C741.93 477.586 742.753 478.793 743.671 479.927L744.095 480.433L744.395 480.747L744.655 481.075L745.12 481.554C746.135 482.604 747.242 483.56 748.428 484.411L748.961 484.807L749.33 485.04L749.672 485.286L750.246 485.628C751.5 486.38 752.818 487.02 754.184 487.542L754.799 487.774L755.195 487.883L755.605 488.034L756.248 488.211C756.931 488.403 757.615 488.581 758.353 488.717C759.091 488.854 759.802 488.963 760.527 489.032H761.183H761.607H762.044H763.138C764.451 489.035 765.763 488.934 767.061 488.731L767.717 488.622L768.127 488.512L768.551 488.444L769.194 488.293C770.598 487.959 771.971 487.502 773.295 486.926L773.896 486.653L774.266 486.448L774.662 486.27L775.25 485.956C776.414 485.307 777.525 484.567 778.572 483.741L778.941 483.44C780.192 484.147 781.605 484.519 783.042 484.52C785.02 484.504 786.93 483.797 788.441 482.521C789.953 481.245 790.97 479.48 791.317 477.533C791.665 475.586 791.32 473.578 790.343 471.858C789.366 470.139 787.818 468.815 785.968 468.116L786.774 467.323L792.42 462.142Z" fill="white"/>
<path id="Vector_73" d="M772.885 455.621C770.202 455.621 767.628 454.558 765.727 452.664C763.825 450.771 762.752 448.202 762.741 445.518V443.851H766.309V445.518C766.317 446.985 766.812 448.408 767.718 449.561C768.624 450.715 769.888 451.535 771.311 451.89C772.733 452.246 774.234 452.118 775.576 451.526C776.918 450.934 778.025 449.912 778.722 448.622L779.2 447.719L781.839 450.358L781.511 450.877C780.588 452.33 779.314 453.526 777.806 454.355C776.298 455.185 774.606 455.62 772.885 455.621Z" fill="#2C5967"/>
<path id="Vector_74" d="M768.756 451.575H765.749C766.436 452.386 767.26 453.07 768.182 453.598H769.331V454.172C769.988 454.434 770.67 454.626 771.367 454.747V452.682C770.435 452.482 769.549 452.106 768.756 451.575Z" fill="#2C5967"/>
<path id="Vector_75" d="M781.921 449.36L780.431 447.884L779.064 446.434L778.025 448.253C777.401 449.374 776.424 450.259 775.246 450.769C774.068 451.28 772.755 451.387 771.509 451.076C770.264 450.765 769.156 450.051 768.357 449.047C767.557 448.042 767.112 446.802 767.089 445.519V443.099H761.976V445.519C761.979 447.686 762.626 449.803 763.835 451.602C764.345 452.344 764.942 453.024 765.612 453.625C766.69 454.602 767.955 455.351 769.331 455.826C769.993 456.048 770.675 456.208 771.367 456.305C773.458 456.603 775.59 456.286 777.503 455.393C779.416 454.499 781.027 453.068 782.14 451.274L782.769 450.249L781.921 449.36ZM772.885 454.828C772.377 454.829 771.869 454.788 771.367 454.705C770.67 454.585 769.988 454.392 769.331 454.131C768.935 453.967 768.551 453.775 768.182 453.557C767.26 453.029 766.436 452.344 765.749 451.534C764.308 449.859 763.509 447.727 763.493 445.519V444.616H765.53V445.519C765.533 446.718 765.828 447.899 766.391 448.959C766.953 450.019 767.765 450.926 768.756 451.602C769.549 452.133 770.435 452.509 771.367 452.709C771.867 452.808 772.375 452.858 772.885 452.86C774.213 452.857 775.516 452.497 776.657 451.816C777.797 451.135 778.733 450.159 779.365 448.991L780.841 450.467C779.996 451.815 778.823 452.925 777.431 453.695C776.04 454.465 774.475 454.869 772.885 454.869V454.828Z" fill="white"/>
<path id="Vector_76" d="M779.365 448.964C778.591 450.405 777.359 451.547 775.864 452.209C774.368 452.872 772.695 453.017 771.108 452.622C769.52 452.226 768.11 451.313 767.1 450.027C766.09 448.741 765.538 447.154 765.53 445.519V444.152H763.493V445.519C763.498 447.556 764.166 449.536 765.396 451.16C766.626 452.784 768.352 453.964 770.312 454.52C772.272 455.076 774.359 454.978 776.259 454.242C778.159 453.506 779.767 452.172 780.841 450.44L779.365 448.964Z" fill="#2F2925"/>
<path id="Vector_77" d="M767.84 455.375H759.214V457.398H767.84V455.375Z" fill="#2C5967"/>
<path id="Vector_78" d="M767.84 459.176H759.214V461.199H767.84V459.176Z" fill="#2C5967"/>
<path id="Vector_79" d="M767.84 462.976H759.214V464.999H767.84V462.976Z" fill="#2C5967"/>
<path id="Vector_80" d="M767.581 467.378H765.434L763.616 470.509L761.743 467.378H759.501L762.167 471.753L759.365 476.455H761.511L763.466 473.024L765.489 476.455H767.717L764.915 471.78L767.581 467.378Z" fill="#2C5967"/>
<path id="Vector_81" d="M763.056 485.696V487.72H763.466C764.702 487.72 765.936 487.624 767.157 487.432L766.829 485.423C765.582 485.626 764.319 485.718 763.056 485.696Z" fill="#2C5967"/>
<path id="Vector_82" d="M751.272 484.384C752.451 485.082 753.685 485.681 754.963 486.175L755.687 484.275C754.519 483.827 753.389 483.283 752.311 482.648L751.272 484.384Z" fill="#2C5967"/>
<path id="Vector_83" d="M757.492 484.862L756.945 486.817C757.601 486.995 758.312 487.159 758.941 487.295C759.57 487.432 760.308 487.528 760.964 487.596L761.183 485.573C760.568 485.573 759.939 485.423 759.323 485.3C758.708 485.176 758.107 485.04 757.492 484.862Z" fill="#2C5967"/>
<path id="Vector_84" d="M746.487 480.57C747.438 481.572 748.476 482.487 749.59 483.304L750.78 481.664C749.76 480.93 748.809 480.106 747.936 479.203L746.487 480.57Z" fill="#2C5967"/>
<path id="Vector_85" d="M768.633 485.054L769.125 487.022C770.454 486.67 771.752 486.213 773.008 485.655L772.174 483.796C771.032 484.317 769.848 484.738 768.633 485.054Z" fill="#2C5967"/>
<path id="Vector_86" d="M744.587 474.651L742.823 475.594C743.483 476.809 744.252 477.962 745.12 479.039L746.692 477.754C745.907 476.779 745.203 475.741 744.587 474.651Z" fill="#2C5967"/>
<path id="Vector_87" d="M742.933 470.877C742.864 470.672 742.796 470.467 742.741 470.262L742.618 469.852C742.183 468.264 741.931 466.631 741.866 464.985L744.778 467.911L746.214 466.476L740.937 461.185L735.646 466.476L737.082 467.911L739.816 465.177C739.884 466.791 740.118 468.395 740.513 469.962L740.636 470.426C740.636 470.577 740.718 470.727 740.773 470.877C740.829 471.095 740.897 471.31 740.978 471.52C741.008 471.636 741.045 471.75 741.087 471.862C741.315 472.527 741.575 473.183 741.866 473.83L743.712 472.996C743.439 472.286 743.165 471.588 742.933 470.877Z" fill="#2C5967"/>
<path id="Vector_88" d="M743.069 458.82C744.445 458.82 745.791 458.412 746.935 457.647C748.079 456.882 748.971 455.796 749.498 454.524C750.025 453.253 750.162 451.854 749.894 450.504C749.625 449.154 748.963 447.914 747.99 446.941C747.016 445.968 745.777 445.305 744.427 445.037C743.077 444.768 741.678 444.906 740.406 445.433C739.135 445.959 738.048 446.851 737.284 447.996C736.519 449.14 736.111 450.485 736.111 451.861C736.111 453.707 736.844 455.477 738.149 456.782C739.454 458.087 741.224 458.82 743.069 458.82ZM743.069 446.885C744.045 446.885 744.999 447.175 745.811 447.717C746.623 448.259 747.255 449.03 747.629 449.932C748.002 450.834 748.1 451.826 747.91 452.783C747.719 453.74 747.249 454.62 746.559 455.31C745.869 456 744.989 456.47 744.032 456.661C743.075 456.851 742.082 456.753 741.181 456.38C740.279 456.006 739.508 455.374 738.966 454.562C738.424 453.751 738.134 452.796 738.134 451.82C738.134 450.512 738.654 449.256 739.58 448.331C740.505 447.405 741.76 446.885 743.069 446.885Z" fill="#2C5967"/>
<path id="Vector_89" d="M750.192 447.213C753.674 444.462 757.926 442.861 762.358 442.634C762.551 441.92 762.817 441.229 763.151 440.57C757.963 440.643 752.945 442.431 748.879 445.655C749.378 446.12 749.819 446.643 750.192 447.213Z" fill="#2C5967"/>
<path id="Vector_90" d="M782.618 450.371C782.29 451.029 781.896 451.652 781.442 452.231C783.462 455.262 784.681 458.757 784.983 462.388L782.249 459.654L780.882 461.089L786.159 466.366L791.436 461.089L790 459.654L787.116 462.552C786.789 458.15 785.231 453.929 782.618 450.371Z" fill="#2C5967"/>
<path id="Vector_91" d="M783.411 469.223C782.035 469.223 780.69 469.631 779.545 470.396C778.401 471.16 777.509 472.247 776.982 473.519C776.456 474.79 776.318 476.189 776.586 477.539C776.855 478.889 777.518 480.129 778.491 481.102C779.464 482.075 780.704 482.738 782.054 483.006C783.403 483.275 784.802 483.137 786.074 482.61C787.345 482.083 788.432 481.192 789.197 480.047C789.961 478.903 790.369 477.558 790.369 476.181C790.369 474.336 789.636 472.566 788.331 471.261C787.026 469.956 785.257 469.223 783.411 469.223ZM783.411 481.117C782.435 481.117 781.481 480.827 780.669 480.285C779.858 479.743 779.225 478.972 778.852 478.07C778.478 477.168 778.38 476.176 778.571 475.219C778.761 474.261 779.231 473.382 779.921 472.692C780.612 472.002 781.491 471.532 782.448 471.341C783.406 471.151 784.398 471.249 785.3 471.622C786.201 471.996 786.972 472.628 787.514 473.44C788.057 474.251 788.346 475.205 788.346 476.181C788.332 477.481 787.805 478.722 786.881 479.636C785.958 480.549 784.711 481.062 783.411 481.062V481.117Z" fill="#2C5967"/>
<path id="Vector_92" d="M746.268 451.109L744.833 449.66L742.482 451.998L741.361 450.891L739.939 452.326L742.482 454.855L746.268 451.109Z" fill="#2C5967"/>
<path id="Vector_93" d="M784.833 473.571L783.534 474.883L782.222 473.571L780.786 475.006L782.099 476.318L780.786 477.631L782.222 479.066L783.534 477.754L784.833 479.066L786.268 477.631L784.97 476.318L786.268 475.006L784.833 473.571Z" fill="#2C5967"/>
<path id="Vector_94" d="M776.576 481.185C775.71 481.852 774.796 482.456 773.842 482.989L774.826 484.753C775.925 484.148 776.973 483.453 777.957 482.675C777.435 482.239 776.971 481.738 776.576 481.185Z" fill="#2C5967"/>
<path id="Vector_95" d="M765.038 440.734L766.268 441.951L766.378 442.046C767.123 440.66 768.294 439.55 769.717 438.879C771.14 438.207 772.741 438.01 774.285 438.316C775.829 438.622 777.233 439.415 778.293 440.579C779.352 441.742 780.011 443.215 780.171 444.78L778.408 442.99L777.041 444.357L781.306 448.622L785.571 444.357L784.204 442.99L782.235 444.835C782.091 442.865 781.329 440.99 780.056 439.478C778.783 437.967 777.066 436.896 775.148 436.419C773.231 435.941 771.212 436.082 769.379 436.82C767.546 437.558 765.994 438.856 764.942 440.529L765.106 440.693L765.038 440.734Z" fill="#2C5967"/>
<path id="Vector_96" d="M773.896 440.05H771.901L769.043 449.866V449.948H771.149L771.613 447.897H774.047L774.525 449.948H776.685V449.866L773.896 440.05ZM772.871 442.511L773.678 446.093H772.037L772.871 442.511Z" fill="#2C5967"/>
<path id="Vector_97" d="M760.281 446.585L761.716 447.952L763.726 445.942C763.833 447.9 764.562 449.773 765.807 451.288C767.052 452.803 768.747 453.881 770.647 454.366C772.547 454.851 774.552 454.717 776.371 453.984C778.189 453.251 779.727 451.957 780.759 450.29L779.529 449.073C778.761 450.515 777.546 451.669 776.065 452.36C774.585 453.051 772.92 453.242 771.321 452.904C769.723 452.567 768.277 451.718 767.203 450.487C766.129 449.256 765.484 447.709 765.366 446.079L767.348 448.048L768.715 446.68L764.519 442.279L760.24 446.544L760.281 446.585Z" fill="#2C5967"/>
<path id="Vector_98" d="M769.33 478.697H757.71V453.598H765.612C764.941 452.997 764.345 452.317 763.835 451.575H755.633V480.734H771.367V456.278C770.675 456.181 769.993 456.021 769.33 455.799V478.697Z" fill="#2C5967"/>
</g>
</g>
<g id="Icon Text Label_10">
<text id="IconLabel_23" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="716.453" y="509.617">Autonomous</tspan></text>
<text id="IconLabel_24" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="721.109" y="525.617">Transaction</tspan></text>
<text id="IconLabel_25" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="724.203" y="541.617">Processing</tspan></text>
<text id="IconLabel_26" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="729.742" y="557.617">Database</tspan></text>
</g>
</g>
</g>
<g id="connectors">
<path id="Vector 86" d="M327.507 463.707C327.898 463.317 327.898 462.683 327.507 462.293L321.143 455.929C320.753 455.538 320.119 455.538 319.729 455.929C319.338 456.319 319.338 456.953 319.729 457.343L325.386 463L319.729 468.657C319.338 469.047 319.338 469.681 319.729 470.071C320.119 470.462 320.753 470.462 321.143 470.071L327.507 463.707ZM151 464H326.8V462H151V464Z" fill="#312D2A"/>
<path id="Vector 88" d="M687.907 463.707C688.298 463.317 688.298 462.683 687.907 462.293L681.543 455.929C681.153 455.538 680.519 455.538 680.129 455.929C679.738 456.319 679.738 456.953 680.129 457.343L685.786 463L680.129 468.657C679.738 469.047 679.738 469.681 680.129 470.071C680.519 470.462 681.153 470.462 681.543 470.071L687.907 463.707ZM479 464H687.2V462H479V464Z" fill="#312D2A"/>
<path id="Vector 89" d="M999.707 327.707C1000.1 327.317 1000.1 326.683 999.707 326.293L993.343 319.929C992.953 319.538 992.319 319.538 991.929 319.929C991.538 320.319 991.538 320.953 991.929 321.343L997.586 327L991.929 332.657C991.538 333.047 991.538 333.681 991.929 334.071C992.319 334.462 992.953 334.462 993.343 334.071L999.707 327.707ZM840 328L999 328L999 326L840 326L840 328Z" fill="#312D2A"/>
<path id="Vector 87" d="M327.507 175.707C327.898 175.317 327.898 174.683 327.507 174.293L321.143 167.929C320.753 167.538 320.119 167.538 319.729 167.929C319.338 168.319 319.338 168.953 319.729 169.343L325.386 175L319.729 180.657C319.338 181.047 319.338 181.681 319.729 182.071C320.119 182.462 320.753 182.462 321.143 182.071L327.507 175.707ZM151 176H326.8V174H151V176Z" fill="#312D2A"/>
<path id="Vector 90" d="M405 8V7H404V8H405ZM1076 8H1077V7H1076V8ZM1075.29 72.7071C1075.68 73.0976 1076.32 73.0976 1076.71 72.7071L1083.07 66.3431C1083.46 65.9526 1083.46 65.3195 1083.07 64.9289C1082.68 64.5384 1082.05 64.5384 1081.66 64.9289L1076 70.5858L1070.34 64.9289C1069.95 64.5384 1069.32 64.5384 1068.93 64.9289C1068.54 65.3195 1068.54 65.9526 1068.93 66.3431L1075.29 72.7071ZM406 72V8H404V72H406ZM405 9H1076V7H405V9ZM1075 8V72H1077V8H1075Z" fill="black"/>
</g>
<g id="Labels">
<g id="Group 753">
<g id="Connector Line Label">
<rect width="55" height="14" transform="translate(216 168)" fill="white"/>
<text id="Line Label" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="220.101" y="180.089">Phase 1</tspan></text>
</g>
<g id="Connector Line Label_2">
<rect width="57" height="14" transform="translate(215 184)" fill="white"/>
<text id="Line Label_2" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="219.232" y="196.089">Migrate</tspan></text>
</g>
<g id="Connector Line Label_3">
<rect width="96" height="14" transform="translate(195 199.8)" fill="white"/>
<text id="Line Label_3" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="199.421" y="211.889">Web/App Tier</tspan></text>
</g>
</g>
<g id="Group 752">
<g id="Connector Line Label_4">
<rect width="55" height="14" transform="translate(215 456)" fill="white"/>
<text id="Line Label_4" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="219.101" y="468.089">Phase 1</tspan></text>
</g>
<g id="Connector Line Label_5">
<rect width="95" height="14" transform="translate(195 472)" fill="white"/>
<text id="Line Label_5" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="199.112" y="484.089">Migrate DB to</tspan></text>
</g>
<g id="Connector Line Label_6">
<rect width="149" height="14" transform="translate(168 487.8)" fill="white"/>
<text id="Line Label_6" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="172.24" y="499.889">Exadata Cloud Service</tspan></text>
</g>
<g id="Connector Line Label_7">
<rect width="89" height="14" transform="translate(198 503.8)" fill="white"/>
<text id="Line Label_7" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="202.195" y="515.889">(Data Guard)</tspan></text>
</g>
</g>
<g id="Group 754">
<g id="Connector Line Label_8">
<rect width="57" height="14" transform="translate(553 456)" fill="white"/>
<text id="Line Label_8" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="557.055" y="468.089">Phase 2</tspan></text>
</g>
<g id="Connector Line Label_9">
<rect width="152" height="14" transform="translate(506 472)" fill="white"/>
<text id="Line Label_9" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="510.407" y="484.089">Migrate Exadata Cloud</tspan></text>
</g>
<g id="Connector Line Label_10">
<rect width="162" height="14" transform="translate(501 487.8)" fill="white"/>
<text id="Line Label_10" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="505.431" y="499.889">Service to ATP Database</tspan></text>
</g>
<g id="Connector Line Label_11">
<rect width="88" height="14" transform="translate(538 503.8)" fill="white"/>
<text id="Line Label_11" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="542.393" y="515.889">(Data Pump)</tspan></text>
</g>
</g>
<g id="Group 755">
<g id="Connector Line Label_12">
<rect width="55" height="14" transform="translate(555 0.30127)" fill="white"/>
<text id="Line Label_12" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="559.101" y="12.3903">Phase 1</tspan></text>
</g>
<g id="Connector Line Label_13">
<rect width="118" height="14" transform="translate(523 16.3013)" fill="white"/>
<text id="Line Label_13" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="527.312" y="28.3903">Migrate 3rd Party</tspan></text>
</g>
<g id="Connector Line Label_14">
<rect width="84" height="14" transform="translate(540 32.3013)" fill="white"/>
<text id="Line Label_14" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="544.088" y="44.3903">Integrations</tspan></text>
</g>
</g>
</g>
</g>
<defs>
<clipPath id="clip0_6913_243525">
<rect width="1170" height="592" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 88 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 434 KiB

View File

@@ -0,0 +1,7 @@
The diagram you downloaded is available in these formats:
- DRAWIO
- SVG
You can customize them for your organization using the associated tools:
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.

View File

@@ -0,0 +1,285 @@
# Build a CI/CD pipeline for OCI Functions deployment using GitHub Action
- Source: https://docs.oracle.com/en/solutions/cicd-pipeline-oci-functions/index.html
- Date: 2024-10
- Type: reference-architecture
- Services: functions
- Tags: devops
## Summary (catalog)
GitHub Actions workflow for OCI Functions deployment. Automated build, test, and deploy pipeline. Container image build and push to OCI Container Registry, function deployment via OCI CLI.
## Architecture (fetched from source)
Architecture
This architecture uses GitHub Actions as an external continuous integration
and deployment system to build code, containerize it, and deploy Oracle Cloud Infrastructure
Functions. Instead of GitHub Action, you can use other integrated development environment
(IDE) tools, such as GitLab, or Azure DevOps.
The following diagram illustrates this reference architecture.
Description of the illustration cicd-deploy-oci-functions.png
cicd-deploy-oci-functions-oracle.zip
The architecture includes the following external systems:
- External System (CI/CD)
The external system for
CI/CD includes the integrated development environment (IDE), the code
repository, and pipeline.
This architecture uses GitHub
Actions as an external continuous integration and deployment code repository
system. It is used to build code and then containerize it using Docker. When the
containerized image is ready, GitHub Actions pushes the image to an OCI Registry . After completing the transfer to the registry, it kicks off the OCI
Functions deployment. You can use other continuous integration or deployment
systems like OCI DevOps, Azure DevOps, Gitlab, or Jenkins based on your
requirements.
- External System (SIEM/ITSM/OTHER)
The external
system for SIEM and ITSM represents other third-party systems or non-OCI
services.
Aggregating and enriching OCI Audit logs, service
logs, and security events are foundational requirements to external SIEM or ITSM
systems. Centralizing this data allows organizations to analyze, monitor, and
secure their tenancies.
The architecture has the following components:
- Region
An Oracle Cloud
Infrastructure region is a localized geographic area that
contains one or more data centers, called
availability domains. Regions are independent of
other regions, and vast distances can separate
them (across countries or even
continents).
- Virtual cloud network (VCN) and subnets
A VCN is a customizable,
software-defined network that you set up in an Oracle Cloud
Infrastructure region. Like traditional data center networks,
VCNs give you control over your network
environment. A VCN can have multiple
non-overlapping CIDR blocks that you can change
after you create the VCN. You can segment a VCN
into subnets, which can be scoped to a region or
to an availability domain. Each subnet consists of
a contiguous range of addresses that don't overlap
with the other subnets in the VCN. You can change
the size of a subnet after creation. A subnet can
be public or private.
- Registry
Oracle Cloud Infrastructure
Registry is an Oracle-managed registry that enables you
to simplify your development-to-production
workflow. Registry makes it easy for you to store,
share, and manage development artifacts, like
Docker images. The highly available and scalable
architecture of Oracle Cloud
Infrastructure ensures that you can deploy and manage your
applications reliably.
- Functions
Oracle Cloud Infrastructure
Functions is a fully managed, multitenant, highly
scalable, on-demand, Functions-as-a-Service (FaaS)
platform. It is powered by the Fn Project open
source engine. Functions enable you to deploy your
code, and either call it directly or trigger it in
response to events. Oracle Functions uses Docker
containers hosted in Oracle Cloud Infrastructure
Registry .
- Service
connectors
Oracle Cloud
Infrastructure Service Connector Hub is a cloud message bus
platform that orchestrates data movement between
services in OCI. You can use service connectors to
move data from a source service to a target
service. Service connectors also enable you to
optionally specify a task (such as a function) to
perform on the data before it is delivered to the
target service.
You can
use Oracle Cloud
Infrastructure Service Connector Hub to quickly build a
logging aggregation framework for security
information and event management (SIEM) systems.
- Logging
Logging is a
highly scalable and fully managed service that
provides access to the following types of logs
from your resources in the cloud:
- Audit logs : Logs related to
events emitted by the Audit service.
- Service logs : Logs emitted
by individual services such as API Gateway,
Events, Functions, Load Balancing, Object Storage,
and VCN flow logs.
- Custom logs : Logs that
contain diagnostic information from custom
applications, other cloud providers, or an
on-premises environment.
- Streaming
Oracle Cloud
Infrastructure Streaming provides a fully managed, scalable,
and durable storage solution for ingesting
continuous, high-volume streams of data that you
can consume and process in real time. You can use
Streaming for ingesting high-volume data, such as
application logs, operational telemetry, web
click-stream data; or for other use cases where
data is produced and processed continually and
sequentially in a publish-subscribe messaging
model.
- Notifications
The Oracle Cloud Infrastructure
Notifications service broadcasts messages to distributed
components through a publish-subscribe pattern,
delivering secure, highly reliable, low latency,
and durable messages for applications hosted on
Oracle Cloud
Infrastructure .
Recommendations
Use the following recommendations as a starting point.
Your requirements might differ from the architecture described here.
- VCN
When you create a VCN, determine the number of CIDR blocks required and the size of each block based on the number of resources that you plan to attach to subnets in the VCN. Use CIDR blocks that are within the standard private IP address space.
Select CIDR blocks that don't overlap with any other network (in Oracle Cloud
Infrastructure , your on-premises data center, or another cloud provider) to which you intend to set up private connections.
After you create a VCN, you can change, add, and remove its CIDR blocks.
When you design the subnets, consider your traffic flow and security requirements. Attach all the resources within a specific tier or role to the same subnet, which can serve as a security boundary.
Use regional subnets.
- Security lists
Use security lists to define ingress and egress rules that apply to the entire subnet.
- Network security groups (NSGs)
You can use NSGs to define a set of ingress and egress rules that apply to specific VNICs. We recommend using NSGs rather than security lists, because NSGs enable you to separate the VCN's subnet architecture from the security requirements of your application.
- Cloud Guard
Apply Cloud Guard at
the tenancy level to cover the broadest scope and to reduce
the administrative burden of maintaining multiple
configurations.
You
can also use the Managed List feature to apply certain
configurations to detectors.
- Security Zones
For resources that require maximum security, Oracle recommends that you use security zones. A security zone is a compartment associated with an Oracle-defined recipe of security policies that are based on best practices. For example, the resources in a security zone must not be accessible from the public internet and they must be encrypted using customer-managed keys. When you create and update resources in a security zone, Oracle Cloud
Infrastructure validates the operations against the policies in the security-zone recipe, and denies operations that violate any of the policies.
- OCI Functions
Applications deployed through the OCI Functions service are highly available, scalable, secure, and
monitored. With OCI Functions , you can write code in Java, Python, Node, Go, Ruby, and
C# (and for advanced use cases, bring your own Dockerfile,
and Graal VM). You can then deploy your code, call it
directly or trigger it in response to events.
- OCI Registry
This architecture deploys a public D

View File

@@ -0,0 +1,674 @@
# Auto-extracted absolute_layout template from
# kb/diagram/assets/archcenter-refs/cicd-pipeline-oci-functions/cicd-deploy-oci-functions-oracle/cicd-deploy-oci-functions.drawio
# Source: Oracle Architecture Center reference (canonical geometry).
# Use this as the starting scaffold for a new spec — copy, rename ids,
# and replace `type: TODO_identify` on services with the right OCI
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
# edge waypoints are Oracle's canonical layout; preserve unless the
# customer's topology requires a change.
absolute_layout:
canvas:
width: 850
height: 1100
containers:
- id: c1
type: region
label: ''
x: 550
y: 34
w: 490
h: 515
- id: c2
type: region
label: ''
x: 10
y: 34
w: 531
h: 258
- id: c27
type: region
label: ''
x: 322
y: 124
w: 180
h: 14
- id: '261'
type: region
label: ''
x: 0
y: 0
w: 76
h: 14
- id: '264'
type: region
label: ''
x: 0
y: 0
w: 50
h: 14
- id: '267'
type: region
label: ''
x: 0
y: 0
w: 33
h: 14
- id: '258'
type: region
label: ''
x: 0
y: 0
w: 30
h: 14
services:
- id: '11'
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 39
- id: '12'
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 40
- id: '16'
type: TODO_identify
label: ''
x: 0
y: 0
w: 62
h: 55
- id: '17'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 56
- id: '29'
type: TODO_identify
label: ''
x: 0
y: 0
w: 44
h: 61
- id: '30'
type: TODO_identify
label: ''
x: 0
y: 0
w: 45
h: 63
- id: '35'
type: TODO_identify
label: ''
x: 0
y: 0
w: 57
h: 63
- id: '46'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '67'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '68'
type: TODO_identify
label: ''
x: 0
y: 0
w: 61
h: 61
- id: '69'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '82'
type: TODO_identify
label: ''
x: 0
y: 0
w: 61
h: 61
- id: '83'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '101'
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: '102'
type: TODO_identify
label: ''
x: 0
y: 0
w: 41
h: 41
- id: '103'
type: TODO_identify
label: ''
x: 0
y: 0
w: 42
h: 42
- id: '120'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '121'
type: TODO_identify
label: ''
x: 0
y: 0
w: 61
h: 62
- id: '122'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '133'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '134'
type: TODO_identify
label: ''
x: 0
y: 0
w: 62
h: 62
- id: '135'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '147'
type: TODO_identify
label: ''
x: 0
y: 0
w: 65
h: 62
- id: '148'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 60
- id: '149'
type: TODO_identify
label: ''
x: 0
y: 0
w: 65
h: 62
- id: '174'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '175'
type: TODO_identify
label: ''
x: 0
y: 0
w: 61
h: 62
- id: '176'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '206'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '210'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '211'
type: TODO_identify
label: ''
x: 0
y: 0
w: 62
h: 61
- id: '212'
type: TODO_identify
label: ''
x: 0
y: 0
w: 63
h: 63
- id: '242'
type: TODO_identify
label: ''
x: 0
y: 0
w: 55
h: 62
- id: '243'
type: TODO_identify
label: ''
x: 0
y: 0
w: 56
h: 63
- id: '13'
type: TODO_identify
label: ''
x: 1
y: 0
w: 40
h: 38
- id: '18'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 53
- id: '31'
type: TODO_identify
label: ''
x: 1
y: 1
w: 42
h: 60
- id: '47'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 60
- id: '48'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 60
- id: '70'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 60
- id: '71'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 60
- id: '84'
type: TODO_identify
label: ''
x: 1
y: 1
w: 47
h: 58
- id: '104'
type: TODO_identify
label: ''
x: 1
y: 1
w: 40
h: 40
- id: '123'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 60
- id: '124'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 60
- id: '136'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 60
- id: '150'
type: TODO_identify
label: ''
x: 1
y: 1
w: 62
h: 58
- id: '152'
type: TODO_identify
label: ''
x: 1
y: 1
w: 55
h: 55
- id: '177'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 60
- id: '200'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 60
- id: '213'
type: TODO_identify
label: ''
x: 1
y: 1
w: 60
h: 60
- id: '244'
type: TODO_identify
label: ''
x: 1
y: 1
w: 53
h: 61
- id: '34'
type: TODO_identify
label: ''
x: 2
y: 1
w: 53
h: 59
- id: '19'
type: TODO_identify
label: ''
x: 14
y: 7
w: 34
h: 34
- id: '88'
type: TODO_identify
label: ''
x: 8
y: 8
w: 32
h: 25
- id: '168'
type: TODO_identify
label: ''
x: 22
y: 9
w: 40
h: 38
- id: '49'
type: TODO_identify
label: ''
x: 11
y: 12
w: 38
h: 38
- id: '171'
type: TODO_identify
label: ''
x: 28
y: 13
w: 30
h: 30
- id: '105'
type: TODO_identify
label: ''
x: 1
y: 14
w: 29
h: 26
- id: '137'
type: TODO_identify
label: ''
x: 9
y: 17
w: 43
h: 28
- id: '227'
type: TODO_identify
label: ''
x: 1
y: 18
w: 60
h: 42
- id: '36'
type: TODO_identify
label: ''
x: 4
y: 21
w: 47
h: 37
- id: '92'
type: TODO_identify
label: ''
x: 34
y: 34
w: 27
h: 27
- id: s6
type: TODO_identify
label: ''
x: 43
y: 67
w: 45
h: 63
- id: s4
type: TODO_identify
label: ''
x: 866
y: 77
w: 42
h: 40
- id: s3
type: TODO_identify
label: ''
x: 736
y: 94
w: 182
h: 187
- id: s16
type: TODO_identify
label: ''
x: 857
y: 122
w: 42
h: 42
- id: s15
type: TODO_identify
label: ''
x: 746
y: 144
w: 161
h: 127
- id: s7
type: TODO_identify
label: ''
x: 38
y: 177
w: 57
h: 63
- id: s9
type: TODO_identify
label: ''
x: 215
y: 177
w: 63
h: 63
- id: s11
type: TODO_identify
label: ''
x: 320
y: 177
w: 63
h: 63
- id: s13
type: TODO_identify
label: ''
x: 445
y: 177
w: 63
h: 63
- id: s18
type: TODO_identify
label: ''
x: 582
y: 177
w: 63
h: 63
- id: s17
type: TODO_identify
label: ''
x: 795
y: 177
w: 63
h: 63
- id: s8
type: TODO_identify
label: ''
x: 27
y: 244
w: 169
h: 37
- id: s10
type: TODO_identify
label: ''
x: 222
y: 244
w: 101
h: 37
- id: s12
type: TODO_identify
label: ''
x: 305
y: 244
w: 203
h: 37
- id: s14
type: TODO_identify
label: ''
x: 424
y: 244
w: 203
h: 37
- id: s19
type: TODO_identify
label: ''
x: 560
y: 244
w: 220
h: 37
- id: s23
type: TODO_identify
label: ''
x: 799
y: 324
w: 56
h: 63
- id: s5
type: TODO_identify
label: ''
x: 1099
y: 331
w: 63
h: 56
- id: s25
type: TODO_identify
label: ''
x: 693
y: 354
w: 110
h: 95
- id: s26
type: TODO_identify
label: ''
x: 849
y: 354
w: 125
h: 95
- id: s24
type: TODO_identify
label: ''
x: 769
y: 392
w: 220
h: 37
- id: s21
type: TODO_identify
label: ''
x: 795
y: 451
w: 63
h: 63
- id: s20
type: TODO_identify
label: ''
x: 672
y: 452
w: 65
h: 62
- id: s22
type: TODO_identify
label: ''
x: 935
y: 452
w: 63
h: 63
labels: []
connections: []

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 112 KiB

View File

@@ -0,0 +1,7 @@
The diagram you downloaded is available in these formats:
- DRAWIO
- SVG
You can customize them for your organization using the associated tools:
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.

View File

@@ -0,0 +1,214 @@
# Deploy a secure landing zone that meets the CIS OCI Foundations Benchmark
- Source: https://docs.oracle.com/en/solutions/cis-oci-benchmark/index.html
- Date: 2025-02
- Type: reference-architecture
- Services: cloud-guard, vault, vcn, bastion
- Tags: security
## Summary (catalog)
CIS-compliant OCI landing zone with compartment-based organization, segregation of duties through IAM groups/policies. Supports standalone, hub-spoke, and DMZ VCN patterns. Zero Trust Packet Routing enabled.
## Architecture (fetched from source)
Architecture
The architecture starts with the compartment
design for the tenancy, along with groups and policies for the segregation of duties.
In OCI Core Landing Zone, provisioning of landing zone compartments within a
designated parent compartment is supported. Each of the landing zone compartments is
assigned a group with the appropriate permissions for managing resources in the compartment
and for accessing required resources in other compartments.
OCI Core Landing Zone has the ability to provision multiple VCNs, either in
standalone mode or as constituent parts of a hub-and-spoke architecture, or connected
through a DMZ VCN. The VCNs can either follow a general-purpose, three-tier network
topology or be oriented toward specific topologies for supporting OCI Kubernetes Engine (OKE) or Oracle Exadata Database
Service deployments. They are configured out-of-the-box with the necessary routing, with
their inbound and outbound interfaces properly secured.
The landing zone includes various pre-configured security services that can
be deployed in tandem with the overall architecture for a strong security posture. These
services are Oracle Cloud Guard , VCN flow logs, OCI Connector Hub , OCI Vault with customer-managed keys, OCI Vulnerability Scanning Service, Security Zones, and
Zero Trust Packet Routing (ZPR). Notifications are set using Topics and Events for
alerting administrators about changes in the deployed resources.
The following diagram illustrates this reference architecture.
Description of the illustration oci-core-landingzone.png
oci-core-landingzone-oracle.zip
The architecture has the following components:
- Tenancy
A tenancy is a secure and isolated partition that Oracle sets up within Oracle Cloud when you sign up for Oracle Cloud
Infrastructure . You can create, organize, and administer your resources in Oracle Cloud within your tenancy. A tenancy is synonymous with a company or organization. Usually, a company will have a single tenancy and reflect its organizational structure within that tenancy. A single tenancy is usually associated with a single subscription, and a single subscription usually only has one tenancy.
- Identity domain
An identity domain is a container
for managing users and roles, federating and provisioning users, securing
application integration through single sign-on (SSO) configuration, and
SAML/OAuth-based identity provider administration. It represents a user
population in Oracle Cloud Infrastructure and its associated configurations and
security settings (such as MFA).
- Policies
An Oracle Cloud Infrastructure Identity
and Access Management policy specifies who can access which resources, and how. Access is granted at the group and compartment level, which means you can write a policy that gives a group a specific type of access within a specific compartment, or to the tenancy.
- Compartments
Compartments are cross-regional logical partitions within an Oracle Cloud
Infrastructure tenancy. Use compartments to organize, control access, and set usage quotas for your Oracle Cloud resources. In a given compartment, you define policies that control access and set privileges for resources.
The resources in this landing zone template are
provisioned in the following compartments:
- A recommended enclosing compartment containing all
compartments listed below.
- A Network compartment for all the networking resources,
including the required network gateways.
- A Security compartment for the logging, key management, and
notifications resources.
- An App compartment for the application-related services,
including compute, storage, functions, streams, Kubernetes nodes, API
gateway, and so on.
- A Database compartment for all database resources.
- An optional compartment for Oracle Exadata Database
Service infrastructure.
The grayed out icons in the diagram indicate services
that are not provisioned by the template.
This compartment
design reflects a basic functional structure observed across different
organizations, where IT responsibilities are typically separated among
networking, security, application development, and database
administrators.
- Virtual cloud network (VCN) and subnets
A VCN is a customizable, software-defined network that you set up in an Oracle Cloud
Infrastructure region. Like traditional data center networks, VCNs give you control over your network environment. A VCN can have multiple non-overlapping CIDR blocks that you can change after you create the VCN. You can segment a VCN into subnets, which can be scoped to a region or to an availability domain. Each subnet consists of a contiguous range of addresses that don't overlap with the other subnets in the VCN. You can change the size of a subnet after creation. A subnet can be public or private.
The template can deploy VCNs for different workload types,
including three-tier VCNs for typical three-tier web-based applications, OCI Kubernetes Engine applications and Oracle Exadata Database
Service .
- Internet gateway
An internet gateway allows traffic between the public subnets in a VCN and the public internet.
- Dynamic routing gateway (DRG)
The DRG is a
virtual router that provides a path for private network traffic between
on-premises networks and VCNs and can also be used to route traffic between VCNs
in the same region or across regions.
- NAT gateway
A NAT gateway enables private resources in a VCN to access hosts on the internet, without exposing those resources to incoming internet connections.
- Service gateway
The service gateway provides access from a VCN to other services, such as Oracle Cloud
Infrastructure Object Storage . The traffic from the VCN to the Oracle service travels over the Oracle network fabric and does not traverse the internet.
- Oracle services network
The Oracle Services Network (OSN) is a conceptual network in Oracle Cloud
Infrastructure that is reserved for Oracle services. These services have public IP addresses that you can reach over the internet. Hosts outside Oracle Cloud can access the OSN privately by using Oracle Cloud
Infrastructure FastConnect or VPN Connect. Hosts in your VCNs can access the OSN privately through a service gateway.
- Network security groups (NSGs)
NSGs act as virtual firewalls for your cloud resources. With the zero-trust security model of Oracle Cloud
Infrastructure you control the network traffic inside a VCN. An NSG consists of a set of ingress and egress security rules that apply to only a specified set of VNICs in a single VCN.
- Events
Oracle Cloud
Infrastructure services emit events, which are structured messages that describe the changes in resources. Events are emitted for create, read, update, or delete (CRUD) operations, resource lifecycle state changes, and system events that affect cloud resources.
- Notifications
OCI Notifications broadcasts messages to distributed components by using a low latency publish-subscribe pattern, delivering secure, highly reliable, durable messages for applications hosted on Oracle Cloud
Infrastructure .
- Vault
Oracle Cloud Infrastructure Vault enables you to centrally manage the encryption
keys that protect your data and the secret
credentials that you use to secure access to your
resources in the cloud. You can use the Vault
service to create and manage vaults, keys, and
secrets.
- Logs
Oracle Cloud Infrastructure Logging is a highly-scalable and fully-managed service that provides access to the following types of logs from your resources in the cloud:
- Audit logs: Logs related to events produced by OCI Audit .
- Service logs: Logs published by individual services such as OCI API Gateway , OCI Events , OCI Functions , OCI Load Balancing , OCI Object Storage , and VCN flow logs.
- Custom logs: Logs th

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 974 KiB

View File

@@ -0,0 +1,7 @@
The diagram you downloaded is available in these formats:
- DRAWIO
- SVG
You can customize them for your organization using the associated tools:
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.

View File

@@ -0,0 +1,267 @@
# Implement a cloud-native DICOM store on Oracle Cloud Infrastructure
- Source: https://docs.oracle.com/en/solutions/cloud-native-dicom-on-oci/index.html
- Date: 2025-12
- Type: reference-architecture
- Services: oke, object-storage, adb-s
- Tags: healthcare, application, autonomous
## Summary (catalog)
Cloud-native DICOM store on OKE with Object Storage for medical images and ADB-S for metadata. DICOMweb API compliance for interoperability with medical imaging systems.
## Architecture (fetched from source)
Architecture
This architecture implements a DICOM store on Oracle Cloud
Infrastructure .
The following diagram illustrates this reference architecture.
Description of the illustration dicom-oci-diagram.png
oci-dicom-store-oracle.zip
The architecture has the following components:
- Oracle Cloud
Infrastructure
Oracle Cloud
Infrastructure (OCI) is Oracle's cloud computing platform
that provides a comprehensive suite of services for
building, deploying, and managing applications in the cloud.
Designed for enterprise performance and security, OCI offers
infrastructure as a service (IaaS), platform as a service
(PaaS), and other cloud services such as AI, machine
learning, networking, storage, and database solutions.
OCI provides high performance, scalability, and
cost-efficiency, supporting a wide range of workloads from
legacy enterprise applications to cloud-native services. It
is ideal for businesses seeking robust cloud capabilities
with strong support for hybrid and multi-cloud
architectures.
- Cloud-based data science platform
Oracle Cloud Infrastructure Data Science is a fully managed platform that enables data scientists
to build, train, deploy, and manage machine learning models
at scale. It provides a collaborative, secure environment
with integrated tools for the entire data science lifecycle,
including notebooks, automated model training, model
evaluation, and deployment.
Data
Science supports popular open-source frameworks like TensorFlow,
scikit-learn, PyTorch, and XGBoost, and offers seamless
integration with other OCI services such as Object Storage,
Data Flow, and AI Services. Backed by a wide selection of
CPU and GPU shapes, Data
Science helps organizations accelerate AI development, streamline
collaboration across teams, and operationalize machine
learning models efficiently in the cloud.
- AI model training and inference
AI
training and inference are the two core stages in the
lifecycle of an artificial intelligence model:
- Training is the process by which a model
learns from large datasets by adjusting its internal
parameters to recognize patterns, make predictions,
or perform specific tasks. This phase is
computationally intensive and requires powerful
hardware such as GPUs, as well as high-throughput
storage and networking.
- Inference is the stage where the trained
model is used to make predictions or decisions based
on new, unseen data. Inference typically needs to be
fast and scalable, especially in real-time
applications like medical imaging, fraud detection,
or virtual assistants.
Chosen by worlds leading AI companies such as
OpenAI and xAI, OCI Generative AI infrastructure has emerged as a leading platform for AI
model training and inference, offering a unique combination
of performance, scalability, and cost-efficiency.
- Security and Compliance
OCI offers a
comprehensive set of security and compliance features
designed to protect data, applications, and workloads across
the cloud environment. OCI provides built-in security at
every layer, including network security, identity and access
management (IAM), data encryption, threat detection, and
monitoring.
Key features include isolated
network virtualization, customer-controlled encryption keys,
security zones, and Oracle Cloud Guard for continuous monitoring and automated threat response.
OCI also supports compliance with major industry and
regulatory standards such as ISO, SOC, HIPAA, GDPR, and
FedRAMP, helping organizations meet strict data protection
and governance requirements.
These
capabilities make OCI a trusted platform for running
sensitive, mission-critical workloads securely and in
compliance with global standards.
- Orthanc
Orthanc is an open-source,
lightweight DICOM server designed to manage, store, and
share medical imaging data. It is widely used in hospitals
and research labs, and by developers to build imaging
workflows without relying on heavy commercial PACS (Picture
Archiving and Communication Systems).
Orthanc seamlessly integrates with OCI Object Storage and OCI Database with PostgreSQL , providing a DICOMweb API endpoint that enables users to
store, retrieve, and query DICOM images by using RESTful
APIs.
In this reference architecture,
Orthanc is deployed on OCI Container Instances or OCI Container Instances (OKE), eliminating the infrastructure management overhead
for our healthcare customers.
- OCI Object Storage
Actual DICOM images are stored in an
OCI Object Storage bucket.
OCI Object Storage offers highly durable, infinitely scalable, and secure
storage for any type of data—structured or unstructured.
Whether you're archiving medical images, serving media
files, or backing up enterprise workloads, OCI Object Storage provides low-latency access, built-in redundancy, and
tiered pricing to optimize cost and performance. It is
designed for modern cloud applications, integrates natively
with AI, analytics, and DevOps tools, and offers seamless
data lifecycle management, all with no up-front hardware
investment.
- OCI Database with PostgreSQL
In this reference architecture, Orthanc
is integrated with OCI Database with PostgreSQL to manage and index the non-image metadata associated
with DICOM files. While Orthanc can run without an external
database (using its built-in SQLite engine), integrating
with a managed and more powerful database such as OCI Database with PostgreSQL is recommended for scalability and performance.
- OCI Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine ( OCI Kubernetes Engine or OKE ) is a fully managed, enterprise-grade Kubernetes service
that simplifies container orchestration on Oracle Cloud.
With OKE, you get automated provisioning, scaling, and
updates, so you can deploy, run, and manage cloud-native
applications with less overhead.
Running
AI workloads on OKE gives you the best of both worlds: the flexibility of
containers and Kubernetes, combined with the power of OCIs
high-performance infrastructure. Whether you're training
models on GPU nodes or deploying inference at scale, OKE lets you manage AI pipelines with ease using your
favorite tools like TensorFlow, PyTorch, or Hugging
Face.
With automated scaling, GPU
support, integrated logging, and cost-efficient pricing, OKE makes it simple to build, run, and scale AI workloads in
production, all in a secure, enterprise-grade
environment.
- OCI FastConnect
OCI FastConnect offers dedicated, private network connectivity between
customers on-premises facility, such as a hospital, and Oracle Cloud , delivering high throughput, low latency, and predictable
performance for enterprise workloads. It bypasses the public
internet entirely, improving security and reliability for
hybrid and multicloud architectures.
But
what sets OCI FastConnect apart is its cost model: OCI doesnt charge for data
egress over Oracle Cloud , unlike other cloud providers that often impose steep
outbound data transfer fees. This creates significant cost
savings for data-heavy workloads like medical
imaging.
- OCI Roving Edge Device
OCI Roving
Edge Devices (REDs) help facilitate DICOM data transmission
and provide the necessary infrastructure for local
inference. They bring the power of Oracle Cloud to the edge: rugged, portable, high-performance nodes
that let you run applications, process data, and deploy AI
models in disconnected or remote environments.
REDs enable low-latency edge computing with
full compatibility with OCI services. You can preload VMs,
containers, and data, then synchronize with the cloud when
connectivity is available.
Recommendations
Use the following recommendations as a starting point
for implementing a DICOM store on Oracle Cloud
Infrastructure . Your requirements mi

View File

@@ -0,0 +1,457 @@
# Auto-extracted absolute_layout template from
# kb/diagram/assets/archcenter-refs/cloud-native-dicom-on-oci/oci-dicom-store-oracle/oci-dicom-store.drawio
# Source: Oracle Architecture Center reference (canonical geometry).
# Use this as the starting scaffold for a new spec — copy, rename ids,
# and replace `type: TODO_identify` on services with the right OCI
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
# edge waypoints are Oracle's canonical layout; preserve unless the
# customer's topology requires a change.
absolute_layout:
canvas:
width: 850
height: 1100
containers:
- id: c2
type: region
label: ''
x: 380
y: 0
w: 644
h: 498
- id: c1
type: region
label: ''
x: 0
y: 0
w: 234
h: 498
- id: c4
type: region
label: ''
x: 930
y: 383
w: 32
h: 60
services:
- id: s3
type: TODO_identify
label: ''
x: 407
y: 40
w: 153
h: 175
- id: s41
type: TODO_identify
label: ''
x: 786
y: 40
w: 171
h: 167
- id: s50
type: TODO_identify
label: ''
x: 43
y: 80
w: 43
h: 60
- id: s9
type: TODO_identify
label: ''
x: 139
y: 85
w: 63
h: 46
- id: s8
type: TODO_identify
label: ''
x: 140
y: 85
w: 62
h: 45
- id: s43
type: TODO_identify
label: ''
x: 840
y: 88
w: 63
h: 63
- id: s42
type: TODO_identify
label: ''
x: 841
y: 89
w: 62
h: 62
- id: s44
type: TODO_identify
label: ''
x: 841
y: 90
w: 60
h: 60
- id: s47
type: TODO_identify
label: ''
x: 450
y: 91
w: 63
h: 63
- id: s46
type: TODO_identify
label: ''
x: 451
y: 91
w: 62
h: 62
- id: s53
type: TODO_identify
label: ''
x: 640
y: 91
w: 63
h: 63
- id: s52
type: TODO_identify
label: ''
x: 641
y: 91
w: 61
h: 62
- id: s48
type: TODO_identify
label: ''
x: 451
y: 92
w: 60
h: 60
- id: s54
type: TODO_identify
label: ''
x: 642
y: 98
w: 60
h: 54
- id: s51
type: TODO_identify
label: ''
x: 44
y: 99
w: 40
h: 26
- id: s10
type: TODO_identify
label: ''
x: 140
y: 106
w: 61
h: 25
- id: s45
type: TODO_identify
label: ''
x: 848
y: 118
w: 47
h: 25
- id: s49
type: TODO_identify
label: ''
x: 458
y: 120
w: 47
h: 25
- id: s26
type: TODO_identify
label: ''
x: 799
y: 236
w: 63
h: 59
- id: s14
type: TODO_identify
label: ''
x: 136
y: 237
w: 63
h: 62
- id: s25
type: TODO_identify
label: ''
x: 800
y: 237
w: 62
h: 58
- id: s27
type: TODO_identify
label: ''
x: 800
y: 237
w: 48
h: 33
- id: s18
type: TODO_identify
label: ''
x: 467
y: 238
w: 32
h: 61
- id: s15
type: TODO_identify
label: ''
x: 138
y: 239
w: 60
h: 27
- id: s17
type: TODO_identify
label: ''
x: 468
y: 239
w: 30
h: 60
- id: s20
type: TODO_identify
label: ''
x: 469
y: 240
w: 29
h: 58
- id: s30
type: TODO_identify
label: ''
x: 926
y: 240
w: 65
h: 57
- id: s29
type: TODO_identify
label: ''
x: 927
y: 240
w: 63
h: 56
- id: s12
type: TODO_identify
label: ''
x: 36
y: 241
w: 54
h: 60
- id: s31
type: TODO_identify
label: ''
x: 927
y: 241
w: 62
h: 30
- id: s11
type: TODO_identify
label: ''
x: 36
y: 242
w: 52
h: 58
- id: s13
type: TODO_identify
label: ''
x: 37
y: 242
w: 51
h: 57
- id: s19
type: TODO_identify
label: ''
x: 472
y: 242
w: 24
h: 54
- id: s57
type: TODO_identify
label: ''
x: 649
y: 244
w: 60
h: 54
- id: s56
type: TODO_identify
label: ''
x: 650
y: 245
w: 59
h: 53
- id: s58
type: TODO_identify
label: ''
x: 651
y: 245
w: 29
h: 52
- id: s55
type: TODO_identify
label: ''
x: 650
y: 249
w: 49
h: 62
- id: s5
type: TODO_identify
label: ''
x: 291
y: 255
w: 41
h: 28
- id: s6
type: TODO_identify
label: ''
x: 291
y: 255
w: 42
h: 29
- id: s7
type: TODO_identify
label: ''
x: 297
y: 255
w: 28
h: 28
- id: s32
type: TODO_identify
label: ''
x: 942
y: 255
w: 31
h: 40
- id: s28
type: TODO_identify
label: ''
x: 834
y: 259
w: 26
h: 35
- id: s59
type: TODO_identify
label: ''
x: 677
y: 263
w: 30
h: 34
- id: s16
type: TODO_identify
label: ''
x: 138
y: 270
w: 60
h: 27
- id: s21
type: TODO_identify
label: ''
x: 460
y: 364
w: 55
h: 61
- id: s22
type: TODO_identify
label: ''
x: 460
y: 364
w: 57
h: 63
- id: s61
type: TODO_identify
label: ''
x: 639
y: 364
w: 62
h: 63
- id: s60
type: TODO_identify
label: ''
x: 640
y: 364
w: 61
h: 61
- id: s62
type: TODO_identify
label: ''
x: 646
y: 365
w: 48
h: 45
- id: s23
type: TODO_identify
label: ''
x: 464
y: 373
w: 50
h: 50
- id: s24
type: TODO_identify
label: ''
x: 478
y: 377
w: 34
h: 31
- id: s34
type: TODO_identify
label: ''
x: 799
y: 379
w: 63
h: 63
- id: s33
type: TODO_identify
label: ''
x: 800
y: 380
w: 61
h: 62
- id: s37
type: TODO_identify
label: ''
x: 926
y: 380
w: 65
h: 62
- id: s35
type: TODO_identify
label: ''
x: 801
y: 381
w: 60
h: 60
- id: s36
type: TODO_identify
label: ''
x: 926
y: 381
w: 63
h: 60
- id: s38
type: TODO_identify
label: ''
x: 927
y: 381
w: 55
h: 55
- id: s39
type: TODO_identify
label: ''
x: 949
y: 390
w: 40
h: 38
- id: s63
type: TODO_identify
label: ''
x: 670
y: 392
w: 30
h: 34
- id: s40
type: TODO_identify
label: ''
x: 954
y: 394
w: 30
h: 30
labels: []
connections: []

View File

@@ -0,0 +1,414 @@
<svg width="969" height="472" viewBox="0 0 969 472" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="oci-dicom-store">
<rect width="969" height="472" fill="white"/>
<g id="OCI Region">
<rect x="0.5" y="0.5" width="222" height="471" rx="3.5" fill="#F5F4F2"/>
<rect x="0.5" y="0.5" width="222" height="471" rx="3.5" stroke="#9E9892"/>
<text id="On-premises" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="62.2656" y="21.816">On-premises</tspan></text>
</g>
<g id="OCI Region_2">
<rect x="359.5" y="0.5" width="609" height="471" rx="3.5" fill="#F5F4F2"/>
<rect x="359.5" y="0.5" width="609" height="471" rx="3.5" stroke="#9E9892"/>
<text id="OCI Region_3" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="bold" letter-spacing="0em"><tspan x="367" y="21.816">OCI Region</tspan></text>
</g>
<g id="VCN box_New">
<rect id="Rectangle 28" x="385.5" y="38.4771" width="145" height="166" stroke="#AA643B" stroke-dasharray="8 4"/>
<text id="VCN" fill="#AE562C" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="394" y="60.816">Inference</tspan></text>
</g>
<path id="Vector 1" d="M421.707 255.707C422.098 255.317 422.098 254.683 421.707 254.293L415.343 247.929C414.953 247.538 414.319 247.538 413.929 247.929C413.538 248.319 413.538 248.953 413.929 249.343L419.586 255L413.929 260.657C413.538 261.047 413.538 261.681 413.929 262.071C414.319 262.462 414.953 262.462 415.343 262.071L421.707 255.707ZM188 255L188 256L421 256L421 255L421 254L188 254L188 255Z" fill="#312D2A"/>
<rect id="Rectangle 1" x="879" y="362" width="31" height="57" fill="#F5F4F2"/>
<g id="Group 1244">
<g id="Group 1241">
<g id="Group 1249">
<rect id="Rectangle 698" x="272" y="253" width="46" height="4" fill="white"/>
</g>
<g id="Connector Line Label">
<rect width="88" height="14" transform="translate(251 271)" fill="white"/>
<text id="Line Label" fill="#312D2A" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="255.372" y="283.089">FastConnect</tspan></text>
</g>
<g id="Icon Master">
<g id="Srv-OCI FastConnect">
<g id="Group">
<g id="Group_2">
<g id="Group_3">
<path id="Vector" d="M295 268.686C294.801 268.686 294.602 268.686 294.336 268.686C292.608 268.487 291.014 267.623 289.951 266.294C289.685 266.294 289.485 266.36 289.22 266.36C289.02 266.36 288.887 266.36 288.688 266.36C287.293 266.227 285.964 265.563 285.034 264.5H279.585V262.639H284.037C283.771 261.909 283.705 261.111 283.771 260.314V260.247H277.525V258.387H282.642C282.044 257.722 281.578 256.859 281.379 255.995H275.333V254.134H281.313C281.446 253.337 281.711 252.54 282.243 251.875H277.525V250.015H284.17C284.103 249.483 284.037 248.952 284.103 248.42C284.103 248.154 284.17 247.889 284.236 247.623H279.585V245.629H285.1C285.432 245.164 285.764 244.766 286.23 244.367C287.293 243.503 288.555 243.038 289.884 243.038C290.083 243.038 290.283 243.038 290.482 243.038C290.881 243.105 291.213 243.171 291.545 243.237C293.007 241.975 294.867 241.311 296.794 241.311C297.06 241.311 297.326 241.311 297.592 241.377C300.25 241.643 302.642 243.237 303.904 245.563H310.283V247.423H304.635C304.768 247.889 304.834 248.354 304.901 248.819C305.499 249.085 306.03 249.417 306.495 249.882H312.475V251.742H307.957C308.356 252.473 308.622 253.204 308.688 254.002H314.668V255.862H308.688C308.555 256.726 308.289 257.523 307.891 258.254H312.542V260.115H306.296C306.23 260.181 306.163 260.247 306.097 260.247C306.163 260.713 306.163 261.111 306.097 261.576C306.097 261.909 306.03 262.241 305.897 262.507H310.15L310.216 262.706C310.216 262.772 310.283 262.905 310.216 264.035V264.367H304.901C304.037 265.629 302.509 266.36 300.914 266.36C300.715 266.36 300.582 266.36 300.382 266.36C300.25 266.36 300.117 266.36 299.984 266.294C298.788 267.822 296.927 268.686 295 268.686Z" fill="white"/>
<path id="Vector_2" d="M296.794 241.776C297.06 241.776 297.326 241.776 297.591 241.843C300.316 242.108 302.575 243.77 303.771 246.029H310.017V247.225H304.236C304.435 247.823 304.568 248.487 304.635 249.152C305.299 249.417 305.897 249.816 306.429 250.281H312.209V251.477H307.425C308.023 252.341 308.355 253.338 308.422 254.401H314.402V255.597H308.422C308.422 255.597 308.422 255.597 308.422 255.663C308.289 256.793 307.89 257.79 307.292 258.72H312.209V259.916H306.229C306.096 260.049 305.963 260.182 305.764 260.248C305.831 260.713 305.897 261.178 305.831 261.643C305.764 262.108 305.698 262.574 305.498 262.972H310.017C310.083 263.105 310.017 264.168 310.017 264.168H304.834C303.904 265.364 302.442 266.162 300.847 266.162C300.714 266.162 300.515 266.162 300.316 266.162C300.116 266.162 299.983 266.095 299.784 266.095C298.721 267.491 296.927 268.354 295 268.354C294.801 268.354 294.601 268.354 294.402 268.354C292.674 268.155 291.146 267.291 290.15 265.962C289.884 266.029 289.551 266.029 289.286 266.029C289.086 266.029 288.953 266.029 288.754 266.029C287.359 265.896 286.096 265.231 285.233 264.168H279.917V262.972H284.502C284.169 262.175 283.97 261.245 284.103 260.381C284.103 260.248 284.169 260.049 284.169 259.916H277.857V258.72H283.439C282.508 257.922 281.844 256.859 281.645 255.663H275.664V254.467H281.645V254.401C281.777 253.338 282.243 252.341 282.907 251.544H277.857V250.348H284.568C284.568 250.348 284.568 250.348 284.635 250.348C284.502 249.75 284.435 249.085 284.502 248.421C284.568 248.022 284.635 247.623 284.767 247.225H279.917V245.962H285.233C285.565 245.497 285.963 245.032 286.362 244.633C287.359 243.836 288.555 243.437 289.751 243.437C289.95 243.437 290.15 243.437 290.282 243.437C290.681 243.504 291.08 243.57 291.478 243.703C293.073 242.441 294.867 241.776 296.794 241.776ZM296.794 241.112C294.867 241.112 292.94 241.776 291.478 242.972C291.146 242.906 290.814 242.839 290.482 242.773C290.282 242.773 290.083 242.773 289.884 242.773C288.488 242.773 287.159 243.238 286.03 244.168C285.631 244.501 285.233 244.899 284.967 245.364H279.917H279.252V246.029V247.225V247.889H279.917H283.837C283.837 248.022 283.771 248.155 283.771 248.288C283.704 248.753 283.704 249.152 283.771 249.617H277.857H277.193V250.281V251.477V252.142H277.857H281.645C281.379 252.673 281.179 253.205 281.047 253.736H275.664H275V254.401V255.597V256.261H275.664H281.113C281.246 256.926 281.578 257.457 281.91 257.989H277.857H277.193V258.653V259.849V260.514H277.857H283.372C283.306 261.112 283.372 261.71 283.571 262.241H279.917H279.252V262.906V264.102V264.766H279.917H284.9C285.897 265.829 287.226 266.494 288.621 266.627C288.821 266.627 289.02 266.627 289.219 266.627C289.419 266.627 289.618 266.627 289.817 266.627C290.947 267.956 292.542 268.819 294.336 269.019C294.535 269.019 294.801 269.019 295 269.019C296.993 269.019 298.854 268.155 300.116 266.627C300.183 266.627 300.249 266.627 300.316 266.627C300.515 266.627 300.714 266.627 300.914 266.627C302.575 266.627 304.103 265.896 305.166 264.633H310.017H310.615V264.035C310.681 262.906 310.615 262.706 310.548 262.574L310.415 262.175H309.95H306.362C306.429 261.976 306.429 261.776 306.429 261.577C306.495 261.178 306.429 260.78 306.429 260.381H312.209H312.874V259.716V258.52V257.856H312.209H308.422C308.688 257.324 308.887 256.726 308.953 256.128H314.336H315V255.464V254.401V253.736H314.336H308.953C308.821 253.205 308.688 252.673 308.488 252.142H312.209H312.874V251.477V250.281V249.617H312.209H306.694C306.229 249.218 305.831 248.952 305.299 248.687C305.299 248.421 305.233 248.155 305.166 247.889H310.017H310.681V247.225V245.962V245.298H310.017H304.169C302.774 242.972 300.382 241.378 297.658 241.112C297.392 241.112 297.06 241.112 296.794 241.112Z" fill="white"/>
</g>
<g id="Group_4">
<path id="Vector_3" d="M279.916 245.962V247.158H283.77C283.903 246.76 284.036 246.361 284.235 245.962H279.916Z" fill="#312D2A"/>
<path id="Vector_4" d="M310.018 247.158V245.962H304.768C304.968 246.361 305.101 246.76 305.233 247.158H310.018Z" fill="#312D2A"/>
<path id="Vector_5" d="M282.907 250.282H277.857V251.478H281.778C282.11 251.013 282.442 250.614 282.907 250.282Z" fill="#312D2A"/>
<path id="Vector_6" d="M312.209 251.411V250.215H307.625C307.957 250.614 308.223 250.946 308.422 251.411H312.209Z" fill="#312D2A"/>
<path id="Vector_7" d="M309.353 255.531H314.469V254.335H309.353C309.353 254.734 309.353 255.132 309.353 255.531Z" fill="#312D2A"/>
<path id="Vector_8" d="M280.714 254.335H275.664V255.531H280.78C280.714 255.132 280.714 254.734 280.714 254.335Z" fill="#312D2A"/>
<path id="Vector_9" d="M282.176 258.654H277.857V259.85H283.239C283.239 259.783 283.239 259.717 283.306 259.65C282.907 259.318 282.509 258.986 282.176 258.654Z" fill="#312D2A"/>
<path id="Vector_10" d="M312.21 259.784V258.588H308.356C308.09 258.987 307.824 259.385 307.492 259.784H312.21Z" fill="#312D2A"/>
<path id="Vector_11" d="M310.016 264.035V262.839H306.428C306.295 263.238 306.096 263.637 305.897 264.035H310.016Z" fill="#312D2A"/>
<path id="Vector_12" d="M279.916 262.906V264.102H284.102C283.836 263.703 283.703 263.304 283.504 262.906H279.916Z" fill="#312D2A"/>
<path id="Vector_13" d="M308.423 255.597C308.688 252.807 307.16 250.215 304.635 249.086C304.369 245.298 301.446 242.175 297.592 241.843C295.399 241.644 293.273 242.308 291.612 243.77C291.213 243.637 290.815 243.571 290.416 243.504C288.954 243.371 287.559 243.77 286.429 244.7C285.3 245.631 284.635 246.893 284.436 248.355C284.37 249.019 284.436 249.617 284.569 250.282C282.908 251.013 281.778 252.541 281.579 254.335C281.379 256.395 282.443 258.322 284.237 259.252C284.104 259.584 284.037 259.983 284.037 260.315C283.904 261.71 284.303 263.039 285.167 264.102C286.031 265.165 287.293 265.83 288.688 265.963C289.154 266.029 289.619 265.963 290.017 265.896C291.014 267.292 292.609 268.155 294.27 268.288C294.469 268.288 294.669 268.288 294.868 268.288C296.795 268.288 298.589 267.425 299.718 265.83C299.918 265.896 300.051 265.896 300.25 265.896C300.383 265.896 300.582 265.896 300.781 265.896C303.306 265.896 305.433 263.969 305.698 261.445C305.765 260.979 305.698 260.514 305.632 260.049C307.293 259.052 308.223 257.458 308.423 255.597ZM304.569 260.049C304.702 260.514 304.768 260.979 304.702 261.445C304.569 262.441 304.104 263.371 303.306 263.969C302.509 264.634 301.512 264.9 300.516 264.833C300.25 264.833 300.051 264.767 299.785 264.7L299.386 264.567L299.12 264.966C298.124 266.494 296.33 267.358 294.469 267.159C293.007 267.026 291.678 266.162 290.815 264.966L290.615 264.634L290.217 264.767C289.752 264.9 289.286 264.9 288.888 264.9C287.825 264.767 286.828 264.302 286.164 263.438C285.499 262.574 285.167 261.577 285.3 260.514C285.366 260.116 285.433 259.65 285.632 259.252L285.898 258.654L285.3 258.454C284.037 257.989 283.173 256.926 282.908 255.664H291.147L289.552 257.258L290.35 258.056L293.34 254.999L290.35 251.943L289.552 252.74L291.147 254.335H282.841C283.041 252.807 284.037 251.544 285.566 251.146L286.164 250.946L285.898 250.415C285.632 249.75 285.566 249.152 285.632 248.488C285.765 247.358 286.296 246.361 287.16 245.631C288.024 244.9 289.154 244.567 290.283 244.7C290.682 244.767 291.08 244.833 291.479 245.033L291.878 245.099L292.144 244.833C293.539 243.438 295.532 242.773 297.459 242.973C300.848 243.305 303.439 246.096 303.506 249.484V249.883L303.904 250.016C305.765 250.68 307.094 252.408 307.293 254.335H299.054L300.516 252.873L299.718 252.076L296.861 254.933L299.851 257.989L300.649 257.192L299.054 255.597H307.227C307.027 257.192 306.164 258.587 304.768 259.451L304.369 259.717L304.569 260.049Z" fill="#312D2A"/>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
<g id="User Group">
<g id="User-Group">
<g id="Group 20">
<path id="Vector_14" d="M132.527 124.403V108.394C132.541 106.906 133.141 105.485 134.197 104.437C135.252 103.389 136.679 102.8 138.166 102.797H140.432V102.471C138.953 101.61 137.796 100.29 137.138 98.7107C136.48 97.1316 136.356 95.3805 136.785 93.7245C137.215 92.0684 138.174 90.5983 139.517 89.5383C140.86 88.4783 142.513 87.8866 144.223 87.8534C145.934 87.8202 147.608 88.3474 148.991 89.3545C150.374 90.3616 151.39 91.7934 151.883 93.4315C152.377 95.0696 152.321 96.8242 151.724 98.4276C151.128 100.031 150.023 101.395 148.579 102.313H149.106C149.727 101.507 150.526 100.855 151.44 100.408C152.353 99.96 153.358 99.7282 154.375 99.7304H157.115V98.5816C155.361 97.5254 154.001 95.9235 153.243 94.021C152.485 92.1184 152.372 90.02 152.92 88.0469C153.468 86.0737 154.648 84.3344 156.278 83.0952C157.908 81.856 159.9 81.1851 161.948 81.1851C163.996 81.1851 165.987 81.856 167.617 83.0952C169.248 84.3344 170.427 86.0737 170.975 88.0469C171.523 90.02 171.41 92.1184 170.652 94.021C169.895 95.9235 168.534 97.5254 166.78 98.5816V99.6355H169.583C170.599 99.6442 171.6 99.8808 172.512 100.328C173.424 100.775 174.224 101.42 174.853 102.218H175.38C173.939 101.302 172.836 99.9416 172.239 98.3423C171.642 96.743 171.582 94.9925 172.071 93.3566C172.559 91.7207 173.568 90.2889 174.944 89.2785C176.32 88.2681 177.988 87.7345 179.695 87.7585C181.402 87.7826 183.055 88.3631 184.402 89.4119C185.749 90.4607 186.717 91.9204 187.158 93.5694C187.6 95.2184 187.492 96.9666 186.85 98.5484C186.208 100.13 185.067 101.459 183.601 102.334V102.797H185.708C187.203 102.8 188.636 103.395 189.692 104.452C190.749 105.509 191.344 106.941 191.347 108.436V124.403H132.527Z" fill="white"/>
<path id="Vector_15" d="M161.953 81.718C163.912 81.7138 165.818 82.3608 167.37 83.5574C168.922 84.754 170.033 86.4324 170.528 88.3288C171.022 90.2252 170.873 92.2323 170.103 94.0345C169.333 95.8368 167.986 97.3322 166.274 98.2857V100.214H169.604C170.59 100.22 171.561 100.457 172.44 100.906C173.318 101.354 174.079 102.001 174.663 102.797H178.067C176.308 102.407 174.754 101.382 173.704 99.9169C172.654 98.4523 172.181 96.6515 172.377 94.86C172.573 93.0685 173.423 91.4124 174.765 90.2093C176.107 89.0062 177.846 88.3409 179.648 88.3409C181.45 88.3409 183.189 89.0062 184.531 90.2093C185.873 91.4124 186.723 93.0685 186.919 94.86C187.115 96.6515 186.642 98.4523 185.592 99.9169C184.542 101.382 182.988 102.407 181.229 102.797H183.126V103.281H185.813C187.168 103.284 188.467 103.824 189.425 104.782C190.383 105.74 190.922 107.038 190.925 108.393V123.875H133.054V108.393C133.057 107.038 133.596 105.74 134.554 104.782C135.512 103.824 136.811 103.284 138.165 103.281H140.927V102.797H142.75C140.99 102.407 139.437 101.382 138.387 99.9169C137.336 98.4523 136.864 96.6515 137.06 94.86C137.256 93.0685 138.106 91.4124 139.448 90.2093C140.79 89.0062 142.529 88.3409 144.331 88.3409C146.133 88.3409 147.872 89.0062 149.214 90.2093C150.555 91.4124 151.406 93.0685 151.602 94.86C151.798 96.6515 151.325 98.4523 150.275 99.9169C149.225 101.382 147.671 102.407 145.912 102.797H149.316C149.878 101.999 150.623 101.349 151.489 100.899C152.354 100.45 153.315 100.215 154.291 100.214H157.558V98.2435C155.861 97.2771 154.532 95.7764 153.778 93.9754C153.024 92.1745 152.887 90.1746 153.389 88.2878C153.891 86.401 155.003 84.7333 156.552 83.5448C158.101 82.3564 160 81.714 161.953 81.718ZM161.953 80.6641C159.823 80.6647 157.75 81.3523 156.042 82.6249C154.334 83.8975 153.083 85.6871 152.473 87.7278C151.863 89.7685 151.928 91.9515 152.658 93.9523C153.388 95.9531 154.744 97.665 156.525 98.8337V99.1605H154.312C153.408 99.1607 152.513 99.336 151.677 99.6769C152.291 98.558 152.641 97.3133 152.701 96.0382C152.76 94.7631 152.527 93.4913 152.019 92.3202C151.511 91.1491 150.742 90.1097 149.771 89.2816C148.799 88.4534 147.651 87.8585 146.415 87.5423C145.178 87.226 143.885 87.1969 142.636 87.4571C141.386 87.7174 140.212 88.26 139.205 89.0436C138.197 89.8272 137.382 90.8309 136.822 91.9779C136.262 93.125 135.971 94.3849 135.973 95.6614C135.976 96.9227 136.261 98.1673 136.808 99.3037C137.355 100.44 138.151 101.439 139.135 102.227H138.081C136.461 102.252 134.916 102.912 133.779 104.066C132.641 105.219 132.003 106.773 132 108.393V124.929H192V108.393C191.997 106.759 191.347 105.192 190.191 104.036C189.035 102.881 187.469 102.23 185.835 102.227H184.781C185.898 101.351 186.773 100.206 187.326 98.8978C187.878 97.59 188.088 96.1633 187.937 94.7518C187.786 93.3403 187.278 91.9905 186.462 90.8293C185.645 89.6681 184.546 88.7337 183.269 88.1141C181.992 87.4944 180.578 87.2098 179.161 87.287C177.743 87.3643 176.369 87.8009 175.167 88.5557C173.965 89.3105 172.974 90.3587 172.289 91.6018C171.603 92.8449 171.245 94.2419 171.248 95.6614C171.25 97.0748 171.613 98.4642 172.302 99.698C171.431 99.346 170.501 99.1636 169.562 99.1605H167.328V98.8864C169.121 97.725 170.491 96.0149 171.233 94.0111C171.975 92.0074 172.049 89.8175 171.445 87.7681C170.84 85.7187 169.589 83.9197 167.879 82.6394C166.168 81.3592 164.089 80.6662 161.953 80.6641V80.6641Z" fill="white"/>
<path id="Vector_16" d="M179.659 102.976C181.109 102.978 182.527 102.55 183.733 101.746C184.939 100.942 185.879 99.7982 186.435 98.4594C186.991 97.1205 187.137 95.6469 186.854 94.225C186.572 92.8032 185.874 91.4971 184.849 90.472C183.824 89.447 182.518 88.7492 181.096 88.4669C179.674 88.1846 178.201 88.3305 176.862 88.8862C175.523 89.4419 174.379 90.3824 173.575 91.5886C172.771 92.7948 172.343 94.2124 172.345 95.662C172.362 97.5967 173.137 99.4476 174.506 100.816C175.874 102.184 177.725 102.96 179.659 102.976ZM179.659 90.1499C180.762 90.1395 181.842 90.4574 182.764 91.0632C183.685 91.669 184.405 92.5353 184.832 93.5517C185.259 94.5681 185.374 95.6886 185.163 96.7707C184.951 97.8527 184.422 98.8472 183.643 99.6275C182.864 100.408 181.871 100.939 180.789 101.153C179.707 101.366 178.587 101.254 177.569 100.828C176.552 100.403 175.685 99.6846 175.077 98.7646C174.469 97.8445 174.149 96.7645 174.158 95.662C174.172 94.2062 174.755 92.8137 175.784 91.7832C176.812 90.7528 178.204 90.1664 179.659 90.1499Z" fill="#2D5967"/>
<path id="Vector_17" d="M185.835 103.282H184.328L184.065 103.63C183.546 104.305 182.879 104.852 182.115 105.229C181.351 105.605 180.511 105.801 179.659 105.801C178.808 105.801 177.967 105.605 177.203 105.229C176.44 104.852 175.773 104.305 175.254 103.63L174.99 103.282H174.906C174.371 102.356 173.604 101.585 172.679 101.047C171.755 100.509 170.706 100.222 169.636 100.215H167.834L167.571 100.563C166.909 101.424 166.059 102.122 165.085 102.602C164.111 103.082 163.039 103.332 161.953 103.332C160.867 103.332 159.796 103.082 158.822 102.602C157.848 102.122 156.997 101.424 156.336 100.563L156.072 100.215H154.312C153.243 100.221 152.193 100.508 151.269 101.046C150.344 101.584 149.577 102.355 149.043 103.282L148.779 103.63C148.261 104.305 147.594 104.852 146.83 105.229C146.066 105.605 145.226 105.801 144.374 105.801C143.522 105.801 142.682 105.605 141.918 105.229C141.154 104.852 140.487 104.305 139.968 103.63L139.705 103.282H138.166C136.811 103.285 135.513 103.824 134.555 104.782C133.597 105.74 133.057 107.038 133.055 108.393V123.875H134.825V108.393C134.825 107.506 135.177 106.655 135.803 106.027C136.429 105.399 137.279 105.045 138.166 105.042H138.82C139.964 106.343 141.531 107.2 143.244 107.462C144.957 107.724 146.708 107.375 148.189 106.475V123.875H149.918V106.338C149.918 105.184 150.376 104.077 151.192 103.26C152.009 102.444 153.116 101.985 154.27 101.985H155.187C156.019 102.96 157.053 103.742 158.216 104.278C159.38 104.815 160.646 105.093 161.927 105.093C163.208 105.093 164.474 104.815 165.638 104.278C166.801 103.742 167.835 102.96 168.667 101.985H169.573C170.728 101.985 171.835 102.444 172.651 103.26C173.467 104.077 173.926 105.184 173.926 106.338V123.875H175.697V106.412C177.177 107.365 178.952 107.752 180.695 107.5C182.438 107.248 184.032 106.375 185.182 105.042H185.835C186.723 105.045 187.574 105.399 188.202 106.027C188.83 106.654 189.184 107.505 189.187 108.393V123.875H190.947V108.393C190.944 107.038 190.405 105.74 189.447 104.782C188.489 103.824 187.19 103.285 185.835 103.282Z" fill="#2D5967"/>
<path id="Vector_18" d="M144.34 102.976C145.79 102.978 147.208 102.55 148.414 101.746C149.62 100.942 150.56 99.7982 151.116 98.4594C151.672 97.1205 151.818 95.6469 151.535 94.225C151.253 92.8032 150.555 91.4971 149.53 90.472C148.505 89.447 147.199 88.7492 145.777 88.4669C144.355 88.1846 142.882 88.3305 141.543 88.8862C140.204 89.4419 139.06 90.3824 138.256 91.5886C137.452 92.7948 137.024 94.2124 137.026 95.662C137.043 97.5967 137.818 99.4476 139.187 100.816C140.555 102.184 142.406 102.96 144.34 102.976ZM144.34 90.1499C145.439 90.1499 146.513 90.4757 147.426 91.086C148.339 91.6963 149.051 92.5637 149.472 93.5786C149.892 94.5935 150.002 95.7103 149.788 96.7877C149.573 97.8651 149.044 98.8548 148.268 99.6315C147.491 100.408 146.501 100.937 145.424 101.152C144.346 101.366 143.23 101.256 142.215 100.836C141.2 100.415 140.332 99.7033 139.722 98.7899C139.112 97.8765 138.786 96.8027 138.786 95.7041C138.786 94.2311 139.371 92.8183 140.413 91.7767C141.455 90.7351 142.867 90.1499 144.34 90.1499Z" fill="#2D5967"/>
<path id="Vector_19" d="M161.952 99.4135C163.702 99.4093 165.412 98.8863 166.865 97.9105C168.319 96.9347 169.45 95.55 170.117 93.9313C170.783 92.3127 170.955 90.5328 170.61 88.8166C170.265 87.1004 169.419 85.5249 168.179 84.2893C166.939 83.0538 165.361 82.2135 163.643 81.8748C161.926 81.5361 160.147 81.7142 158.53 82.3865C156.914 83.0588 155.533 84.1951 154.563 85.6519C153.592 87.1087 153.075 88.8205 153.077 90.571C153.079 91.7345 153.31 92.8863 153.756 93.9605C154.203 95.0348 154.857 96.0104 155.682 96.8317C156.506 97.6529 157.484 98.3036 158.56 98.7466C159.635 99.1896 160.788 99.4162 161.952 99.4135ZM161.952 83.4886C163.352 83.4886 164.722 83.904 165.886 84.6822C167.051 85.4605 167.959 86.5666 168.495 87.8607C169.031 89.1548 169.171 90.5789 168.898 91.9527C168.625 93.3266 167.95 94.5885 166.96 95.579C165.969 96.5695 164.707 97.244 163.333 97.5173C161.959 97.7906 160.535 97.6503 159.241 97.1143C157.947 96.5782 156.841 95.6705 156.063 94.5058C155.285 93.3411 154.869 91.9718 154.869 90.571C154.872 88.6935 155.619 86.8937 156.947 85.5661C158.274 84.2385 160.074 83.4914 161.952 83.4886Z" fill="#2D5967"/>
<path id="Vector_20" d="M154.311 112.958H153.426V123.876H153.868H155.196V114.728L154.311 112.958Z" fill="#2D5967"/>
<path id="Vector_21" d="M169.542 112.958L168.657 114.728V123.876H170.132H170.428V112.958H169.542Z" fill="#2D5967"/>
<path id="Vector_22" d="M184.77 116.487V123.875H186.541V114.727H185.655L184.77 116.487Z" fill="#2D5967"/>
<path id="Vector_23" d="M137.459 114.727V123.875H139.219V116.487L138.334 114.727H137.459Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label">
<text id="IconLabel" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="141.672" y="142.816">Users</tspan></text>
</g>
</g>
<text id="DICOMweb API" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="14" letter-spacing="0em"><tspan x="245.08" y="235.089">DICOMweb API</tspan></text>
<g id="Srv-Oracle Database">
<g id="Group 15">
<path id="Vector_24" d="M59.6796 284.322C57.1418 284.322 34.8439 284.118 34.8439 276.857V236.36C34.8439 228.896 57.1418 228.679 59.6796 228.679C62.2175 228.679 84.5289 228.896 84.5289 236.36V276.857C84.5289 284.118 62.2311 284.322 59.6796 284.322Z" fill="white"/>
<path id="Vector_25" d="M59.681 229.357C68.0952 229.357 83.8517 230.823 83.8517 236.36V276.857C83.8517 282.286 68.041 283.643 59.681 283.643C51.321 283.643 35.5238 282.286 35.5238 276.857V236.36C35.5238 230.823 51.3345 229.357 59.681 229.357ZM59.681 228C55.4195 228 34.1667 228.407 34.1667 236.36V276.857C34.1667 284.634 55.4195 285 59.681 285C63.9424 285 85.2088 284.606 85.2088 276.857V236.36C85.2088 228.407 64.0238 228 59.681 228Z" fill="white"/>
<path id="Vector_26" d="M83.8521 236.36C83.8521 230.823 68.0957 229.357 59.6814 229.357C51.2671 229.357 35.5243 230.823 35.5243 236.36V276.857C35.5243 282.286 51.335 283.643 59.6814 283.643C68.0278 283.643 83.8521 282.286 83.8521 276.857V236.36ZM81.1378 263.503C81.1378 263.747 80.12 264.969 75.465 266.095C70.2782 267.2 64.9839 267.719 59.6814 267.642C54.3597 267.714 49.0469 267.186 43.8435 266.068C39.1885 264.942 38.2385 263.72 38.2385 263.476V253.515C43.0971 256.161 53.5064 256.962 59.7493 256.962C65.9921 256.962 76.415 256.161 81.2735 253.515L81.1378 263.503ZM81.1378 250.176C81.1378 250.42 80.12 251.655 75.465 252.768C70.2782 253.873 64.9839 254.392 59.6814 254.315C54.3597 254.387 49.0469 253.859 43.8435 252.741C39.1885 251.628 38.2385 250.393 38.2385 250.149V239.807C43.0971 242.522 53.5064 243.35 59.7493 243.35C65.9921 243.35 76.415 242.535 81.2735 239.807L81.1378 250.176ZM43.8571 233.632C49.0539 232.503 54.3641 231.979 59.6814 232.072C65.0059 232.001 70.3206 232.547 75.5193 233.7C80.31 234.786 81.2057 236.143 81.2057 236.36C81.2057 236.577 80.2421 237.907 75.5193 239.075C70.3205 240.227 65.0058 240.773 59.6814 240.703C54.362 240.777 49.0519 240.235 43.8571 239.088C39.1343 237.907 38.2385 236.632 38.2385 236.36C38.2385 236.089 39.2021 234.8 43.925 233.646L43.8571 233.632ZM75.5328 279.422C70.325 280.541 65.0076 281.069 59.6814 280.997C54.3597 281.069 49.0469 280.541 43.8435 279.422C39.1885 278.31 38.2385 277.075 38.2385 276.857V266.842C43.0971 269.488 53.5064 270.289 59.7493 270.289C65.9921 270.289 76.415 269.488 81.2735 266.842V276.857C81.2735 277.102 80.2557 278.337 75.6007 279.45" fill="#2D5967"/>
</g>
</g>
<g id="Roving Edge Device">
<g id="Srv-Roving Edge Device (RED)">
<g id="Group 1263">
<g id="Group_5">
<path id="Vector_27" d="M187.29 224.417H181.335V224.932H162.456V224.417H155.219V224.932H136.354V224.417H128.852V231.918H129.368V235.794H128.852V243.03H129.368V246.39H128.852V253.892V261.393H129.368V265.269H128.852V272.505H129.368V275.865H128.852V283.367H136.354V282.851H155.234V283.367H162.47V282.851H181.35V283.367H188.852V275.865H188.336V272.505H188.852V265.269H188.336V261.393H188.852V246.39H188.336V243.03H188.852V235.794H188.336V231.918H188.852V224.417H187.304H187.29ZM187.29 259.845H186.774V266.831H187.29V270.972H186.774V277.442H187.29V281.834H182.898V281.318H160.923V281.834H156.781V281.318H134.806V281.834H130.399V277.442H130.915V270.972H130.399V266.831H130.915V259.845H130.399V255.454H131.343V279.947H185.89V255.439H187.29V259.831V259.845ZM187.29 230.37H186.774V237.356H187.29V241.497H186.774V247.967H187.29V252.359H185.89V226.878H131.357V252.344H130.414V247.952H130.93V241.483H130.414V237.341H130.93V230.37H130.414V225.964H134.806V226.48H156.781V225.964H160.923V226.48H182.898V225.964H187.29V230.356V230.37Z" fill="white"/>
</g>
<path id="Vector_28" d="M170.061 236.486H147.643V238.55H170.061V236.486Z" fill="#2D5967"/>
<path id="Vector_29" d="M152.979 239.847H147.555V241.91H152.979V239.847Z" fill="#2D5967"/>
<path id="Vector_30" d="M161.512 239.847H156.089V241.91H161.512V239.847Z" fill="#2D5967"/>
<path id="Vector_31" d="M170.046 239.847H164.622V241.91H170.046V239.847Z" fill="#2D5967"/>
<path id="Vector_32" d="M137.121 245.358H180.555V232.949H137.121V245.358ZM139.184 235.012H178.491V243.28H139.199V235.012H139.184Z" fill="#2D5967"/>
<path id="Vector_33" d="M182.898 252.344H187.29V247.952H186.774V241.482H187.29V237.341H186.774V230.37H187.29V225.964H182.898V226.48H160.923V225.964H156.781V226.48H134.806V225.964H130.399V230.356H130.915V237.341H130.399V241.482H130.915V247.952H130.399V252.344H134.791V251.828H156.766V252.344H160.908V251.828H182.883V252.344H182.898ZM160.923 249.765V249.249H156.781V249.765H134.806V249.249H133.509V247.952H132.993V241.482H133.509V237.341H132.993V230.37H133.509V229.073H134.806V228.558H156.781V229.073H160.923V228.558H182.898V229.073H184.195V230.37H184.71V237.356H184.195V241.497H184.71V247.967H184.195V249.264H182.898V249.78H160.923V249.765Z" fill="#2D5967"/>
<path id="Vector_34" d="M137.121 274.833H180.555V262.424H137.121V274.833ZM139.184 264.488H178.491V272.755H139.199V264.488H139.184Z" fill="#2D5967"/>
<path id="Vector_35" d="M182.898 281.819H187.29V277.427H186.774V270.958H187.29V266.816H186.774V259.831H187.29V255.439H182.898V255.955H160.923V255.439H156.781V255.955H134.806V255.439H130.399V259.831H130.915V266.816H130.399V270.958H130.915V277.427H130.399V281.819H134.791V281.303H156.766V281.819H160.908V281.303H182.883V281.819H182.898ZM160.923 279.24V278.724H156.781V279.24H134.806V278.724H133.509V277.427H132.993V270.958H133.509V266.816H132.993V259.831H133.509V258.534H134.806V258.018H156.781V258.534H160.923V258.018H182.898V258.534H184.195V259.831H184.71V266.816H184.195V270.958H184.71V277.427H184.195V278.724H182.898V279.24H160.923Z" fill="#2D5967"/>
<path id="Vector_36" d="M170.061 265.961H147.643V268.025H170.061V265.961Z" fill="#2D5967"/>
<path id="Vector_37" d="M152.979 269.322H147.555V271.386H152.979V269.322Z" fill="#2D5967"/>
<path id="Vector_38" d="M161.512 269.322H156.089V271.386H161.512V269.322Z" fill="#2D5967"/>
<path id="Vector_39" d="M170.046 269.322H164.622V271.386H170.046V269.322Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_2">
<text id="IconLabel_2" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="113.094" y="301.816">Roving Edge</tspan></text>
<text id="IconLabel_3" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="112.117" y="317.816">Device (RED)</tspan></text>
</g>
</g>
<path id="Vector 4" d="M121.707 256.707C122.098 256.317 122.098 255.683 121.707 255.293L115.343 248.929C114.953 248.538 114.319 248.538 113.929 248.929C113.538 249.319 113.538 249.953 113.929 250.343L119.586 256L113.929 261.657C113.538 262.047 113.538 262.681 113.929 263.071C114.319 263.462 114.953 263.462 115.343 263.071L121.707 256.707ZM90 256V257H121V256V255H90V256Z" fill="#312D2A"/>
<path id="Vector 5" d="M529.293 149.293C528.902 149.683 528.902 150.317 529.293 150.707L535.657 157.071C536.047 157.462 536.681 157.462 537.071 157.071C537.462 156.681 537.462 156.047 537.071 155.657L531.414 150L537.071 144.343C537.462 143.953 537.462 143.319 537.071 142.929C536.681 142.538 536.047 142.538 535.657 142.929L529.293 149.293ZM559.707 150.707C560.098 150.317 560.098 149.683 559.707 149.293L553.343 142.929C552.953 142.538 552.319 142.538 551.929 142.929C551.538 143.319 551.538 143.953 551.929 144.343L557.586 150L551.929 155.657C551.538 156.047 551.538 156.681 551.929 157.071C552.319 157.462 552.953 157.462 553.343 157.071L559.707 150.707ZM530 150L530 151L559 151L559 150L559 149L530 149L530 150Z" fill="#312D2A"/>
<path id="Vector 6" d="M713.293 149.293C712.902 149.683 712.902 150.317 713.293 150.707L719.657 157.071C720.047 157.462 720.681 157.462 721.071 157.071C721.462 156.681 721.462 156.047 721.071 155.657L715.414 150L721.071 144.343C721.462 143.953 721.462 143.319 721.071 142.929C720.681 142.538 720.047 142.538 719.657 142.929L713.293 149.293ZM743.707 150.707C744.098 150.317 744.098 149.683 743.707 149.293L737.343 142.929C736.953 142.538 736.319 142.538 735.929 142.929C735.538 143.319 735.538 143.953 735.929 144.343L741.586 150L735.929 155.657C735.538 156.047 735.538 156.681 735.929 157.071C736.319 157.462 736.953 157.462 737.343 157.071L743.707 150.707ZM714 150L714 151L743 151L743 150L743 149L714 149L714 150Z" fill="#312D2A"/>
<g id="Oracle API Gateway">
<g id="Srv-Oracle API Gateway">
<g id="Group 3">
<path id="Vector_40" d="M429.03 269.522V237.643L443.09 225.532V281.773L429.03 269.522Z" fill="white"/>
<path id="Vector_41" d="M442.394 227.063V280.241L429.725 269.104V237.921L442.394 227.063ZM443.786 224L441.419 225.949L428.751 236.947L428.333 237.364V237.921V269.104V269.8L428.751 270.218L441.419 281.355L443.786 283.443V280.381V227.063V224Z" fill="white"/>
<path id="Vector_42" d="M472.044 225.532L486.105 237.643V269.522L472.044 281.773V225.532Z" fill="white"/>
<path id="Vector_43" d="M472.743 227.063L485.411 237.921V269.104L472.743 280.241V227.063ZM471.351 224V227.063V280.241V283.304L473.718 281.216L486.386 270.079L486.803 269.661V268.965V237.921V237.364L486.386 236.947L473.718 226.088L471.351 224Z" fill="white"/>
<path id="Vector_44" d="M458.123 283.303L457.566 278.292L457.01 283.303H442.949L452.276 226.227H463.135L472.184 283.303H458.123Z" fill="white"/>
<path id="Vector_45" d="M462.58 226.924L471.489 282.608H458.821L457.708 271.471L456.594 282.608H443.926L452.974 226.924H462.58ZM463.833 225.532H462.58H452.835H451.582L451.443 226.645L442.394 282.33L442.116 284H443.786H456.455H457.708H458.682H471.35H473.021L472.742 282.33L463.833 226.645V225.532Z" fill="white"/>
<path id="Vector_46" d="M440.305 231.518L431.813 238.896V268.27L440.305 275.648V231.518Z" fill="white"/>
<path id="Vector_47" d="M429.727 269.244L442.395 280.381V227.063L429.727 237.921V269.244ZM431.815 238.896L440.307 231.518V275.648L431.815 268.13V238.896Z" fill="#2D5967"/>
<path id="Vector_48" d="M474.831 275.648L483.323 268.27V238.896L474.831 231.518V275.648Z" fill="white"/>
<path id="Vector_49" d="M472.741 227.063V280.242L485.409 269.105V237.921L472.741 227.063ZM483.321 268.269L474.829 275.787V231.518L483.321 238.896V268.269Z" fill="#2D5967"/>
<path id="Vector_50" d="M454.644 229.011L446.152 280.519H454.644L457.568 251.007L460.491 280.519H468.983L460.77 229.011H454.644Z" fill="white"/>
<path id="Vector_51" d="M452.835 226.923L443.786 282.608H456.454L457.568 271.471L458.681 282.608H471.35L462.44 226.923C462.579 226.923 452.835 226.923 452.835 226.923ZM460.491 280.52L457.568 251.007L454.644 280.52H446.152L454.644 229.012H460.909L469.122 280.52H460.491Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_3">
<text id="IconLabel_4" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="420.227" y="301.816">Oracle API</tspan></text>
<text id="IconLabel_5" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="426.617" y="317.816">Gateway</tspan></text>
</g>
</g>
<g id="OCI Data Science">
<g id="Srv-OCI Data Science">
<g id="Group_6">
<g id="Group_7">
<g id="Group_8">
<path id="Vector_52" d="M441.959 402.29L437.541 397.872L436.686 395.306L438.966 393.026L443.099 388.893C444.382 387.468 445.95 386.328 447.375 385.187L451.793 381.767C449.94 378.632 448.943 375.211 448.943 371.506C448.943 370.936 448.943 370.223 449.085 369.653H444.097C443.384 371.221 441.817 372.361 439.964 372.361C437.541 372.361 435.403 370.366 435.403 367.943C435.403 365.52 437.399 363.525 439.964 363.525C440.106 363.525 440.391 363.525 440.534 363.525L447.09 352.123C446.52 351.126 446.235 350.271 446.235 349.273C446.235 346.85 448.23 344.712 450.795 344.712C453.361 344.712 455.213 346.708 455.213 349.273C455.213 350.271 454.928 351.126 454.358 351.838L456.781 355.829C460.201 353.263 464.192 351.838 468.61 351.838C473.883 351.838 478.729 353.834 482.434 357.539C486.14 361.244 488.135 366.233 488.135 371.363C488.135 376.494 486.14 381.482 482.434 385.187C478.729 388.893 473.883 390.888 468.61 390.888C464.905 390.888 461.484 389.891 458.349 388.038L454.786 392.598C453.646 394.166 452.363 395.591 451.08 396.874L446.947 401.007L444.667 403.287L441.959 402.29Z" fill="white"/>
<path id="Vector_53" d="M450.653 345.425C452.791 345.425 454.501 347.135 454.501 349.273C454.501 350.271 454.073 351.126 453.503 351.838L456.496 356.827C459.917 354.119 464.05 352.551 468.468 352.551C473.456 352.551 478.301 354.546 481.864 358.109C485.427 361.672 487.423 366.375 487.423 371.506C487.423 376.637 485.427 381.34 481.864 384.903C478.301 388.466 473.598 390.461 468.468 390.461C464.762 390.461 461.057 389.321 458.064 387.325L457.066 388.608L454.216 392.314C453.076 393.739 451.793 395.164 450.51 396.589L446.377 400.722L444.525 402.432L442.387 401.72L438.254 397.587L437.541 395.449L439.537 393.454L443.67 389.321C444.81 388.038 446.235 386.755 447.803 385.615L451.508 382.765L452.791 381.767C450.795 378.774 449.655 375.069 449.655 371.363C449.655 370.508 449.798 369.653 449.798 368.798H443.67C443.242 370.366 441.817 371.506 440.107 371.506C437.969 371.506 436.259 369.796 436.259 367.8C436.259 365.805 437.969 363.952 440.107 363.952C440.392 363.952 440.819 363.952 441.104 364.095L448.088 351.838C447.375 351.126 446.947 350.271 446.947 349.273C446.947 347.135 448.515 345.425 450.653 345.425ZM450.653 344C447.803 344 445.522 346.28 445.522 349.273C445.522 350.271 445.807 351.268 446.377 352.124L440.249 362.527H440.107C437.256 362.527 434.976 364.808 434.976 367.658C434.976 370.508 437.256 372.789 440.249 372.789C442.102 372.789 443.955 371.648 444.81 370.081H448.373C448.373 370.508 448.373 370.936 448.373 371.221C448.373 374.784 449.228 378.204 451.08 381.34L450.795 381.482L447.09 384.333C445.522 385.473 444.097 386.755 442.672 388.181L438.396 392.456L436.401 394.451L435.831 395.021L436.116 395.876L436.829 398.014L436.971 398.299L437.256 398.584L441.389 402.717L441.674 403.002L441.959 403.145L444.097 403.857L444.81 404L445.38 403.43L447.375 401.577L451.508 397.444C452.933 396.019 454.216 394.594 455.356 393.026L458.206 389.321L458.349 389.036C461.342 390.746 464.905 391.743 468.468 391.743C473.883 391.743 479.014 389.606 482.862 385.758C486.71 381.91 488.848 376.779 488.848 371.363C488.848 365.948 486.71 360.817 482.862 356.969C479.014 353.121 473.883 351.126 468.468 351.126C464.192 351.126 460.344 352.409 456.924 354.689L455.213 351.696C455.641 350.841 455.926 349.986 455.926 349.131C455.926 346.28 453.503 344 450.653 344Z" fill="white"/>
</g>
<g id="Group_9">
<path id="Vector_54" d="M443.669 366.66C443.527 366.09 443.242 365.52 442.814 365.093L449.798 352.836C450.083 352.836 450.368 352.979 450.653 352.979C450.938 352.979 451.365 352.979 451.65 352.836L454.073 356.969C454.643 356.399 455.071 355.972 455.641 355.544L453.503 351.839C454.073 351.126 454.501 350.271 454.501 349.273C454.501 347.136 452.791 345.425 450.795 345.425C448.515 345.425 446.947 347.136 446.947 349.273C446.947 350.271 447.375 351.269 448.087 351.981L441.104 364.238C440.677 363.953 440.392 363.953 440.106 363.953C437.969 363.953 436.259 365.663 436.259 367.801C436.259 369.938 437.969 371.506 440.106 371.506C441.817 371.506 443.242 370.366 443.669 368.798H448.23C448.373 368.086 448.373 367.373 448.658 366.66H443.669ZM448.943 349.273C448.943 348.418 449.655 347.563 450.653 347.563C451.508 347.563 452.363 348.276 452.363 349.273C452.363 350.271 451.65 350.983 450.653 350.983C449.798 350.841 448.943 350.128 448.943 349.273ZM440.106 369.368C439.251 369.368 438.396 368.656 438.396 367.658C438.396 366.803 439.109 365.948 440.106 365.948C441.104 365.948 441.817 366.66 441.817 367.658C441.817 368.656 440.962 369.368 440.106 369.368Z" fill="#2D5967"/>
<path id="Vector_55" d="M468.468 390.318C473.456 390.318 478.301 388.323 481.864 384.76C485.427 381.197 487.423 376.494 487.423 371.364C487.423 366.233 485.427 361.53 481.864 357.967C478.301 354.547 473.456 352.551 468.468 352.551C463.48 352.551 458.634 354.547 455.071 358.109C451.508 361.672 449.513 366.375 449.513 371.506C449.513 375.212 450.653 378.917 452.648 381.91L451.366 382.908L447.66 385.758C446.235 386.898 444.81 388.181 443.385 389.463L439.251 393.596L446.377 400.722L450.51 396.589C451.793 395.307 453.076 393.881 454.216 392.314L457.066 388.608L458.064 387.326C461.057 389.178 464.762 390.318 468.468 390.318ZM456.639 359.535C459.774 356.399 464.05 354.689 468.468 354.689C472.886 354.689 477.161 356.399 480.297 359.535C483.432 362.67 485.285 366.946 485.285 371.364C485.285 375.782 483.575 380.057 480.297 383.193C477.161 386.328 472.886 388.038 468.468 388.038C464.05 388.038 459.774 386.328 456.639 383.05C453.503 379.915 451.793 375.639 451.793 371.221C451.793 366.803 453.503 362.67 456.639 359.535ZM455.356 387.183L452.506 390.889C451.366 392.314 450.225 393.596 449.085 394.879L446.52 397.444L442.387 393.311L444.952 390.746C446.235 389.606 447.518 388.323 448.943 387.326L452.648 384.475L453.931 383.478C454.216 383.905 454.643 384.333 455.071 384.76C455.499 385.188 455.926 385.473 456.354 385.9L455.356 387.183Z" fill="#2D5967"/>
<path id="Vector_56" d="M468.468 386.328C472.458 386.328 476.163 384.76 479.014 381.91C484.857 376.066 484.857 366.66 479.014 360.817C476.163 357.967 472.458 356.399 468.468 356.399C464.477 356.399 460.772 357.967 457.921 360.817C452.078 366.66 452.078 376.066 457.921 381.91C460.772 384.76 464.477 386.328 468.468 386.328ZM468.468 358.537C471.888 358.537 475.166 359.819 477.589 362.242C482.577 367.23 482.577 375.354 477.589 380.342C475.166 382.765 471.888 384.047 468.468 384.047C465.047 384.047 461.769 382.765 459.346 380.342C454.358 375.354 454.358 367.23 459.346 362.242C461.769 359.962 465.047 358.537 468.468 358.537Z" fill="#2D5967"/>
<path id="Vector_57" d="M437.398 395.449L438.111 397.587L442.387 401.72L444.524 402.432L445.094 401.72L438.111 394.736L437.398 395.449Z" fill="#2D5967"/>
<path id="Vector_58" d="M460.201 370.651H458.064H457.351C457.351 370.936 457.351 371.221 457.351 371.506C457.351 371.933 457.351 372.361 457.493 372.789H460.344C460.914 376.779 464.477 379.914 468.61 379.914C473.17 379.914 477.018 376.209 477.018 371.506C477.018 366.803 473.313 363.097 468.61 363.097C467.47 363.097 466.472 363.382 465.474 363.667L464.334 361.815L463.907 361.102C463.194 361.387 462.624 361.672 462.054 362.1L463.479 364.665C461.626 366.09 460.344 368.228 460.201 370.651ZM468.467 377.634C465.047 377.634 462.197 374.784 462.197 371.363C462.197 367.943 465.047 365.093 468.467 365.093C471.888 365.093 474.738 367.943 474.738 371.363C474.738 374.784 471.888 377.634 468.467 377.634Z" fill="#2D5967"/>
</g>
</g>
</g>
</g>
<g id="Icon Text Label_4">
<text id="IconLabel_6" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="448.43" y="421.816">OCI</tspan></text>
<text id="IconLabel_7" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="415.141" y="437.816">Data Science</tspan></text>
</g>
</g>
<g id="IAM">
<g id="Srv-OCI Identity and Access Management">
<g id="Group 22">
<path id="Vector_59" d="M800.767 278.984C793.133 275.18 788.577 269.199 788.2 262.627V256.887H756.171V224.172H803.214V245.342L814.827 250.382V262.64C814.45 269.266 809.867 275.234 802.259 279.038L801.52 279.414L800.767 278.984Z" fill="white"/>
<path id="Vector_60" d="M802.543 224.844V245.785L814.183 250.772V262.586C813.82 268.93 809.384 274.683 801.992 278.379L801.548 278.608L801.105 278.379C793.712 274.683 789.263 268.97 788.901 262.586V256.215H756.844V224.844H802.543ZM803.887 223.5H755.5V257.559H787.53V262.479V262.559C787.933 269.427 792.637 275.597 800.473 279.522L800.917 279.737L801.522 280.046L802.113 279.737L802.556 279.522C810.392 275.597 815.11 269.427 815.5 262.599V249.884L814.694 249.535L803.887 244.898V223.5Z" fill="white"/>
<path id="Vector_61" d="M758.834 226.834H800.527V244.159L801.522 243.729L802.516 244.159V224.845H756.844V256.216H787.382V254.226H758.834V226.834Z" fill="#2D5967"/>
<path id="Vector_62" d="M801.52 245.355L788.872 250.732V262.546C789.235 268.89 793.684 274.643 801.077 278.339L801.52 278.568L801.964 278.339C809.356 274.643 813.792 268.931 814.155 262.546V250.772L801.52 245.355ZM812.165 262.479C811.87 267.667 808.375 272.452 802.515 275.812V258.931H800.526V275.839C794.665 272.479 791.117 267.694 790.862 262.506V252.076L800.526 247.936V256.807H802.542V247.936L812.192 252.076L812.165 262.479Z" fill="#2D5967"/>
<path id="Vector_63" d="M783.793 233.541L782.382 234.939L786.091 238.648L793.215 231.525L791.817 230.113L786.091 235.839L783.793 233.541Z" fill="#2D5967"/>
<path id="Vector_64" d="M791.415 247.102L788.807 244.508L791.415 241.901L790.017 240.489L787.409 243.097L784.802 240.489L783.391 241.901L785.998 244.508L783.391 247.102L784.802 248.513L787.409 245.906L790.017 248.513L791.415 247.102Z" fill="#2D5967"/>
<path id="Vector_65" d="M777.004 249.845V245.49C777.004 244.585 776.644 243.716 776.004 243.076C775.364 242.436 774.496 242.076 773.59 242.076H766.87C765.964 242.076 765.096 242.436 764.456 243.076C763.815 243.716 763.456 244.585 763.456 245.49V249.845H765.378V245.49C765.378 245.301 765.415 245.114 765.487 244.94C765.56 244.765 765.665 244.607 765.799 244.473C765.933 244.34 766.091 244.234 766.266 244.161C766.44 244.089 766.627 244.052 766.816 244.052H773.536C773.725 244.052 773.911 244.089 774.085 244.162C774.258 244.234 774.416 244.34 774.549 244.474C774.681 244.608 774.786 244.766 774.857 244.941C774.927 245.115 774.963 245.302 774.961 245.49V249.845H777.004Z" fill="#2D5967"/>
<path id="Vector_66" d="M770.205 240.462C771.119 240.462 772.013 240.191 772.774 239.683C773.534 239.175 774.127 238.453 774.477 237.608C774.827 236.763 774.918 235.833 774.74 234.936C774.561 234.04 774.121 233.216 773.474 232.569C772.828 231.922 772.004 231.482 771.107 231.304C770.21 231.125 769.28 231.217 768.436 231.567C767.591 231.917 766.869 232.509 766.361 233.27C765.853 234.03 765.581 234.924 765.581 235.839C765.581 237.065 766.068 238.241 766.936 239.108C767.803 239.975 768.979 240.462 770.205 240.462ZM770.205 233.204C770.737 233.204 771.256 233.362 771.698 233.657C772.141 233.953 772.485 234.372 772.689 234.864C772.892 235.355 772.945 235.895 772.842 236.417C772.738 236.938 772.482 237.417 772.106 237.793C771.73 238.169 771.251 238.425 770.729 238.529C770.208 238.633 769.667 238.579 769.176 238.376C768.685 238.172 768.265 237.828 767.97 237.386C767.675 236.944 767.517 236.424 767.517 235.892C767.517 235.179 767.8 234.496 768.304 233.991C768.808 233.487 769.492 233.204 770.205 233.204Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_5">
<text id="IconLabel_8" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="742.969" y="297.816">OCI Identity</tspan></text>
<text id="IconLabel_9" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="744.961" y="313.816">and Access</tspan></text>
<text id="IconLabel_10" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="737.18" y="329.816">Management</tspan></text>
</g>
</g>
<g id="Cloud Guard">
<g id="Srv-Oracle Cloud Guard">
<g id="Group 10">
<path id="Vector_67" d="M904.933 280.084C896.065 275.714 890.795 268.774 890.409 261.191V257.335H876.271L876.4 255.664C876.786 250.78 879.613 246.539 883.855 244.225C884.883 243.711 885.654 242.683 885.911 241.526C886.554 238.056 888.867 235.228 892.08 233.814C893.366 233.172 894.908 232.915 896.322 232.915C896.707 232.915 896.964 232.915 897.35 232.915C897.478 232.915 897.607 232.915 897.735 232.915C898.764 232.915 899.792 232.529 900.434 231.758C902.876 229.059 906.347 227.517 910.074 227.517C915.086 227.517 919.585 230.344 921.77 234.714C922.155 235.999 923.184 236.771 924.34 237.028C925.883 237.413 927.297 237.927 928.582 238.827C934.494 242.554 936.55 250.394 933.209 256.564L932.823 257.335H920.87V261.191C920.485 268.774 915.087 275.586 906.347 280.084L905.704 280.47L904.933 280.084Z" fill="white"/>
<path id="Vector_68" d="M909.945 228.288C914.701 228.288 918.942 230.987 921.127 235.228C921.77 236.513 922.926 237.285 924.212 237.67C925.625 237.927 927.039 238.441 928.196 239.341C933.851 242.94 935.779 250.266 932.694 256.178L932.437 256.692H920.227V261.19C919.842 268.517 914.572 275.2 905.961 279.57L905.575 279.698L905.19 279.441C896.578 275.071 891.437 268.388 890.923 261.062V256.692H876.914L877.042 255.664C877.428 251.037 879.998 246.924 884.24 244.868C885.525 244.225 886.296 243.068 886.553 241.783C887.067 238.441 889.252 235.742 892.208 234.457C893.494 233.943 894.908 233.557 896.193 233.557C896.45 233.557 896.835 233.557 897.092 233.557C897.221 233.557 897.35 233.557 897.478 233.557C898.763 233.557 899.792 233.043 900.691 232.144C903.133 229.701 906.475 228.288 909.945 228.288ZM909.945 227.002C906.089 227.002 902.491 228.545 899.92 231.372C899.277 232.015 898.506 232.272 897.735 232.272C897.607 232.272 897.478 232.272 897.478 232.272C897.092 232.272 896.835 232.272 896.45 232.272C894.908 232.272 893.365 232.658 891.951 233.172C888.353 234.714 885.911 237.799 885.139 241.397C884.882 242.297 884.368 243.197 883.469 243.582C878.97 246.024 876.014 250.394 875.629 255.535V256.564L875.5 257.849H876.914H889.638V260.933V261.062C890.152 268.902 895.55 275.971 904.547 280.598L904.933 280.855L905.575 281.112L906.218 280.855L906.603 280.598C915.6 276.1 921.127 269.031 921.512 261.19V257.849H932.437H933.208L933.594 257.206L933.851 256.692C937.321 250.266 935.136 242.04 928.967 238.184C927.553 237.285 926.139 236.642 924.469 236.385C923.44 236.128 922.669 235.485 922.155 234.586C919.842 229.959 915.215 227.002 909.945 227.002Z" fill="white"/>
<path id="Vector_69" d="M928.196 239.34C926.911 238.569 925.626 237.926 924.212 237.669C922.798 237.412 921.642 236.512 921.127 235.227C918.943 230.986 914.701 228.287 909.946 228.287C906.475 228.287 903.134 229.7 900.82 232.271C899.921 233.299 898.635 233.813 897.222 233.556C895.422 233.428 893.751 233.685 892.209 234.456C889.253 235.741 887.068 238.44 886.425 241.653C886.168 242.939 885.269 244.095 884.112 244.738C879.999 246.923 877.3 250.907 876.914 255.534L876.786 256.562H889.381V254.635H878.971C879.613 251.036 881.798 248.08 885.012 246.28C886.811 245.381 887.968 243.71 888.353 241.91C888.867 239.34 890.667 237.155 892.98 236.127C894.265 235.613 895.679 235.356 896.964 235.484C898.892 235.741 900.82 234.97 902.106 233.556C904.033 231.371 906.99 230.215 909.817 230.215C913.801 230.215 917.529 232.399 919.2 236.127C920.099 237.926 921.642 239.083 923.569 239.597C924.855 239.854 925.883 240.368 927.04 241.011C931.667 243.967 933.466 249.879 931.024 254.892H921.77V256.82H932.438L932.695 256.305C935.908 250.265 933.852 242.81 928.196 239.34Z" fill="#2D5967"/>
<path id="Vector_70" d="M890.922 247.438V261.062C891.308 268.388 896.577 275.071 905.189 279.441L905.574 279.698L905.96 279.441C914.571 275.071 919.712 268.388 920.226 261.062V247.309L905.574 241.14L890.922 247.438ZM918.298 261.062C917.913 267.36 913.671 273.143 906.474 277.128V275.457V256.82H904.546V275.457V277.128C897.349 273.143 893.107 267.36 892.722 261.062V248.723L904.546 243.711V245.253V254.507H906.474V245.253V243.711L918.298 248.723V261.062Z" fill="#2D5967"/>
</g>
</g>
<g id="Icon Text Label_6">
<text id="IconLabel_11" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="859.352" y="298.816">Oracle Cloud</tspan></text>
<text id="IconLabel_12" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="883.461" y="314.816">Guard</tspan></text>
</g>
</g>
<g id="Monitoring">
<g id="Srv-OCI Monitoring">
<g id="Group_10">
<g id="Group_11">
<g id="Group_12">
<path id="Vector_71" d="M759.35 418.286C757.639 418.286 756.214 416.857 756.214 415.143V362.857C756.214 361.143 757.639 359.714 759.35 359.714H811.654C813.364 359.714 814.789 361.143 814.789 362.857V415.286C814.789 417 813.364 418.429 811.654 418.429L759.35 418.286Z" fill="white"/>
<path id="Vector_72" d="M811.51 360.429C812.792 360.429 813.932 361.571 813.932 362.857V415.286C813.932 416.571 812.792 417.714 811.51 417.714H759.348C758.065 417.571 756.925 416.429 756.925 415.143V362.857C756.925 361.571 758.065 360.429 759.348 360.429H811.51ZM811.51 359H759.348C757.21 359 755.5 360.714 755.5 362.857V415.286C755.5 417.286 757.21 419 759.348 419H811.652C813.79 419 815.5 417.286 815.5 415.143V362.857C815.357 360.714 813.647 359 811.51 359Z" fill="white"/>
</g>
<g id="Group_13">
<path id="Vector_73" d="M811.51 360.429H759.348C758.066 360.429 756.926 361.572 756.926 362.858V415.286C756.926 416.429 758.066 417.572 759.348 417.572H767.757H773.6H782.721H788.565H797.686H803.529H811.653C812.935 417.572 814.075 416.429 814.075 415.143V362.858C813.933 361.572 812.793 360.429 811.51 360.429ZM759.063 376.858H811.795V379.572L799.966 388.715L785.144 384.715L770.465 396.286L759.063 391.001V376.858ZM759.348 362.572H811.653C811.795 362.572 811.938 362.715 811.938 362.858V374.715H759.206V362.858C759.063 362.715 759.206 362.572 759.348 362.572ZM769.895 415.429V406.429H771.462V415.429H769.895ZM784.717 415.429V394.858H786.284V415.429H784.717ZM799.681 415.429V398.858H801.249V415.572H799.681V415.429ZM811.51 415.429H803.386V396.715H797.543V415.429H788.422V392.715H782.579V415.429H773.458V404.286H767.757V415.429H759.348C759.206 415.429 759.063 415.286 759.063 415.143V393.286L770.75 398.715L785.572 387.001L800.394 391.001L811.795 382.286V415.286C811.795 415.286 811.653 415.429 811.51 415.429Z" fill="#2D5967"/>
<path id="Vector_74" d="M768.469 365.143H761.628V372H768.469V365.143ZM766.473 370H763.766V367.285H766.331L766.473 370Z" fill="#2D5967"/>
</g>
</g>
</g>
</g>
<g id="Icon Text Label_7">
<text id="IconLabel_13" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="730.195" y="436.816">OCI Monitoring</tspan></text>
</g>
</g>
<g id="Logging">
<g id="Srv-OCI Logging">
<g id="Group_14">
<g id="Group_15">
<path id="Vector_75" d="M893.388 417.188L891.438 416.631L889.209 414.401H878.623C877.091 414.401 875.698 413.147 875.698 411.475V363.123C875.698 361.59 876.951 360.196 878.623 360.196H926.957C928.629 360.196 929.882 361.45 929.882 363.123V376.221C935.593 382.909 935.593 392.942 929.882 399.77V411.475C929.882 413.147 928.629 414.401 926.957 414.401H897.149L893.806 417.745L893.388 417.188Z" fill="white"/>
<path id="Vector_76" d="M926.956 360.892C928.21 360.892 929.185 361.867 929.185 363.121V376.499C934.896 383.048 934.896 392.941 929.185 399.49V411.474C929.185 412.728 928.21 413.703 926.956 413.703H896.73L893.804 416.63L891.854 415.933L889.486 413.564H878.622C877.368 413.564 876.393 412.589 876.393 411.335V363.121C876.393 361.867 877.368 360.892 878.622 360.892H926.956ZM926.956 359.499H878.622C876.672 359.499 875 361.171 875 363.121V411.474C875 413.425 876.672 415.097 878.622 415.097H888.929L890.879 417.048L891.158 417.326L891.436 417.466L892.969 418.023L893.665 418.999L894.919 417.884L897.565 415.376H927.095C929.045 415.376 930.717 413.703 930.717 411.753V399.908C936.428 392.941 936.428 382.769 930.717 375.941V363.121C930.577 361.171 928.906 359.499 926.956 359.499Z" fill="white"/>
</g>
<g id="Group_16">
<path id="Vector_77" d="M927.232 411.475C927.232 411.615 927.093 411.754 926.954 411.754H900.906C900.767 411.894 900.627 412.033 900.488 412.172L898.956 413.705H926.954C928.207 413.705 929.182 412.73 929.182 411.475V401.582C928.625 402.139 927.929 402.697 927.232 403.254V411.475Z" fill="#2D5967"/>
<path id="Vector_78" d="M886.7 412.867L886.561 412.588L886.282 411.752H878.621C878.482 411.752 878.343 411.613 878.343 411.473V363.121C878.343 362.982 878.482 362.842 878.621 362.842H926.955C927.095 362.842 927.234 362.982 927.234 363.121V372.736C927.93 373.293 928.627 373.851 929.184 374.408V363.26C929.184 362.006 928.209 361.031 926.955 361.031H878.621C877.367 360.892 876.392 361.867 876.392 363.121V411.473C876.392 412.728 877.367 413.703 878.621 413.703H887.536L886.979 413.146L886.7 412.867Z" fill="#2D5967"/>
<path id="Vector_79" d="M882.103 372.04H883.496V365.909H882.521L880.711 367.163V367.999L882.103 367.442V372.04Z" fill="#2D5967"/>
<path id="Vector_80" d="M887.256 370.786H885.863V372.039H887.256V370.786Z" fill="#2D5967"/>
<path id="Vector_81" d="M887.256 367.441H885.863V368.695H887.256V367.441Z" fill="#2D5967"/>
<path id="Vector_82" d="M891.016 372.04L892.409 369.671L893.802 372.04H895.334L893.384 368.835L895.195 365.769H893.663L892.409 367.999L891.155 365.769H889.623L891.434 368.835L889.623 372.04H891.016Z" fill="#2D5967"/>
<path id="Vector_83" d="M899.792 365.627C898.817 365.627 898.121 365.906 897.703 366.464C897.146 367.021 896.867 367.857 896.867 368.832C896.867 369.808 897.146 370.644 897.563 371.201C898.121 371.759 898.817 372.037 899.653 372.037C900.628 372.037 901.324 371.759 901.742 371.201C902.299 370.644 902.439 369.808 902.439 368.832C902.439 367.857 902.16 367.021 901.742 366.464C901.464 365.906 900.767 365.627 899.792 365.627ZM901.046 370.504C900.767 370.923 900.349 371.062 899.931 371.062C899.514 371.062 898.956 370.783 898.678 370.504C898.399 370.226 898.26 369.668 898.26 368.972C898.26 368.275 898.399 367.718 898.678 367.439C898.956 367.021 899.374 366.882 899.792 366.882C900.21 366.882 900.628 367.021 900.906 367.439C901.185 367.857 901.324 368.275 901.324 368.972C901.324 369.529 901.185 370.086 901.046 370.504Z" fill="#2D5967"/>
<path id="Vector_84" d="M909.962 365.769H908.43L907.176 367.859L905.923 365.769H904.391L906.201 368.835L904.391 372.04H905.783C905.783 372.04 905.923 372.04 905.923 371.9L907.176 369.671L907.873 370.785C908.291 370.646 908.709 370.367 909.126 370.228L908.291 368.695L909.962 365.769Z" fill="#2D5967"/>
<path id="Vector_85" d="M916.786 366.463C916.229 365.906 915.532 365.627 914.697 365.627C913.722 365.627 913.025 365.906 912.607 366.463C912.05 367.02 911.911 367.856 911.911 368.831C911.911 369.11 911.911 369.249 911.911 369.388C912.189 369.388 912.607 369.249 913.164 369.249C913.164 369.11 913.164 368.97 913.164 368.97C913.164 368.274 913.304 367.717 913.582 367.438C913.861 367.02 914.279 366.881 914.697 366.881C915.114 366.881 915.532 367.02 915.811 367.438C916.09 367.856 916.229 368.274 916.229 368.97V369.11C916.647 369.11 917.204 369.11 917.622 369.11V368.97C917.482 367.856 917.343 367.02 916.786 366.463Z" fill="#2D5967"/>
<path id="Vector_86" d="M924.866 365.769H923.334L922.08 367.859L920.827 365.769H919.294L921.105 368.835L920.687 369.671C921.105 369.81 921.523 369.949 921.941 369.949L922.08 369.671L922.359 370.089C923.055 370.367 923.752 370.646 924.309 370.925L923.055 368.835L924.866 365.769Z" fill="#2D5967"/>
<path id="Vector_87" d="M883.217 381.236C883.495 380.818 883.774 380.54 884.053 380.261C884.331 379.982 884.47 379.704 884.47 379.425C884.61 379.146 884.749 379.007 884.749 378.728C884.749 378.171 884.61 377.753 884.192 377.474C883.774 377.195 883.356 377.056 882.66 377.056C882.381 377.056 882.102 377.056 881.685 377.195C881.406 377.335 881.127 377.335 880.849 377.474V378.589C881.406 378.31 881.963 378.171 882.381 378.171C883.077 378.171 883.356 378.45 883.356 379.007C883.356 379.007 883.356 379.146 883.356 379.286C883.356 379.425 883.217 379.564 883.077 379.843C882.938 379.982 882.66 380.261 882.381 380.679L880.849 382.351V383.187H884.749V382.073H882.381L883.217 381.236Z" fill="#2D5967"/>
<path id="Vector_88" d="M887.256 381.934H885.863V383.188H887.256V381.934Z" fill="#2D5967"/>
<path id="Vector_89" d="M887.256 378.728H885.863V379.982H887.256V378.728Z" fill="#2D5967"/>
<path id="Vector_90" d="M895.335 377.056H893.803L892.549 379.146L891.295 377.056H889.763L891.574 379.982L889.763 383.187H891.156L892.549 380.958L893.942 383.187H895.474L893.524 379.982L895.335 377.056Z" fill="#2D5967"/>
<path id="Vector_91" d="M897.842 377.753C897.285 378.311 897.006 379.147 897.006 380.122C897.006 381.098 897.285 381.934 897.703 382.491C897.842 381.934 898.12 381.237 898.26 380.679C898.26 380.54 898.26 380.261 898.26 379.983C898.26 379.286 898.399 378.729 898.678 378.45C898.956 378.171 899.235 377.893 899.792 377.893C900.07 377.475 900.21 377.196 900.488 376.778C900.349 376.778 900.07 376.778 899.792 376.778C899.095 376.917 898.399 377.196 897.842 377.753Z" fill="#2D5967"/>
<path id="Vector_92" d="M903.971 402.556L901.324 405.9C900.349 407.154 899.235 408.408 898.121 409.662L895.753 412.031L891.852 408.269L894.22 405.9C895.335 404.785 896.588 403.671 897.981 402.695L901.464 400.187C901.046 399.63 900.628 399.212 900.21 398.654L896.728 401.162C895.335 402.138 894.081 403.392 892.827 404.507L889.067 408.269L895.613 414.818L899.374 411.056C900.628 409.802 901.742 408.548 902.717 407.154L905.503 403.81C905.085 403.392 904.528 402.974 903.971 402.556Z" fill="#2D5967"/>
<path id="Vector_93" d="M887.953 409.522L887.257 410.08L887.953 412.17L891.853 415.932L893.803 416.629L894.5 415.932L887.953 409.522Z" fill="#2D5967"/>
<path id="Vector_94" d="M915.952 405.344C920.409 405.344 924.866 403.672 928.349 400.188C935.174 393.36 935.174 382.352 928.349 375.524C921.523 368.696 910.519 368.696 903.694 375.524C896.869 382.352 896.869 393.36 903.694 400.188C907.037 403.672 911.494 405.344 915.952 405.344ZM905.087 376.918C908.151 373.852 912.052 372.319 916.091 372.319C920.131 372.319 924.031 373.852 927.095 376.918C933.085 382.909 933.085 392.803 927.095 398.795C921.106 404.787 911.216 404.787 905.087 398.795C898.958 392.803 898.958 383.049 905.087 376.918Z" fill="#2D5967"/>
<path id="Vector_95" d="M910.935 393.499C912.607 393.499 913.86 392.942 914.696 392.106C915.532 391.13 915.95 389.737 915.95 387.926C915.95 386.114 915.532 384.721 914.557 383.745C913.721 382.77 912.467 382.212 910.796 382.212C909.124 382.212 908.01 382.77 907.035 383.745C906.199 384.721 905.642 386.114 905.642 387.926C905.642 389.737 906.06 391.13 907.035 392.106C908.149 392.942 909.264 393.499 910.935 393.499ZM908.985 385.139C909.403 384.442 910.099 384.163 911.075 384.163C911.91 384.163 912.607 384.442 913.164 385.139C913.582 385.835 913.86 386.671 913.86 387.786C913.86 388.901 913.582 389.876 913.164 390.573C912.746 391.27 911.91 391.548 910.935 391.548C910.099 391.548 909.403 391.27 908.846 390.573C908.428 389.876 908.149 389.04 908.149 387.786C908.289 386.671 908.428 385.696 908.985 385.139Z" fill="#2D5967"/>
<path id="Vector_96" d="M922.359 386.114L920.13 382.352H917.484L920.688 387.507L917.345 393.081H919.852L922.22 389.04L924.588 393.081H924.866C925.284 392.385 925.563 391.688 925.841 390.852L923.752 387.507L925.702 384.303C925.424 383.606 925.145 382.909 924.727 382.212H924.448L922.359 386.114Z" fill="#2D5967"/>
<path id="Vector_97" d="M915.951 401.719C919.433 401.719 923.054 400.326 925.701 397.678C931.133 392.244 931.133 383.604 925.701 378.17C920.269 372.736 911.633 372.736 906.2 378.17C903.554 380.818 902.161 384.301 902.161 387.924C902.161 391.547 903.554 395.031 906.2 397.678C908.986 400.326 912.468 401.719 915.951 401.719ZM907.593 379.564C909.961 377.195 912.886 376.08 915.951 376.08C919.015 376.08 922.079 377.195 924.308 379.564C928.905 384.162 928.905 391.686 924.308 396.285C919.711 400.883 912.19 400.883 907.593 396.285C905.364 394.055 904.111 391.129 904.111 387.924C904.111 384.719 905.364 381.793 907.593 379.564Z" fill="#2D5967"/>
</g>
</g>
</g>
<g id="Icon Text Label_8">
<text id="IconLabel_14" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="860.125" y="436.816">OCI Logging</tspan></text>
</g>
</g>
<g id="Group 1247">
<g id="OCI Subnet Boxes_New">
<rect x="743.5" y="38.5" width="162" height="158" stroke="#AA643B" stroke-dasharray="8 4"/>
<text id="Subnet" fill="#AE562C" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="751" y="59.816">Training/</tspan></text>
<text id="Subnet_2" fill="#AE562C" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="751" y="75.816">Fine Tuning</tspan></text>
</g>
<g id="Container Engine for Kubernetes">
<g id="Srv-OCI Kubernetes Engine">
<g id="Group_17">
<g id="Group_18">
<path id="Vector_98" d="M797.795 142.986C796.081 142.986 794.653 141.558 794.653 139.844V87.5579C794.653 85.8436 796.081 84.415 797.795 84.415H850.224C851.938 84.415 853.367 85.8436 853.367 87.5579V139.986C853.367 141.701 851.938 143.129 850.224 143.129L797.795 142.986Z" fill="white"/>
<path id="Vector_99" d="M850.081 85.1293C851.367 85.1293 852.51 86.2721 852.51 87.5578V139.986C852.51 141.272 851.367 142.415 850.081 142.415H797.795C796.51 142.272 795.367 141.129 795.367 139.844V87.5578C795.367 86.2721 796.51 85.1293 797.795 85.1293H850.081ZM850.081 83.7007H797.795C795.653 83.7007 793.938 85.415 793.938 87.5578V139.986C793.938 141.986 795.653 143.701 797.795 143.701H850.224C852.367 143.701 854.081 141.986 854.081 139.844V87.5578C853.938 85.415 852.224 83.7007 850.081 83.7007Z" fill="white"/>
</g>
<g id="Group_19">
<path id="Vector_100" d="M850.081 85.1294H797.795C796.51 85.1294 795.367 86.2723 795.367 87.558V139.987C795.367 141.129 796.51 142.272 797.795 142.272H850.224C851.51 142.272 852.653 141.129 852.653 139.844V87.558C852.51 86.2723 851.367 85.1294 850.081 85.1294ZM850.367 139.844C850.367 139.987 850.224 140.129 850.081 140.129H797.795C797.653 140.129 797.51 139.987 797.51 139.844V87.558C797.51 87.4151 797.653 87.2723 797.795 87.2723H850.224C850.367 87.2723 850.51 87.4151 850.51 87.558L850.367 139.844Z" fill="#2D5967"/>
<path id="Vector_101" d="M823.081 91.415H810.367V104.129H823.081V91.415ZM820.938 102.129H812.51V93.5579H820.938V102.129Z" fill="#2D5967"/>
<path id="Vector_102" d="M837.367 91.415H824.653V104.129H837.367C837.224 104.129 837.224 91.415 837.367 91.415ZM835.224 102.129H826.796V93.5579H835.224V102.129Z" fill="#2D5967"/>
<path id="Vector_103" d="M819.653 107.844H828.224V111.272L830.224 111.701V105.701H817.653V111.701L819.653 111.272V107.844Z" fill="#2D5967"/>
<path id="Vector_104" d="M833.938 107.844H842.51V114.844L844.51 115.272V105.701H831.938V112.129L833.938 112.701V107.844Z" fill="#2D5967"/>
<path id="Vector_105" d="M805.367 107.844H813.938V112.701L815.938 112.129V105.701H803.367V115.272L805.367 114.844V107.844Z" fill="#2D5967"/>
<path id="Vector_106" d="M823.938 111.844L801.367 117.415L801.653 118.415C804.224 128.701 813.367 135.844 823.938 135.844C834.51 135.844 843.796 128.701 846.224 118.415L846.51 117.415L823.938 111.844ZM822.938 114.272V133.701C814.081 133.415 806.51 127.415 803.938 118.987L822.938 114.272ZM824.938 133.701V114.272L843.938 118.987C841.367 127.415 833.796 133.415 824.938 133.701Z" fill="#2D5967"/>
</g>
</g>
</g>
<g id="Icon Text Label_9">
<text id="IconLabel_15" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="767.54" y="161.517">OCI Kubernetes</tspan></text>
<text id="IconLabel_16" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="798.673" y="177.517">Engine</tspan></text>
</g>
</g>
</g>
<g id="Container Engine for Kubernetes_2">
<g id="Srv-OCI Kubernetes Engine_2">
<g id="Group_20">
<g id="Group_21">
<path id="Vector_107" d="M429.357 145.286C427.643 145.286 426.214 143.857 426.214 142.143V89.8572C426.214 88.1429 427.643 86.7144 429.357 86.7144H481.786C483.5 86.7144 484.929 88.1429 484.929 89.8572V142.286C484.929 144 483.5 145.429 481.786 145.429L429.357 145.286Z" fill="white"/>
<path id="Vector_108" d="M481.643 87.4286C482.929 87.4286 484.071 88.5714 484.071 89.8571V142.286C484.071 143.571 482.929 144.714 481.643 144.714H429.357C428.071 144.571 426.929 143.429 426.929 142.143V89.8571C426.929 88.5714 428.071 87.4286 429.357 87.4286H481.643ZM481.643 86H429.357C427.214 86 425.5 87.7143 425.5 89.8571V142.286C425.5 144.286 427.214 146 429.357 146H481.786C483.929 146 485.643 144.286 485.643 142.143V89.8571C485.5 87.7143 483.786 86 481.643 86Z" fill="white"/>
</g>
<g id="Group_22">
<path id="Vector_109" d="M481.643 87.4287H429.357C428.071 87.4287 426.929 88.5716 426.929 89.8573V142.286C426.929 143.429 428.071 144.572 429.357 144.572H481.786C483.071 144.572 484.214 143.429 484.214 142.143V89.8573C484.071 88.5716 482.929 87.4287 481.643 87.4287ZM481.929 142.143C481.929 142.286 481.786 142.429 481.643 142.429H429.357C429.214 142.429 429.071 142.286 429.071 142.143V89.8573C429.071 89.7144 429.214 89.5716 429.357 89.5716H481.786C481.929 89.5716 482.071 89.7144 482.071 89.8573L481.929 142.143Z" fill="#2D5967"/>
<path id="Vector_110" d="M454.643 93.7144H441.929V106.429H454.643V93.7144ZM452.5 104.429H444.071V95.8572H452.5V104.429Z" fill="#2D5967"/>
<path id="Vector_111" d="M468.929 93.7144H456.214V106.429H468.929C468.786 106.429 468.786 93.7144 468.929 93.7144ZM466.786 104.429H458.357V95.8572H466.786V104.429Z" fill="#2D5967"/>
<path id="Vector_112" d="M451.214 110.143H459.786V113.571L461.786 114V108H449.214V114L451.214 113.571V110.143Z" fill="#2D5967"/>
<path id="Vector_113" d="M465.5 110.143H474.071V117.143L476.071 117.571V108H463.5V114.429L465.5 115V110.143Z" fill="#2D5967"/>
<path id="Vector_114" d="M436.929 110.143H445.5V115L447.5 114.429V108H434.929V117.571L436.929 117.143V110.143Z" fill="#2D5967"/>
<path id="Vector_115" d="M455.5 114.143L432.929 119.714L433.214 120.714C435.786 131 444.929 138.143 455.5 138.143C466.071 138.143 475.357 131 477.786 120.714L478.071 119.714L455.5 114.143ZM454.5 116.572V136C445.643 135.715 438.071 129.715 435.5 121.286L454.5 116.572ZM456.5 136V116.572L475.5 121.286C472.929 129.715 465.357 135.715 456.5 136Z" fill="#2D5967"/>
</g>
</g>
</g>
<g id="Icon Text Label_10">
<text id="IconLabel_17" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="399.102" y="163.816">OCI Kubernetes</tspan></text>
<text id="IconLabel_18" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="430.234" y="179.816">Engine</tspan></text>
</g>
</g>
<g id="Group 1245">
<g id="X-Ray">
<g id="Group 1453">
<g id="Group_23">
<path id="Vector_116" d="M79.4202 92.8293H66.3672C68.9749 91.219 70.7134 88.369 70.7134 85.12C70.7134 80.0897 66.5809 76 61.4937 76C56.4064 76 52.5019 80.0043 52.5019 85.12C52.5019 88.4117 54.1407 91.2332 56.6629 92.8293H43.5529C42.0994 92.8293 40.9167 94.012 40.9167 95.4655V118.052C40.9167 119.505 42.0994 120.688 43.5529 120.688H51.3192V131.575C51.3192 132.359 51.9604 133 52.7442 133H70.2432C71.0269 133 71.6682 132.359 71.6682 131.575V120.688H79.4344C80.8879 120.688 82.0707 119.505 82.0707 118.052V95.4655C82.0707 94.012 80.8879 92.8293 79.4344 92.8293H79.4202Z" fill="white"/>
<path id="Subtract" d="M61.2537 95.3164C61.7966 95.3165 62.2449 95.8472 62.2449 96.4902V116.359C62.2449 117.002 61.7966 117.533 61.2537 117.533C60.7107 117.533 60.2625 117.002 60.2625 116.359V96.4902C60.2625 95.8472 60.7107 95.3164 61.2537 95.3164Z" fill="#2D5967"/>
</g>
<path id="Vector_117" d="M61.4935 92.7863C57.247 92.7863 53.9267 89.4233 53.9267 85.1198C53.9267 80.8163 57.247 77.4248 61.4935 77.4248C65.74 77.4248 69.3025 80.8733 69.3025 85.1341C69.3025 89.3948 65.797 92.8006 61.4935 92.8006V92.7863ZM61.4935 79.3058C58.3157 79.3058 55.822 81.8566 55.822 85.1198C55.822 88.3831 58.3157 90.8911 61.4935 90.8911C64.6712 90.8911 67.4072 88.2976 67.4072 85.1198C67.4072 81.9421 64.7567 79.3058 61.4935 79.3058Z" fill="#2D5967"/>
<path id="Vector_118" d="M62.4342 120.703H60.5389V131.59H62.4342V120.703Z" fill="#2D5967"/>
<path id="Vector_119" d="M54.6395 120.703H52.7442V131.59H54.6395V120.703Z" fill="#2D5967"/>
<path id="Vector_120" d="M70.2432 120.703H68.3479V131.59H70.2432V120.703Z" fill="#2D5967"/>
<path id="Vector_121" d="M79.4202 94.2397H43.5529C42.8832 94.2397 42.3274 94.7955 42.3274 95.4652V118.051C42.3274 118.721 42.8832 119.277 43.5529 119.277H79.4202C80.0899 119.277 80.6457 118.721 80.6457 118.051V95.4652C80.6457 94.7955 80.0899 94.2397 79.4202 94.2397ZM78.7504 117.382H44.2227V96.135H78.7504V117.382Z" fill="#2D5967"/>
<g id="Group_24">
<path id="Vector_122" d="M71.4594 99.1947C71.9209 98.8961 72.0566 98.2852 71.758 97.8372C71.4594 97.3757 70.8485 97.24 70.4005 97.5386C68.4865 98.7603 65.9616 100.118 63.7354 100.511V102.507C65.9073 102.195 68.5001 101.095 71.4594 99.1947Z" fill="#2D5967"/>
<path id="Vector_123" d="M74.0793 102.425C73.8485 101.936 73.2648 101.733 72.8033 101.977C69.8983 103.47 66.8576 104.366 63.7354 104.665V106.647C67.1426 106.348 70.482 105.371 73.6585 103.742C74.1336 103.497 74.3236 102.9 74.0928 102.425H74.0793Z" fill="#2D5967"/>
<path id="Vector_124" d="M73.6177 108.819C74.1471 108.628 74.405 108.058 74.2014 107.543C73.9978 107.027 73.4141 106.782 72.8847 106.972C68.7851 108.479 65.663 108.791 63.7218 108.805V110.773C65.8259 110.773 69.206 110.434 73.6041 108.819H73.6177Z" fill="#2D5967"/>
<path id="Vector_125" d="M51.7353 97.5385C51.2874 97.2398 50.6629 97.362 50.3643 97.81C50.0657 98.2579 50.1878 98.8824 50.6358 99.181C53.9752 101.421 56.8394 102.208 58.7942 102.453V100.471C57.0973 100.226 54.6539 99.4932 51.7353 97.5385Z" fill="#2D5967"/>
<path id="Vector_126" d="M49.4412 101.99C48.9797 101.732 48.396 101.909 48.1517 102.398C47.9073 102.873 48.0838 103.47 48.5453 103.728C50.6765 104.895 54.0974 106.294 58.8078 106.66V104.678C54.5046 104.325 51.396 103.049 49.4548 101.99H49.4412Z" fill="#2D5967"/>
<path id="Vector_127" d="M49.6855 106.972C49.1561 106.782 48.5724 107.04 48.3687 107.542C48.1651 108.058 48.4366 108.628 48.9525 108.818C53.3099 110.42 56.6764 110.76 58.7805 110.773V108.805C56.8393 108.791 53.7307 108.479 49.6719 106.972H49.6855Z" fill="#2D5967"/>
<g id="Group_25">
<path id="Vector_128" d="M73.3191 112.877C73.1562 112.362 72.6132 112.063 72.0838 112.212C69.2331 113.068 65.9209 113.325 63.7354 113.393V115.375C66.043 115.307 69.5589 115.036 72.6539 114.099C73.1697 113.936 73.4684 113.393 73.3191 112.864V112.877Z" fill="#2D5967"/>
<path id="Vector_129" d="M50.4459 112.226C49.9165 112.063 49.3735 112.361 49.2106 112.891C49.0477 113.407 49.3464 113.963 49.8758 114.126C52.9708 115.063 56.4866 115.334 58.7943 115.402V113.42C56.5952 113.352 53.283 113.094 50.4459 112.239V112.226Z" fill="#2D5967"/>
</g>
</g>
</g>
</g>
<text id="Devices" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="33.4766" y="148.816">Devices</tspan></text>
<g id="Group 1248">
<path id="Vector 3" d="M59.2929 220.707C59.6834 221.098 60.3166 221.098 60.7071 220.707L67.0711 214.343C67.4616 213.953 67.4616 213.319 67.0711 212.929C66.6805 212.538 66.0474 212.538 65.6569 212.929L60 218.586L54.3431 212.929C53.9526 212.538 53.3195 212.538 52.9289 212.929C52.5384 213.319 52.5384 213.953 52.9289 214.343L59.2929 220.707ZM60 155L59 155L59 220L60 220L61 220L61 155L60 155Z" fill="#312D2A"/>
<text id="PACS/&#226;&#128;&#168;VNA" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="36.0547" y="303.816">PACS/&#x2028;</tspan><tspan x="43.0312" y="319.816">VNA</tspan></text>
</g>
<g id="Group 1246">
<g id="Object Storage">
<g id="Srv-OCI Object Storage">
<g id="Group_26">
<g id="Group_27">
<g id="Group_28">
<path id="Vector_130" d="M609.423 145.286C607.713 145.286 606.288 143.857 606.288 142.143V89.8572C606.288 88.1429 607.713 86.7144 609.423 86.7144H661.727C663.438 86.7144 664.863 88.1429 664.863 89.8572V142.286C664.863 144 663.438 145.429 661.727 145.429L609.423 145.286Z" fill="white"/>
<path id="Vector_131" d="M661.583 87.4286C662.866 87.4286 664.006 88.5714 664.006 89.8571V142.286C664.006 143.571 662.866 144.714 661.583 144.714H609.422C608.139 144.571 606.999 143.429 606.999 142.143V89.8571C606.999 88.5714 608.139 87.4286 609.422 87.4286H661.583ZM661.583 86H609.422C607.284 86 605.574 87.7143 605.574 89.8571V142.286C605.574 144.286 607.284 146 609.422 146H661.726C663.863 146 665.574 144.286 665.574 142.143V89.8571C665.431 87.7143 663.721 86 661.583 86Z" fill="white"/>
</g>
<g id="Group_29">
<g id="Group_30">
<path id="Vector_132" d="M648.899 102.572L652.747 109.286L648.899 116H641.203L637.355 109.286L641.203 102.572H648.899ZM650.181 100.572H639.92L634.789 109.429L639.92 118.286H650.181L655.312 109.429L650.181 100.572Z" fill="#2D5967"/>
</g>
<g id="Group_31">
<path id="Vector_133" d="M635.073 123C638.779 123 641.772 126 641.772 129.714C641.772 133.429 638.779 136.429 635.073 136.429C631.368 136.429 628.375 133.429 628.375 129.714C628.375 126 631.368 123 635.073 123ZM635.073 121C630.228 121 626.237 125 626.237 129.857C626.237 134.714 630.228 138.714 635.073 138.714C639.919 138.714 643.909 134.714 643.909 129.857C643.909 124.857 639.919 121 635.073 121Z" fill="#2D5967"/>
</g>
<g id="Group_32">
<path id="Vector_134" d="M624.955 104.286L631.226 115.572H618.827L624.955 104.286ZM624.955 100L615.264 117.715H634.789L624.955 100Z" fill="#2D5967"/>
</g>
</g>
<g id="Group_33">
<path id="Vector_135" d="M661.584 144.572H609.422C608.139 144.572 606.999 143.429 606.999 142.144V93.1436H664.006V142.144C664.006 143.429 662.866 144.572 661.584 144.572ZM609.137 95.2864V142.286C609.137 142.429 609.28 142.572 609.422 142.572H661.726C661.869 142.572 662.011 142.429 662.011 142.286V95.2864H609.137Z" fill="#2D5967"/>
</g>
<g id="Group_34">
<path id="Vector_136" d="M664.006 91.5721H606.999V89.8578C606.999 88.5721 608.139 87.4292 609.422 87.4292H661.726C662.866 87.4292 664.006 88.5721 664.006 89.8578V91.5721Z" fill="#2D5967"/>
</g>
</g>
</g>
</g>
<g id="Icon Text Label_11">
<text id="IconLabel_19" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="596.941" y="163.816">OCI Object</tspan></text>
<text id="IconLabel_20" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="607.761" y="179.816">Storage</tspan></text>
</g>
</g>
<g id="OCI Subnet Boxes_New_2">
<rect x="559.5" y="38.5" width="153" height="416" stroke="#AA643B" stroke-dasharray="8 4"/>
<text id="Subnet_3" fill="#AE562C" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" font-weight="600" letter-spacing="0em"><tspan x="567" y="59.816">DICOM Store</tspan></text>
</g>
<g id="Group 15_2">
<path id="Vector_137" d="M638.339 236.704C646.035 236.704 660.448 238.227 660.448 243.978V286.04C660.448 291.678 645.986 293.088 638.339 293.088C630.692 293.088 616.241 291.678 616.241 286.04V243.978C616.241 238.227 630.704 236.704 638.339 236.704ZM638.339 235.295C634.441 235.295 615 235.718 615 243.978V286.04C615 294.117 634.441 294.497 638.339 294.497C642.237 294.497 661.69 294.088 661.69 286.04V243.978C661.69 235.718 642.311 235.295 638.339 235.295Z" fill="white"/>
<g id="Database-Server">
<g id="Group 310">
<path id="Vector_138" d="M614.618 282.381V280.328L617.202 279.092H617.783V231.684H643.211V250.059C644.585 249.564 646.006 249.208 647.451 248.995L648.057 248.909C650.407 248.57 652.778 248.392 655.152 248.377C657.699 248.377 670.382 248.624 670.382 253.397V277.41C670.382 282.084 657.872 282.356 655.362 282.356H614.618V282.381Z" fill="white"/>
<path id="Vector_139" d="M642.593 232.302V251.01C644.166 250.311 645.831 249.841 647.537 249.613L648.143 249.514C650.462 249.197 652.8 249.04 655.14 249.044C660.567 249.044 669.751 249.972 669.751 253.446V277.41C669.751 280.761 660.789 281.738 655.338 281.762H615.236V280.711L617.35 279.66H618.401V232.302H642.593ZM643.829 231.065H617.165V278.424H617.053L616.794 278.547L614.68 279.598L614 279.945V282.999H663.867L662.273 282.529C666.574 281.911 671 280.526 671 277.41V253.446C671 248.216 658.873 247.808 655.152 247.808C652.75 247.806 650.35 247.971 647.97 248.302L647.377 248.377C646.185 248.562 645.008 248.831 643.854 249.18V231.065H643.829Z" fill="white"/>
<path id="Vector_140" d="M636.807 241.241H624.186V243.356H622.085V245.458H624.186V247.56H636.807V245.458H638.909V243.356H636.807V241.241ZM634.706 245.458H626.288V243.356H634.706V245.458Z" fill="#2D5967"/>
<path id="Vector_141" d="M638.921 237.569H622.085V239.67H638.921V237.569Z" fill="#2D5967"/>
<path id="Vector_142" d="M638.921 249.144H622.085V251.246H638.921V249.144Z" fill="#2D5967"/>
<path id="Vector_143" d="M622.085 260.186H638.909V252.829H622.085V260.186ZM624.186 254.931H636.807V258.084H624.186V254.931Z" fill="#2D5967"/>
<path id="Vector_144" d="M638.921 274.392H622.085V276.494H638.921V274.392Z" fill="#2D5967"/>
<path id="Vector_145" d="M638.921 270.708H622.085V272.809H638.921V270.708Z" fill="#2D5967"/>
<path id="Vector_146" d="M622.085 269.137H638.909V261.718H622.085V269.137ZM624.186 263.869H636.807V267.035H624.186V263.869Z" fill="#2D5967"/>
<path id="Vector_147" d="M639.799 279.659H620.502V234.403H640.491V250.477C641.128 249.965 641.836 249.549 642.593 249.241V232.301H618.401V279.659H617.35L615.236 280.71V281.761H643.26C641.943 281.375 640.749 280.65 639.799 279.659Z" fill="#2D5967"/>
<path id="Vector_148" d="M669.764 277.41V253.447C669.764 249.972 660.579 249.045 655.152 249.045C652.812 249.041 650.474 249.198 648.156 249.515L647.55 249.614C643.779 250.22 640.553 251.382 640.553 253.447V277.41C640.553 279.426 643.779 280.564 647.55 281.12L648.156 281.207C650.475 281.517 652.812 281.674 655.152 281.676C660.579 281.763 669.764 280.811 669.764 277.41ZM655.152 279.611C647.649 279.611 643.137 278.177 642.655 277.361V271.772C645.683 273.219 651.308 273.664 655.152 273.664C658.997 273.664 664.634 273.219 667.662 271.772V277.361C667.156 278.177 662.668 279.611 655.152 279.611ZM667.662 269.311C667.18 270.127 662.718 271.562 655.152 271.562C647.587 271.562 643.137 270.127 642.655 269.311V263.784C645.683 265.219 651.308 265.664 655.152 265.664C658.997 265.664 664.634 265.219 667.662 263.784V269.311ZM667.662 261.311C667.18 262.14 662.718 263.562 655.152 263.562C647.587 263.562 643.137 262.14 642.655 261.311V255.92C645.683 257.391 651.308 257.849 655.152 257.849C658.997 257.849 664.683 257.391 667.662 255.92V261.311ZM667.662 253.447C667.131 254.3 662.718 255.747 655.177 255.747C647.636 255.747 643.236 254.3 642.692 253.447C643.236 252.594 647.636 251.147 655.177 251.147C662.718 251.147 667.156 252.594 667.638 253.447H667.662Z" fill="#2D5967"/>
</g>
</g>
</g>
<g id="OCI-DB-PostgreSQL">
<g id="Srv-OCI Database with PostgreSQL">
<g id="Group 1491">
<g id="Group_35">
<path id="Vector_149" d="M619.141 403.282C614.261 403.282 610.385 399.263 610.385 394.526V391.512C608.519 391.368 606.653 391.081 604.787 390.507L605.074 389.072C606.366 389.215 607.514 389.359 608.806 389.359C609.38 389.359 609.954 389.359 610.385 389.359V363.809C610.242 353.33 618.854 344.718 629.476 344.718H632.347C633.639 344.718 635.074 345.005 636.222 345.579C637.371 345.005 638.663 344.718 639.954 344.718H646.414C652.299 344.718 657.179 349.598 657.179 355.483V370.699C661.055 371.56 663.064 372.995 663.064 374.861V398.115C663.064 402.852 651.438 403.282 647.849 403.282C644.261 403.282 632.634 402.852 632.634 398.258V396.967H632.347C631.916 400.555 628.758 403.282 625.17 403.282H619.141Z" fill="white"/>
<path id="Vector_150" d="M646.414 345.435C652.012 345.435 656.462 350.029 656.462 355.483V371.273C659.763 371.99 662.347 372.995 662.347 374.861C662.347 374.861 662.347 374.861 662.347 375.005V398.115V398.258C662.347 402.421 649.428 402.565 647.849 402.565C646.414 402.565 633.352 402.421 633.352 398.258V398.115V396.105H631.773C631.629 399.694 628.758 402.421 625.17 402.421H618.998C614.548 402.421 610.959 398.833 610.959 394.383V394.239V392.23V390.794C610.959 390.794 610.959 390.794 610.816 390.794H610.672H610.529C608.519 390.651 606.653 390.364 604.787 389.789C606.079 389.933 607.371 390.077 608.519 390.077C609.093 390.077 609.811 390.077 610.385 389.933C610.529 389.933 610.672 389.933 610.816 389.933V363.809C610.959 353.761 619.285 345.435 629.476 345.435H632.347C633.639 345.435 634.787 345.722 635.935 346.297L636.222 346.44C637.371 345.722 638.663 345.435 639.955 345.435H646.414ZM646.414 344H639.955C638.663 344 637.371 344.287 636.222 344.718C634.931 344.287 633.639 344 632.347 344H629.476C618.423 344 609.524 352.9 609.524 363.809V388.641C609.237 388.641 608.95 388.641 608.663 388.641C607.514 388.641 606.366 388.498 605.074 388.354L604.5 391.225C606.222 391.799 607.945 392.086 609.524 392.23V392.373V394.239V394.526C609.524 399.837 613.83 404 618.998 404H625.17C628.184 404 630.911 402.278 632.203 399.694C633.926 403.282 642.395 404 647.706 404C653.591 404 663.639 403.282 663.639 398.258V398.115V375.148V375.005C663.639 372.852 661.629 371.129 657.754 370.268V355.483C657.897 349.167 652.73 344 646.414 344Z" fill="white"/>
</g>
<g id="Group_36">
<path id="Vector_151" d="M613.113 363.809C613.113 354.909 620.433 347.589 629.476 347.589H632.347C633.208 347.589 634.213 347.732 635.074 348.163L636.366 348.737L636.797 348.45C637.658 347.876 638.806 347.589 639.811 347.589H646.27C650.72 347.589 654.165 351.177 654.165 355.483V369.12C654.883 369.263 655.601 369.263 656.318 369.407C656.318 369.263 656.318 369.263 656.318 369.12V355.483C656.318 349.885 651.725 345.436 646.27 345.436H639.811C638.519 345.436 637.227 345.723 636.079 346.297L635.792 346.153C634.787 345.723 633.495 345.436 632.347 345.436H629.476C619.285 345.436 610.959 353.761 610.959 363.809V388.498C611.677 388.211 612.395 388.067 613.113 387.78V363.809Z" fill="#2D5967"/>
<path id="Vector_152" d="M627.754 388.498H625.601C624.739 388.498 623.878 388.785 623.304 389.215C623.017 389.502 622.73 389.789 622.443 390.077C622.012 390.651 621.725 391.512 621.725 392.373V394.383H623.878V392.373C623.878 391.368 624.596 390.651 625.601 390.651H627.754C628.902 390.651 629.763 391.512 629.763 392.66V396.105C629.763 398.545 627.754 400.555 625.313 400.555H619.141C615.84 400.555 613.256 397.828 613.256 394.67V392.66C612.538 392.66 611.821 392.517 611.103 392.517V394.813C611.103 399.263 614.691 402.852 619.141 402.852H625.313C628.902 402.852 631.916 399.837 631.916 396.249V392.804C631.916 390.364 630.05 388.498 627.754 388.498Z" fill="#2D5967"/>
<path id="Vector_153" d="M625.744 382.325C626.175 381.464 625.744 380.602 625.026 380.172C624.165 379.741 623.304 380.172 622.873 380.89L622.299 382.038L622.155 382.181L622.012 382.468V382.612V382.756V382.899C621.868 383.043 621.868 383.186 621.725 383.473C621.294 384.191 620.72 384.909 620.146 385.626C618.998 386.918 617.562 388.067 615.84 388.784C614.978 389.215 614.117 389.502 613.256 389.645C612.395 389.933 611.39 390.076 610.529 390.076C608.663 390.22 606.797 390.22 604.931 389.789C606.797 390.363 608.663 390.65 610.672 390.794C611.677 390.794 612.682 390.794 613.687 390.65C614.691 390.507 615.696 390.363 616.557 390.076C618.423 389.502 620.289 388.497 621.868 387.205C622.73 386.488 623.447 385.77 624.021 384.909C624.165 384.765 624.309 384.478 624.452 384.191H624.596V384.047V383.904L624.739 383.617L624.883 383.473L625.6 382.468C625.744 382.468 625.744 382.325 625.744 382.325Z" fill="#2D5967"/>
<path id="Vector_154" d="M621.151 363.378C620.576 363.809 620.289 364.67 620.289 365.388C620.289 365.819 620.433 365.962 620.576 366.249C620.576 366.393 620.72 366.536 620.864 366.68C621.007 366.823 621.007 366.967 621.151 367.11C621.294 366.967 621.294 366.823 621.438 366.68C621.581 366.536 621.581 366.393 621.725 366.249C621.868 365.962 622.012 365.675 622.012 365.675C622.155 365.388 622.442 365.244 622.586 365.101C622.73 364.957 622.873 364.814 623.16 364.67C623.591 364.527 624.165 364.24 624.596 363.809C624.165 363.378 623.591 363.091 623.16 362.948C622.442 362.661 621.725 362.804 621.151 363.378Z" fill="#2D5967"/>
<path id="Vector_155" d="M662.347 398.259V375.148C662.347 375.148 662.347 375.148 662.347 375.005C662.347 371.56 653.304 370.555 647.849 370.555C642.395 370.555 633.352 371.416 633.352 375.005C633.352 375.005 633.352 375.005 633.352 375.148V398.259V398.402C633.352 402.565 646.27 402.708 647.849 402.708C649.428 402.565 662.347 402.421 662.347 398.259ZM660.194 398.259C659.62 399.12 655.17 400.412 647.849 400.412C640.529 400.412 636.079 398.976 635.505 398.259V393.235C639.237 394.957 646.701 395.101 647.849 395.101C648.998 395.101 656.462 395.101 660.194 393.235V398.259ZM647.849 379.311C651.581 379.311 657.179 378.881 660.194 377.445V382.756C659.62 383.617 655.17 384.909 647.849 384.909C640.529 384.909 636.079 383.474 635.505 382.756V377.445C638.663 378.881 644.117 379.311 647.849 379.311ZM660.194 375.005C659.62 375.866 655.313 377.302 647.993 377.302C640.672 377.302 636.222 375.866 635.792 375.005C636.366 374.144 640.672 372.708 647.993 372.708C655.313 372.708 659.62 374.144 660.194 375.005ZM647.849 387.206C648.998 387.206 656.462 387.206 660.194 385.34V390.651C659.62 391.512 655.17 392.804 647.849 392.804C640.529 392.804 636.079 391.369 635.505 390.651V385.34C639.38 387.062 646.844 387.206 647.849 387.206Z" fill="#2D5967"/>
</g>
</g>
</g>
<g id="Icon Text Label_12">
<text id="IconLabel_21" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="585.711" y="421.816">OCI Database</tspan></text>
<text id="IconLabel_22" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="574.438" y="437.816">with PostgreSQL</tspan></text>
</g>
</g>
<text id="Orthanc" fill="black" xml:space="preserve" style="white-space: pre" font-family="Oracle Sans" font-size="16" letter-spacing="0em"><tspan x="614.477" y="298.816">Orthanc</tspan></text>
</g>
</g>
</g>
<defs>
<clipPath id="clip0_21851_476">
<rect width="969" height="472" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 86 KiB

View File

@@ -0,0 +1,9 @@
The diagram you downloaded is available in these formats:
- DRAWIO
- SVG
You can customize them for your organization using the associated tools:
- For DRAWIO format, use draw.io for Confluence, online at diagrams.net, or the desktop app. Go to diagrams.net for more information.
- For SVG format, use an SVG editor such as Inkscape or Sketsa SVG Editor, which are free and available for Windows, macOS, Linux.
Note that all diagram components are ungrouped and in a single layer.

View File

@@ -0,0 +1,212 @@
# Deploy a microservices-based application in Kubernetes connected to an autonomous database
- Source: https://docs.oracle.com/en/solutions/cloud-native-ecommerce/index.html
- Date: 2025-04
- Type: reference-architecture
- Services: oke, adb-s, api-gateway, streaming, waf, vault, functions
- Tags: application, autonomous
## Summary (catalog)
Cloud-native e-commerce on OKE with ADB-S. Regional VCN subnets, VM.Standard2.1 shapes, up to 1000 nodes. API Gateway for ingress, WAF + Vault for security, Streaming for event-driven microservices.
## Architecture (fetched from source)
Architecture
In a microservices architecture, each microservice performs a simple task, and communicates with clients or other microservices by using lightweight mechanisms such as REST API requests.
This reference architecture is for an e-commerce application that's composed of multiple polyglot microservices deployed as Docker containers in a Kubernetes cluster. Data persistence is achieved using an Oracle Autonomous Transaction
Processing database. Media and image files for the e-commerce application are stored in Oracle Cloud
Infrastructure Object Storage .
The following diagram illustrates the architecture.
Description of the illustration mushop-infrastructure.png
mushop-infrastructure-oracle.zip
The architecture has the following components:
- Region
An Oracle Cloud
Infrastructure region is a localized geographic area that contains one or more data centers, hosting availability domains. Regions are independent of other regions, and vast distances can separate them (across countries or even continents).
- Availability domain
Availability domains are standalone, independent data centers within a region. The physical resources in each availability domain are isolated from the resources in the other availability domains, which provides fault tolerance. Availability domains dont share infrastructure such as power or cooling, or the internal availability domain network. So, a failure at one availability domain shouldn't affect the other availability domains in the region.
- Fault domains
A fault domain is a grouping of hardware and infrastructure within an availability domain. Each availability domain has three fault domains with independent power and hardware. OCI Kubernetes Engine handles distribution of the nodes in the cluster across multiple fault domains. So your containerized application is protected against physical server failure, system maintenance, and power failure within an fault domain.
- Virtual cloud network (VCN) and subnets
A VCN is a customizable, software-defined network that you set up in an Oracle Cloud
Infrastructure region. Like traditional data center networks, VCNs give you control over your network environment. A VCN can have multiple non-overlapping CIDR blocks that you can change after you create the VCN. You can segment a VCN into subnets, which can be scoped to a region or to an availability domain. Each subnet consists of a contiguous range of addresses that don't overlap with the other subnets in the VCN. You can change the size of a subnet after creation. A subnet can be public or private.
- Service gateway
A service gateway provides access from a VCN to other services, such as Oracle Cloud
Infrastructure Object Storage . The traffic from the VCN to the Oracle service travels over the Oracle network fabric and does not traverse the internet.
- Network address translation (NAT) gateway
A NAT gateway enables private resources in a VCN to access hosts on the internet, without exposing those resources to incoming internet connections.
- Internet gateway
An internet gateway allows traffic between the public subnets in a VCN and the public internet.
- Autonomous Transaction
Processing
Oracle Autonomous Transaction
Processing is a self-driving, self-securing, self-repairing database service that is optimized for transaction processing workloads. You do not need to configure or manage any hardware, or install any software. Oracle Cloud
Infrastructure handles creating, backing up, patching, upgrading, and tuning the database.
- Object storage
OCI Object Storage provides access to large amounts of structured
and unstructured data of any content type,
including database backups, analytic data, and
rich content such as images and videos. You can
safely and securely store data directly from the
internet or from within the cloud platform. You
can scale storage without experiencing any
degradation in performance or service reliability.
In this architecture, the media assets of the application are stored in Oracle Cloud
Infrastructure Object Storage in a bucket of the standard storage class.
- Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine ( OCI Kubernetes Engine or OKE ) is a fully-managed, scalable, and highly available service that you can use to deploy your containerized applications to the cloud. You specify the compute resources that your applications require, and Kubernetes Engine provisions them on Oracle Cloud
Infrastructure in an existing tenancy. OKE uses Kubernetes to automate the deployment, scaling, and management of containerized applications across clusters of hosts.
The following diagram shows the interactions
between the containerized microservices in this architecture:
Description of the illustration mushop-infrastructure-expand.png
mushop-infrastructure-expand-oracle.zip
Traffic from the public internet is routed by the DNS service
through a web application firewall (WAF) to the load balancer, which forwards
the incoming requests to an Ingress (Nginx) microservice. The Ingress
microservice sends traffic to a Router (Traefik) microservice. Depending on the
nature of the requests, the Router microservice routes them to the appropriate
microservices in the application. Besides interacting with other microservices,
many of the microservices also interact with Oracle Cloud
Infrastructure services: OCI Object Storage , OCI API Gateway , OCI Functions , OCI Email Delivery , OCI Streaming , and Oracle Autonomous Database .
Recommendations
Use the following recommendations as a starting point. Your requirements might differ from the architecture described here.
- VCN
When you create a VCN, determine the number of CIDR blocks required and the size of each block based on the number of resources that you plan to attach to subnets in the VCN. Use CIDR blocks that are within the standard private IP address space.
Select CIDR blocks that don't overlap with any other network (in Oracle Cloud
Infrastructure , your on-premises data center, or another cloud provider) to which you intend to set up private connections.
After you create a VCN, you can change, add, and remove its CIDR blocks.
When you design the subnets, consider your traffic flow and security requirements. Attach all the resources within a specific tier or role to the same subnet, which can serve as a security boundary.
Use regional subnets.
Note:
The Terraform code to implement this architecture provisions the Oracle Autonomous Transaction
Processing database in the Oracle services network. If you prefer to expose only a private endpoint for the database, then you can adjust the Terraform code to attach the database to a private subnet, as shown in the architecture diagram.
- OCI Kubernetes Engine
In this architecture, the worker nodes in the Kubernetes
cluster use the VM.Standard2.1 shape, and they run on Oracle Linux. You can
create up to 1000 nodes in a cluster.
Considerations
When implementing this architecture, consider your requirements for the following parameters:
- Scalability
You can scale out your application by updating the number of worker nodes in the Kubernetes cluster, depending on the load. Similarly, you can scale in by reducing the number of worker nodes in the cluster. When you create a service on the Kubernetes cluster, you can create a load balancer to distribute service traffic among the nodes assigned to the service. This architecture uses a load balancer to handle incoming requests.
- Application availability
Fault domains provide resilience
within a single availability domain. You can also deploy instances or nodes that
perform the same tasks in multiple availability domains. This design removes
single points of failure by introducing redundancy. In this architecture, Oracle Cl

View File

@@ -0,0 +1,541 @@
# Auto-extracted absolute_layout template from
# kb/diagram/assets/archcenter-refs/cloud-native-ecommerce/mushop-infrastructure-expand-oracle/mushop-infrastructure-expand.drawio
# Source: Oracle Architecture Center reference (canonical geometry).
# Use this as the starting scaffold for a new spec — copy, rename ids,
# and replace `type: TODO_identify` on services with the right OCI
# type alias (adb_s, drg, fastconnect, etc.). Container coords and
# edge waypoints are Oracle's canonical layout; preserve unless the
# customer's topology requires a change.
absolute_layout:
canvas:
width: 850
height: 1100
containers:
- id: c1
type: region
label: ''
x: 127
y: 0
w: 1158
h: 1268
services:
- id: s33
type: TODO_identify
label: ''
x: 8
y: 42
w: 58
h: 63
- id: s5
type: TODO_identify
label: ''
x: 816
y: 42
w: 63
h: 63
- id: s32
type: TODO_identify
label: ''
x: 8
y: 43
w: 56
h: 61
- id: s4
type: TODO_identify
label: ''
x: 817
y: 43
w: 61
h: 61
- id: s6
type: TODO_identify
label: ''
x: 817
y: 43
w: 60
h: 60
- id: s25
type: TODO_identify
label: ''
x: 310
y: 44
w: 63
h: 60
- id: s26
type: TODO_identify
label: ''
x: 310
y: 44
w: 65
h: 61
- id: s30
type: TODO_identify
label: ''
x: 153
y: 45
w: 63
h: 59
- id: s27
type: TODO_identify
label: ''
x: 311
y: 45
w: 62
h: 29
- id: s29
type: TODO_identify
label: ''
x: 154
y: 46
w: 62
h: 58
- id: s31
type: TODO_identify
label: ''
x: 155
y: 47
w: 60
h: 57
- id: s28
type: TODO_identify
label: ''
x: 336
y: 63
w: 31
h: 40
- id: s69
type: TODO_identify
label: ''
x: 816
y: 176
w: 63
h: 63
- id: s68
type: TODO_identify
label: ''
x: 817
y: 177
w: 61
h: 61
- id: s70
type: TODO_identify
label: ''
x: 818
y: 178
w: 60
h: 60
- id: s13
type: TODO_identify
label: ''
x: 818
y: 330
w: 61
h: 61
- id: s14
type: TODO_identify
label: ''
x: 818
y: 330
w: 63
h: 63
- id: s15
type: TODO_identify
label: ''
x: 819
y: 331
w: 60
h: 60
- id: s35
type: TODO_identify
label: ''
x: 153
y: 482
w: 63
h: 63
- id: s34
type: TODO_identify
label: ''
x: 154
y: 482
w: 61
h: 62
- id: s23
type: TODO_identify
label: ''
x: 705
y: 483
w: 63
h: 63
- id: s22
type: TODO_identify
label: ''
x: 706
y: 484
w: 61
h: 61
- id: s24
type: TODO_identify
label: ''
x: 707
y: 485
w: 60
h: 60
- id: s17
type: TODO_identify
label: ''
x: 817
y: 485
w: 63
h: 63
- id: s16
type: TODO_identify
label: ''
x: 817
y: 486
w: 61
h: 61
- id: s20
type: TODO_identify
label: ''
x: 928
y: 486
w: 63
h: 63
- id: s18
type: TODO_identify
label: ''
x: 818
y: 487
w: 60
h: 60
- id: s19
type: TODO_identify
label: ''
x: 928
y: 487
w: 61
h: 61
- id: s21
type: TODO_identify
label: ''
x: 929
y: 488
w: 60
h: 60
- id: s36
type: TODO_identify
label: ''
x: 154
y: 489
w: 60
h: 54
- id: s38
type: TODO_identify
label: ''
x: 154
y: 641
w: 63
h: 63
- id: s37
type: TODO_identify
label: ''
x: 154
y: 642
w: 61
h: 62
- id: s39
type: TODO_identify
label: ''
x: 155
y: 642
w: 60
h: 60
- id: s41
type: TODO_identify
label: ''
x: 323
y: 642
w: 32
h: 61
- id: s40
type: TODO_identify
label: ''
x: 324
y: 643
w: 30
h: 60
- id: s43
type: TODO_identify
label: ''
x: 325
y: 644
w: 29
h: 58
- id: s11
type: TODO_identify
label: ''
x: 527
y: 644
w: 63
h: 63
- id: s8
type: TODO_identify
label: ''
x: 1105
y: 644
w: 63
h: 63
- id: s10
type: TODO_identify
label: ''
x: 528
y: 645
w: 61
h: 61
- id: s7
type: TODO_identify
label: ''
x: 1106
y: 645
w: 61
h: 61
- id: s42
type: TODO_identify
label: ''
x: 327
y: 646
w: 24
h: 54
- id: s12
type: TODO_identify
label: ''
x: 529
y: 646
w: 60
h: 60
- id: s9
type: TODO_identify
label: ''
x: 1107
y: 646
w: 60
h: 60
- id: s3
type: TODO_identify
label: ''
x: 381
y: 751
w: 177
h: 61
- id: s74
type: TODO_identify
label: ''
x: 309
y: 781
w: 63
h: 63
- id: s73
type: TODO_identify
label: ''
x: 310
y: 781
w: 61
h: 62
- id: s45
type: TODO_identify
label: ''
x: 704
y: 781
w: 63
h: 63
- id: s44
type: TODO_identify
label: ''
x: 705
y: 781
w: 61
h: 61
- id: s47
type: TODO_identify
label: ''
x: 817
y: 781
w: 61
h: 61
- id: s48
type: TODO_identify
label: ''
x: 817
y: 781
w: 63
h: 63
- id: s75
type: TODO_identify
label: ''
x: 311
y: 782
w: 60
h: 60
- id: s46
type: TODO_identify
label: ''
x: 706
y: 782
w: 60
h: 60
- id: s49
type: TODO_identify
label: ''
x: 818
y: 782
w: 60
h: 60
- id: s72
type: TODO_identify
label: ''
x: 158
y: 800
w: 63
h: 43
- id: s71
type: TODO_identify
label: ''
x: 158
y: 801
w: 62
h: 42
- id: s2
type: TODO_identify
label: ''
x: 737
y: 924
w: 215
h: 168
- id: s51
type: TODO_identify
label: ''
x: 815
y: 947
w: 63
h: 63
- id: s50
type: TODO_identify
label: ''
x: 816
y: 948
w: 61
h: 61
- id: s52
type: TODO_identify
label: ''
x: 817
y: 949
w: 60
h: 60
- id: s66
type: TODO_identify
label: ''
x: 234
y: 1083
w: 63
h: 55
- id: s65
type: TODO_identify
label: ''
x: 235
y: 1084
w: 61
h: 53
- id: s67
type: TODO_identify
label: ''
x: 236
y: 1085
w: 60
h: 52
- id: s57
type: TODO_identify
label: ''
x: 818
y: 1097
w: 63
h: 63
- id: s60
type: TODO_identify
label: ''
x: 929
y: 1097
w: 63
h: 63
- id: s63
type: TODO_identify
label: ''
x: 1023
y: 1097
w: 63
h: 63
- id: s54
type: TODO_identify
label: ''
x: 706
y: 1098
w: 63
h: 63
- id: s56
type: TODO_identify
label: ''
x: 818
y: 1098
w: 61
h: 61
- id: s59
type: TODO_identify
label: ''
x: 930
y: 1098
w: 61
h: 61
- id: s62
type: TODO_identify
label: ''
x: 1024
y: 1098
w: 61
h: 61
- id: s53
type: TODO_identify
label: ''
x: 707
y: 1099
w: 61
h: 61
- id: s58
type: TODO_identify
label: ''
x: 819
y: 1099
w: 60
h: 60
- id: s61
type: TODO_identify
label: ''
x: 930
y: 1099
w: 60
h: 60
- id: s64
type: TODO_identify
label: ''
x: 1024
y: 1099
w: 60
h: 60
- id: s55
type: TODO_identify
label: ''
x: 708
y: 1100
w: 60
h: 60
labels: []
connections: []

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 106 KiB

Some files were not shown because too many files have changed in this diff Show More