{"id":3457,"date":"2026-05-06T13:59:32","date_gmt":"2026-05-06T13:59:32","guid":{"rendered":"https:\/\/www.bohort.nl\/?p=3457"},"modified":"2026-05-06T14:13:45","modified_gmt":"2026-05-06T14:13:45","slug":"oracle-integration-cloud-automating-project-deployments","status":"publish","type":"post","link":"https:\/\/www.bohort.nl\/en\/2026\/05\/06\/oracle-integration-cloud-automating-project-deployments\/","title":{"rendered":"Oracle Integration Cloud: Automating Project Deployments"},"content":{"rendered":"<h3 class=\"wp-block-heading\">Importing the CAR Is Easy \u2014 Activating It Is the Trap<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;ve ever tried to setup automated OIC Project deployment and if, like me, you went looking for one in the docs, you probably wasted half an afternoon before realising what&#8217;s actually going on.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This post walks through what I learned automating CAR file promotion between OIC environments.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Setup<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A common CI\/CD scenario for OIC: you&#8217;ve built a project in your dev instance, exported the deployment as a <code>.car<\/code> file (let&#8217;s say <code>TEST_PROJECT-01.00.0001.car<\/code>), and now you want a pipeline to push it to test or prod and turn it on. Two steps, conceptually:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Import<\/strong> the CAR into the target environment.<\/li>\n\n\n\n<li><strong>Activate<\/strong> the deployment so the integrations actually start handling traffic.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Step 1 is well-documented and works exactly as advertised. Step 2 is where it gets interesting.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1 \u2014 Import the CAR<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This one&#8217;s straightforward. Post the archive to the projects archive endpoint:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST \\\n  'https:\/\/&lt;OIC_HOST&gt;\/ic\/api\/integration\/v1\/projects\/archive' \\\n  -H 'Authorization: Bearer &lt;TOKEN&gt;' \\\n  -H 'Accept: application\/json' \\\n  -H 'Content-Type: multipart\/form-data' \\\n  -F 'type=application\/octet-stream' \\\n  -F 'file=@TEST_PROJECT-01.00.0001.car'\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">OIC unpacks the archive, creates the project (or merges into an existing one), and registers the deployment manifest. At this point everything is <strong>imported but inactive<\/strong> \u2014 the integrations exist with status <code>CONFIGURED<\/code>, not <code>ACTIVATED<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2 \u2014 The Plot Twist: There Is No &#8220;Activate Deployment&#8221; Endpoint<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I went looking in the documentation for a REST endpoint to activate the deployment. Unfortunately it doesn&#8217;t exist. Here&#8217;s the complete list of REST operations Oracle exposes for project deployments, according to the <a href=\"https:\/\/docs.oracle.com\/en\/cloud\/paas\/application-integration\/rest-api\/api-integrations-projects-deployments.html\">documentationlink<\/a>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Method<\/th><th>Path<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td><code>POST<\/code><\/td><td><code>\/ic\/api\/integration\/v1\/projects\/{projectId}\/deployments<\/code><\/td><td>Create deployment<\/td><\/tr><tr><td><code>GET<\/code><\/td><td><code>\/ic\/api\/integration\/v1\/projects\/{projectId}\/deployments<\/code><\/td><td>List deployments<\/td><\/tr><tr><td><code>GET<\/code><\/td><td><code>\/ic\/api\/integration\/v1\/projects\/{projectId}\/deployments\/{id}<\/code><\/td><td>Get deployment<\/td><\/tr><tr><td><code>POST<\/code><\/td><td><code>\/ic\/api\/integration\/v1\/projects\/{projectId}\/deployments\/{id}<\/code><\/td><td>Update deployment<\/td><\/tr><tr><td><code>DELETE<\/code><\/td><td><code>\/ic\/api\/integration\/v1\/projects\/{projectId}\/deployments\/{id}<\/code><\/td><td>Delete deployment<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s it. Five endpoints, none of which activate anything.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is weird, because in the OIC console there is an <strong>Activate<\/strong> button for every project deployment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So what does the <strong>Activate<\/strong> button in the console actually do? Indeed, it calls a REST API. Let&#8217;s go ahead and try if we can use this REST API in our pipeline.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3 \u2014 Replicating the Activate Button<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The easy way to figure this out is to watch via chrome developertools which Endpoint is called when you click the <strong>Activate<\/strong> button on a project deployment in Oracle Integration Cloud (OIC) Gen 3.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"380\" src=\"https:\/\/www.bohort.nl\/wp-content\/uploads\/2026\/05\/image-1024x380.png\" alt=\"\" class=\"wp-image-3458\" srcset=\"https:\/\/www.bohort.nl\/wp-content\/uploads\/2026\/05\/image-1024x380.png 1024w, https:\/\/www.bohort.nl\/wp-content\/uploads\/2026\/05\/image-300x111.png 300w, https:\/\/www.bohort.nl\/wp-content\/uploads\/2026\/05\/image-768x285.png 768w, https:\/\/www.bohort.nl\/wp-content\/uploads\/2026\/05\/image-1536x570.png 1536w, https:\/\/www.bohort.nl\/wp-content\/uploads\/2026\/05\/image-18x7.png 18w, https:\/\/www.bohort.nl\/wp-content\/uploads\/2026\/05\/image.png 1944w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And there you have it. <\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Method<\/th><th>Path<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td><code>POST<\/code><\/td><td><code>\/ic\/api\/integration\/v1\/projects\/{projectId}\/activate<\/code><\/td><td>Activate a deployment<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">3a. Activate the deployment<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Now you can simply invoke that REST API to activate a deployment.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The required body is just   <code>{\"traceType\"<\/code>:  &#8220;PRODUCTION&#8221;, &#8220;<code>label\": \"01.00.0000\"}<\/code>.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -X POST \\\n  'https:\/\/&lt;OIC_HOST&gt;\/ic\/api\/integration\/v1\/projects\/{projectId}\/activate' \\\n  -H 'Authorization: Bearer &lt;TOKEN&gt;' \\\n  -H 'Accept: application\/json' \\\n  -H 'X-HTTP-Method-Override:PATCH' \\\n  -d  $body \\<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To deactivate later,  you can use the similar way to find out which endpoint to use.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Method<\/th><th>Path<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td><code>POST<\/code><\/td><td><code>\/ic\/api\/integration\/v1\/projects\/{projectId}\/deactivate<\/code><\/td><td>Deactivate a deployment<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The required body is just   <code>{<\/code>&#8220;<code>label\": \"01.00.0000\"}<\/code>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s the full &#8220;import and activate&#8221; sequence in a CI\/CD context.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Takeaways<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Importing a CAR<\/strong> is one clean REST call to <code>\/projects\/archive<\/code>.<\/li>\n\n\n\n<li><strong>Activating the resulting deployment<\/strong> is <em>also<\/em> a single call \u2014 however, it is not found in the Oracle Documentation<\/li>\n\n\n\n<li>The console&#8217;s <strong>Activate<\/strong> button is calling the API. <\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"225\" height=\"225\" data-src=\"https:\/\/www.bohort.nl\/wp-content\/uploads\/2026\/05\/image-1.png\" alt=\"\" class=\"wp-image-3462 lazyload\" data-srcset=\"https:\/\/www.bohort.nl\/wp-content\/uploads\/2026\/05\/image-1.png 225w, https:\/\/www.bohort.nl\/wp-content\/uploads\/2026\/05\/image-1-150x150.png 150w, https:\/\/www.bohort.nl\/wp-content\/uploads\/2026\/05\/image-1-12x12.png 12w\" data-sizes=\"(max-width: 225px) 100vw, 225px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 225px; --smush-placeholder-aspect-ratio: 225\/225;\" \/><\/figure>\n<\/div><\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Importing the CAR Is Easy \u2014 Activating It Is the Trap If you&#8217;ve ever tried to setup automated OIC Project deployment and if, like me, you went looking for one&#8230;<\/p>","protected":false},"author":1,"featured_media":3462,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[101,118,119],"tags":[122,4,121,5,103,120,123],"class_list":["post-3457","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oic","category-oracle-integration-cloud","category-projects","tag-activation","tag-bohort","tag-deployments","tag-luc-bors","tag-oracle-integration-cloud","tag-projects","tag-rest-api"],"_links":{"self":[{"href":"https:\/\/www.bohort.nl\/en\/wp-json\/wp\/v2\/posts\/3457","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bohort.nl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bohort.nl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bohort.nl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bohort.nl\/en\/wp-json\/wp\/v2\/comments?post=3457"}],"version-history":[{"count":5,"href":"https:\/\/www.bohort.nl\/en\/wp-json\/wp\/v2\/posts\/3457\/revisions"}],"predecessor-version":[{"id":3464,"href":"https:\/\/www.bohort.nl\/en\/wp-json\/wp\/v2\/posts\/3457\/revisions\/3464"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.bohort.nl\/en\/wp-json\/wp\/v2\/media\/3462"}],"wp:attachment":[{"href":"https:\/\/www.bohort.nl\/en\/wp-json\/wp\/v2\/media?parent=3457"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bohort.nl\/en\/wp-json\/wp\/v2\/categories?post=3457"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bohort.nl\/en\/wp-json\/wp\/v2\/tags?post=3457"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}