<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[RNH Integration]]></title><description><![CDATA[RNH Integration]]></description><link>https://blog.rnhintegrations.com</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Apr 2026 20:07:40 GMT</lastBuildDate><atom:link href="https://blog.rnhintegrations.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Streaming MuleSoft Application Logs to Dynatrace with Log4j2]]></title><description><![CDATA[1. Introduction
In today’s API-driven world, observability is critical. While MuleSoft provides rich logging capabilities out of the box, organizations often need centralized log management to monitor performance, detect issues faster, and improve tr...]]></description><link>https://blog.rnhintegrations.com/streaming-mulesoft-application-logs-to-dynatrace-with-log4j2</link><guid isPermaLink="true">https://blog.rnhintegrations.com/streaming-mulesoft-application-logs-to-dynatrace-with-log4j2</guid><category><![CDATA[mulesoft]]></category><category><![CDATA[Dynatrace]]></category><category><![CDATA[logging]]></category><category><![CDATA[runtime]]></category><category><![CDATA[Anypoint]]></category><category><![CDATA[dynamic-logging]]></category><category><![CDATA[trace]]></category><dc:creator><![CDATA[NagaRaju Kukkadapu]]></dc:creator><pubDate>Thu, 02 Oct 2025 17:49:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1759426544587/991af11c-fd23-49f4-89b1-3d61776ee703.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-1-introduction">1. Introduction</h3>
<p>In today’s API-driven world, observability is critical. While MuleSoft provides rich logging capabilities out of the box, organizations often need centralized log management to monitor performance, detect issues faster, and improve troubleshooting.</p>
<p><strong>Dynatrace</strong> is a powerful observability platform that offers <strong>log ingestion, monitoring, and AI-powered anomaly detection</strong>. By integrating MuleSoft 4 logs with Dynatrace, we can achieve <strong>end-to-end visibility</strong> of APIs, integrations, and system flows.</p>
<p>This blog will walk through the steps to configure MuleSoft 4 logging with <strong>Log4j2</strong> and send logs directly to <strong>Dynatrace Logs Ingest API</strong>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759424241780/1b4d614a-c0eb-4285-8158-db21d41185c4.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-2-prerequisites">2. Prerequisites</h3>
<p>Before getting started, ensure you have:</p>
<ul>
<li><p>MuleSoft Runtime 4.x</p>
</li>
<li><p>Dynatrace SaaS or Managed instance</p>
</li>
<li><p>An <strong>API Token in Dynatrace</strong> with the scope: <code>logs.ingest</code></p>
</li>
<li><p>Basic knowledge of <strong>Log4j2 configuration</strong></p>
</li>
</ul>
<hr />
<h3 id="heading-3-why-integrate-mulesoft-logs-with-dynatrace">3. Why Integrate MuleSoft Logs with Dynatrace?</h3>
<ul>
<li><p>✅ Centralized logging and monitoring</p>
</li>
<li><p>✅ Real-time troubleshooting with Dynatrace dashboards</p>
</li>
<li><p>✅ AI-based anomaly detection on MuleSoft flows</p>
</li>
<li><p>✅ Unified observability across microservices, APIs, and Mule apps</p>
</li>
<li><p>✅ Faster root cause analysis by correlating logs, traces, and metrics</p>
</li>
</ul>
<hr />
<h3 id="heading-4-creating-a-dynatrace-api-token">4. Creating a Dynatrace API Token</h3>
<ol>
<li><p>Log in to <strong>Dynatrace</strong></p>
</li>
<li><p>Navigate to <strong>Apps &gt; Access Token</strong></p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759422949447/c743c357-dc8d-46d0-a149-726dc0cffec2.png" alt class="image--center mx-auto" /></p>
<ol start="3">
<li>Click on Generate Access Token</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759423055388/79f573ae-cca0-4545-b51e-2eb60890fd40.png" alt class="image--center mx-auto" /></p>
<ol start="4">
<li><p>Name the Token, Slect the expiration date</p>
</li>
<li><p>Select the <strong>scope</strong> → <code>ingest logs</code></p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759423241774/0cff066a-7c1c-4834-b18c-04056b8a2ffe.png" alt class="image--center mx-auto" /></p>
<ol start="5">
<li>Copy the generated token → You’ll need it in your Log4j2 config</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759423456743/5c550d61-4016-434f-bd5a-ed964b2a6cda.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-configuring-log4j2-in-mulesoft">Configuring Log4j2 in MuleSoft</h3>
<p>MuleSoft uses <strong>Log4j2</strong> as its logging framework. We can configure a custom <strong>HTTP Appender</strong> to send logs directly to Dynatrace.</p>
<p>Appender for Dyantrace</p>
<pre><code class="lang-xml">        <span class="hljs-tag">&lt;<span class="hljs-name">Http</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"DynatraceAppender"</span>
            <span class="hljs-attr">url</span>=<span class="hljs-string">"https://qru64311.live.dynatrace.com/api/v2/logs/ingest"</span>
            <span class="hljs-attr">method</span>=<span class="hljs-string">"POST"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Property</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"Authorization"</span>&gt;</span>Api-Token XXXXXXXXXXX<span class="hljs-tag">&lt;/<span class="hljs-name">Property</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Property</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"Content-Type"</span>&gt;</span>application/json<span class="hljs-tag">&lt;/<span class="hljs-name">Property</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">JsonLayout</span> <span class="hljs-attr">compact</span>=<span class="hljs-string">"true"</span> <span class="hljs-attr">eventEol</span>=<span class="hljs-string">"true"</span> /&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">Http</span>&gt;</span>
</code></pre>
<p>AsyncRoot:</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">AppenderRef</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"DynatraceAppender"</span> /&gt;</span>
</code></pre>
<p>Example <code>log4j2.xml</code>:</p>
<pre><code class="lang-xml"><span class="hljs-meta">&lt;?xml version="1.0" encoding="utf-8"?&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">Configuration</span>&gt;</span>

    <span class="hljs-comment">&lt;!--These are some of the loggers you can enable. There are several more 
        you can find in the documentation. Besides this log4j configuration, you 
        can also use Java VM environment variables to enable other logs like network 
        (-Djavax.net.debug=ssl or all) and Garbage Collector (-XX:+PrintGC). These 
        will be append to the console, so you will see them in the mule_ee.log file. --&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">Appenders</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">RollingFile</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"file"</span>
            <span class="hljs-attr">fileName</span>=<span class="hljs-string">"${sys:mule.home}${sys:file.separator}logs${sys:file.separator}test.log"</span>
            <span class="hljs-attr">filePattern</span>=<span class="hljs-string">"${sys:mule.home}${sys:file.separator}logs${sys:file.separator}test-%i.log"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">PatternLayout</span>
                <span class="hljs-attr">pattern</span>=<span class="hljs-string">"%-5p %d [%t] [processor: %X{processorPath}; event: %X{correlationId}] %c: %m%n"</span> /&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">SizeBasedTriggeringPolicy</span> <span class="hljs-attr">size</span>=<span class="hljs-string">"10 MB"</span> /&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">DefaultRolloverStrategy</span> <span class="hljs-attr">max</span>=<span class="hljs-string">"10"</span> /&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">RollingFile</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">Http</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"DynatraceAppender"</span>
            <span class="hljs-attr">url</span>=<span class="hljs-string">"https://qru64311.live.dynatrace.com/api/v2/logs/ingest"</span>
            <span class="hljs-attr">method</span>=<span class="hljs-string">"POST"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Property</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"Authorization"</span>&gt;</span>Api-Token XXXXXXXXXXX<span class="hljs-tag">&lt;/<span class="hljs-name">Property</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">Property</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"Content-Type"</span>&gt;</span>application/json<span class="hljs-tag">&lt;/<span class="hljs-name">Property</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">JsonLayout</span> <span class="hljs-attr">compact</span>=<span class="hljs-string">"true"</span> <span class="hljs-attr">eventEol</span>=<span class="hljs-string">"true"</span> /&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">Http</span>&gt;</span>
    <span class="hljs-tag">&lt;/<span class="hljs-name">Appenders</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">Loggers</span>&gt;</span>
        <span class="hljs-comment">&lt;!-- Http Logger shows wire traffic on DEBUG --&gt;</span>
        <span class="hljs-comment">&lt;!--AsyncLogger name="org.mule.service.http.impl.service.HttpMessageLogger" 
            level="DEBUG"/ --&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">AsyncLogger</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"org.mule.service.http"</span> <span class="hljs-attr">level</span>=<span class="hljs-string">"WARN"</span> /&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">AsyncLogger</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"org.mule.extension.http"</span> <span class="hljs-attr">level</span>=<span class="hljs-string">"WARN"</span> /&gt;</span>

        <span class="hljs-comment">&lt;!-- Mule logger --&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">AsyncLogger</span>
            <span class="hljs-attr">name</span>=<span class="hljs-string">"org.mule.runtime.core.internal.processor.LoggerMessageProcessor"</span>
            <span class="hljs-attr">level</span>=<span class="hljs-string">"INFO"</span> /&gt;</span>

        <span class="hljs-tag">&lt;<span class="hljs-name">AsyncRoot</span> <span class="hljs-attr">level</span>=<span class="hljs-string">"INFO"</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">AppenderRef</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"file"</span> /&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">AppenderRef</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"DynatraceAppender"</span> /&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">AsyncRoot</span>&gt;</span>


    <span class="hljs-tag">&lt;/<span class="hljs-name">Loggers</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">Configuration</span>&gt;</span>
</code></pre>
<h3 id="heading-testing-the-integration">Testing the Integration</h3>
<ol>
<li><p>Deploy a MuleSoft application</p>
</li>
<li><p>Generate logs by sending requests to your Mule APIs</p>
</li>
<li><p>Go to <strong>Dynatrace &gt; Logs</strong></p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759427127889/df58b95f-fcbc-46bd-a7bd-700174c4a0e6.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1759427146475/2d70876a-f819-403c-bfa9-c8f368799ee3.png" alt class="image--center mx-auto" /></p>
<ol>
<li><p>Filter by <code>source="mule"</code> or check for your MuleSoft application name</p>
</li>
<li><p>You should see real-time logs flowing into Dynatrace.</p>
</li>
</ol>
<hr />
<h3 id="heading-conclusion">Conclusion</h3>
<p>By integrating <strong>MuleSoft 4 logs with Dynatrace</strong>, you gain <strong>real-time visibility, centralized observability, and AI-powered insights</strong> into your APIs and integration flows. This setup helps developers and operations teams proactively monitor, detect issues.</p>
<p>With this integration, MuleSoft logs become a <strong>powerful observability signal</strong> in Dynatrace, allowing you to correlate logs with metrics and traces for <strong>full-stack monitoring</strong>.</p>
]]></content:encoded></item><item><title><![CDATA[Workato + Bitbucket: A Practical Guide to Automated Recipe Deployment]]></title><description><![CDATA[Introduction:
Deploying Workato recipes across environments can be a challenge if done manually, especially when teams need speed, consistency, and reliability. To solve this, I built a CI/CD pipeline using Bitbucket, which automates recipe deploymen...]]></description><link>https://blog.rnhintegrations.com/workato-bitbucket-a-practical-guide-to-automated-recipe-deployment</link><guid isPermaLink="true">https://blog.rnhintegrations.com/workato-bitbucket-a-practical-guide-to-automated-recipe-deployment</guid><category><![CDATA[workato]]></category><category><![CDATA[integration]]></category><category><![CDATA[automation]]></category><category><![CDATA[Bitbucket]]></category><category><![CDATA[CI/CD]]></category><category><![CDATA[ci-cd]]></category><category><![CDATA[CI/CD pipelines]]></category><category><![CDATA[ci]]></category><category><![CDATA[cicd]]></category><category><![CDATA[deployment]]></category><dc:creator><![CDATA[NagaRaju Kukkadapu]]></dc:creator><pubDate>Thu, 11 Sep 2025 22:44:50 GMT</pubDate><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction:</h2>
<p>Deploying <strong>Workato recipes</strong> across environments can be a challenge if done manually, especially when teams need speed, consistency, and reliability. To solve this, I built a <strong>CI/CD pipeline using Bitbucket</strong>, which automates recipe deployments end to end.</p>
<p>The process is simple: the pipeline generates a <strong>ZIP build of the recipe</strong> and then uses a <strong>cURL call to Workato APIs</strong> to deploy it. This approach not only saves time but also reduces manual effort and ensures deployments are repeatable and error-free.</p>
<p>In this blog, I’ll share how I set up automated recipe deployment with Bitbucket, along with the key steps and benefits of bringing DevOps practices into Workato.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757629921358/ca694784-eb49-41b4-b5be-582942d9146e.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757625445583/49b4b3cb-bba0-4feb-ad1e-1af24ca076c9.png" alt class="image--center mx-auto" /></p>
<p>First, create a Workato account and set up a well-structured folder hierarchy to organize your connectors, connections, and recipes. This makes it easier to manage deployments and maintain consistency across environments.</p>
<h2 id="heading-why-use-cicd-with-workato-for-blogspot">Why Use CI/CD with Workato for Blogspot?</h2>
<p>By integrating Workato’s automation capabilities with CI/CD pipelines, you can:</p>
<ul>
<li><p>Automate deployment and updates to your Blogspot blog.</p>
</li>
<li><p>Ensure version control and rollback capability for your recipes and configurations.</p>
</li>
<li><p>Maintain consistent environments between testing and production.</p>
</li>
<li><p>Accelerate content publishing and reduce operational overhead.</p>
</li>
</ul>
<h2 id="heading-prerequisites">Prerequisites</h2>
<p>Before diving into the deployment process, ensure you have the following:</p>
<ul>
<li><p>An active Workato account with permissions to create and manage recipes.</p>
</li>
<li><p>A Bitbucket repository (or other version control system) to store your Workato recipes and deployment scripts.</p>
</li>
<li><p>Access to a CI/CD tool like GitHub Actions, GitLab CI, or Jenkins.</p>
</li>
<li><p>Basic knowledge of YAML and scripting (Bash, Python, etc.).</p>
</li>
</ul>
<h3 id="heading-below-is-a-sample-cicd-pipeline-template-using-bitbucket-pipelines-adapt-similar-concepts-for-other-tools-eg-gitlab-ci-jenkins">Below is a sample CI/CD pipeline template using Bitbucket Pipelines. Adapt similar concepts for other tools (e.g., GitLab CI, Jenkins).</h3>
<pre><code class="lang-yaml"><span class="hljs-comment"># This is an example Starter pipeline configuration</span>
<span class="hljs-comment"># Use a skeleton to build, test and deploy using manual and parallel steps</span>
<span class="hljs-comment"># -----</span>
<span class="hljs-comment"># You can specify a custom docker image from Docker Hub as your build environment.</span>

<span class="hljs-attr">image:</span> <span class="hljs-string">atlassian/default-image:3</span>

<span class="hljs-attr">pipelines:</span>
  <span class="hljs-attr">default:</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">parallel:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-attr">step:</span>
          <span class="hljs-attr">name:</span> <span class="hljs-string">'Build and Deploy to Dev'</span>
          <span class="hljs-attr">script:</span>
            <span class="hljs-bullet">-</span> <span class="hljs-string">zip</span> <span class="hljs-string">-r</span> <span class="hljs-string">bundle.zip</span> <span class="hljs-string">.</span>
            <span class="hljs-bullet">-</span> <span class="hljs-string">&gt;-</span>
              <span class="hljs-string">curl</span> <span class="hljs-string">-X</span> <span class="hljs-string">POST</span> <span class="hljs-string">'https://www.workato.com/api/packages/import/239872?restart_recipes=true'</span> <span class="hljs-string">--header</span> <span class="hljs-string">'Authorization: Bearer wrkaus.cHQ2kfVltlIQabEH_UF1J5D9QCd_GQHhLqJ5IEaNUrouKxl4SthG3OE5vRkaaH42huNxaL2FCuRex0YAys4Ujp0dDGMeK-5UQuf8Kb-0B0s4cTHzgTPPsMHwwBhvF0CLCDjnjpEJ3b2QOj5FSk8oKJ31KdOKFhiEc8AyIH3N3kVzN0_Lcv4K7pX0ngmFhI7XNRrKa'</span> <span class="hljs-string">--header</span> <span class="hljs-string">'Content-Type: application/octet-stream'</span> <span class="hljs-string">--data-binary</span> <span class="hljs-string">'@/opt/atlassian/pipelines/agent/build/bundle.zip'</span>
</code></pre>
<p>After naming the master branch, I created a step in the pipeline. Each step is displayed separately in the Pipelines UI with its label, and the output of that step is also visible. This makes it easy to trace what was executed during a build or integration at any point in time.</p>
<ul>
<li>When implementing CI/CD for Workato, it’s important to follow the <strong>recipe file lifecycle management steps</strong> to ensure recipes are properly versioned and organized. Once the recipes are exported from Workato, they should be committed into Bitbucket using the <strong>same folder structure</strong> that was defined in your lifecycle management approach. By mirroring the structure of folders for connectors, connections, and recipes, you create a one-to-one mapping between what exists in Workato and what is stored in your source control. This consistency not only makes the repository easier to navigate but also simplifies deployments, reduces the risk of errors, and provides clear traceability of changes across environments.</li>
</ul>
<p><strong>Recipe LifeCycle Management Link by Workato Official Documentation:</strong></p>
<p>To export the Recipe and and to commit the structured unzipped to Repository</p>
<ul>
<li><p><a target="_blank" href="https://docs.workato.com/en/recipe-development-lifecycle.html">https://docs.workato.com/en/recipe-development-lifecycle.html</a></p>
</li>
<li><p><a target="_blank" href="https://docs.workato.com/en/oem/oem-api/recipe-lifecycle-management.html#manifest-update">https://docs.workato.com/en/oem/oem-api/recipe-lifecycle-management.html#manifest-update</a></p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757629750409/54f55da9-1ef1-404f-b2db-44ce67bd11ab.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1757628790914/088f5c1d-ee43-4ec2-b8cb-75a67a285341.png" alt class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[Continuous Integration of Applications to CloudHub 2.0 with Bitbucket]]></title><description><![CDATA[Prerequisites:

Bitbucket

Anypoint Platform (Exchange Contributor, Runtime Access)


Mule API Project Structure:

Before you Deploy Mule Application to Cloudhub 2.0
Update Pom xml file with Distribution Management
<distributionManagement>
  <reposit...]]></description><link>https://blog.rnhintegrations.com/continuous-integration-of-applications-to-cloudhub-20-with-bitbucket</link><guid isPermaLink="true">https://blog.rnhintegrations.com/continuous-integration-of-applications-to-cloudhub-20-with-bitbucket</guid><category><![CDATA[#cloudhub2.0]]></category><category><![CDATA[CloudHub]]></category><category><![CDATA[Bitbucket]]></category><category><![CDATA[bitbucket-pipelines]]></category><category><![CDATA[Anypoint]]></category><category><![CDATA[#MuleSoft #AnypointStudio #CloudHub]]></category><category><![CDATA[Anypoint platform]]></category><dc:creator><![CDATA[NagaRaju Kukkadapu]]></dc:creator><pubDate>Wed, 05 Jun 2024 05:27:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1717564815736/38646e16-102a-47d7-93ea-1dcb4349ae82.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717564689486/5c5d86e1-5c64-421a-8eea-3adafbe908af.jpeg" alt class="image--center mx-auto" /></p>
<h3 id="heading-prerequisites">Prerequisites:</h3>
<ul>
<li><p>Bitbucket</p>
</li>
<li><p>Anypoint Platform (Exchange Contributor, Runtime Access)</p>
</li>
</ul>
<h3 id="heading-mule-api-project-structure">Mule API Project Structure:</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717563266101/777faec7-ba0d-4d26-ae67-46e8a9aa1d1b.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-before-you-deploy-mule-application-to-cloudhub-20">Before you Deploy Mule Application to Cloudhub 2.0</h3>
<p>Update Pom xml file with Distribution Management</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">distributionManagement</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-connected-app-v3<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Exchange Private Repository<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://maven.anypoint.mulesoft.com/api/v3/organizations/${project.groupId}/maven<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">layout</span>&gt;</span>default<span class="hljs-tag">&lt;/<span class="hljs-name">layout</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">distributionManagement</span>&gt;</span>
</code></pre>
<p>Update Pom Xml with repositories</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">repositories</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-connected-app-v3<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Anypoint Exchange<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://maven.anypoint.mulesoft.com/api/v3/maven<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">layout</span>&gt;</span>default<span class="hljs-tag">&lt;/<span class="hljs-name">layout</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>mulesoft-releases<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>MuleSoft Releases Repository<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://repository.mulesoft.org/releases/<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">layout</span>&gt;</span>default<span class="hljs-tag">&lt;/<span class="hljs-name">layout</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>anypoint-exchange-v3<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Anypoint Exchange V3<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://maven.anypoint.mulesoft.com/api/v3/maven<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">layout</span>&gt;</span>default<span class="hljs-tag">&lt;/<span class="hljs-name">layout</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">repositories</span>&gt;</span>
</code></pre>
<p>For groupId please refer <a target="_blank" href="https://help.salesforce.com/s/articleView?id=001115130&amp;type=1">How to know my Organization ID (Org ID) on the Anypoint Platform</a></p>
<p>To deploy a Mule application to CloudHub 2.0, the application must first be published to Anypoint Exchange and then deployed.</p>
<p>To publish the application to Anypoint Exchange, create a file named <code>settings.xml</code> within it.</p>
<pre><code class="lang-xml"><span class="hljs-meta">&lt;?xml version="1.0"?&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">settings</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">pluginGroups</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">pluginGroup</span>&gt;</span>org.mule.tools<span class="hljs-tag">&lt;/<span class="hljs-name">pluginGroup</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">pluginGroups</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">servers</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">server</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">username</span>&gt;</span>~~~Client~~~<span class="hljs-tag">&lt;/<span class="hljs-name">username</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">password</span>&gt;</span>${CLOUDHUB_CLIENT_ID}~?~${CLOUDHUB_CLIENT_SECRET}<span class="hljs-tag">&lt;/<span class="hljs-name">password</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-connected-app-v3<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">server</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">servers</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">profiles</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">profile</span>&gt;</span>    
        <span class="hljs-tag">&lt;<span class="hljs-name">properties</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">org.id</span>&gt;</span>ffb8acd1-c3ef-428d-8f40-b6e01fa634c2<span class="hljs-tag">&lt;/<span class="hljs-name">org.id</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">properties</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">repositories</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-connected-app-v3<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Corporate Repository<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://maven.anypoint.mulesoft.com/api/v3/organizations/${org.id}/maven<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
          <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-connected-app-v2<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Corporate Repository<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://maven.anypoint.mulesoft.com/api/v2/organizations/${org.id}/maven<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
          <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">repositories</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-repos<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">profile</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">profiles</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">activeProfiles</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">activeProfile</span>&gt;</span>exchange-repos<span class="hljs-tag">&lt;/<span class="hljs-name">activeProfile</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">activeProfiles</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">settings</span>&gt;</span>
</code></pre>
<p>This repository will serve as an example. The code for your Mule application should be stored here.</p>
<p>After your code is uploaded to Bitbucket, create a new YAML file containing the pipeline's actual code.</p>
<pre><code class="lang-yaml"><span class="hljs-attr">image:</span> <span class="hljs-string">maven:3.8.4-openjdk-8</span>

<span class="hljs-attr">pipelines:</span>
    <span class="hljs-attr">branches:</span>
      <span class="hljs-attr">develop:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-attr">step:</span>
            <span class="hljs-attr">name:</span> <span class="hljs-string">Git</span> <span class="hljs-string">Security</span> <span class="hljs-string">Scan</span>
            <span class="hljs-attr">caches:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-string">maven</span>
            <span class="hljs-attr">script:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-attr">pipe:</span> <span class="hljs-string">atlassian/git-secrets-scan:0.5.1</span>  
        <span class="hljs-bullet">-</span> <span class="hljs-attr">step:</span>
            <span class="hljs-attr">name:</span> <span class="hljs-string">Validate</span> <span class="hljs-string">&amp;</span> <span class="hljs-string">Compile</span>
            <span class="hljs-attr">caches:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-string">maven</span> 
            <span class="hljs-attr">script:</span>          
                <span class="hljs-bullet">-</span> <span class="hljs-string">mvn</span> <span class="hljs-string">-B</span> <span class="hljs-string">clean</span> <span class="hljs-string">-DskipTests</span> <span class="hljs-string">package</span>
          <span class="hljs-attr">step:</span>
            <span class="hljs-attr">name:</span> <span class="hljs-string">Publish</span> <span class="hljs-string">to</span> <span class="hljs-string">Exchange</span>
            <span class="hljs-attr">caches:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-string">maven</span> 
            <span class="hljs-attr">script:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-string">mvn</span> <span class="hljs-string">deploy</span> <span class="hljs-string">-s</span> <span class="hljs-string">settings.xml</span>
        <span class="hljs-bullet">-</span> <span class="hljs-attr">step:</span>
            <span class="hljs-attr">name:</span> <span class="hljs-string">Deploy</span> <span class="hljs-string">to</span> <span class="hljs-string">dev</span> <span class="hljs-string">cloudhub</span>
            <span class="hljs-attr">deployment:</span> <span class="hljs-string">Sandbox</span>
            <span class="hljs-attr">caches:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-string">maven</span>
            <span class="hljs-attr">script:</span>  
                <span class="hljs-bullet">-</span> <span class="hljs-string">mvn</span> <span class="hljs-string">deploy</span> <span class="hljs-string">-s</span> <span class="hljs-string">settings.xml</span> <span class="hljs-string">-DmuleDeploy</span> <span class="hljs-string">-Denvironment=Sandbox</span> <span class="hljs-string">-DtargetName=Cloudhub-US-East-2</span> <span class="hljs-string">-DmuleVersion=4.6.2</span> <span class="hljs-string">-Dworkers=1</span> <span class="hljs-string">-DworkerType=MICRO</span> <span class="hljs-string">-DCLOUDHUB_CLIENT_ID=$CLOUDHUB_CLIENT_ID</span> <span class="hljs-string">-DCLOUDHUB_CLIENT_SECRET=$CLOUDHUB_CLIENT_SECRET</span> <span class="hljs-string">-DappName=mule-cloudhub2-deploy14</span>
</code></pre>
<h3 id="heading-create-deployment-enveironment">Create Deployment enveironment:</h3>
<p>create a environment in bitbucket Named as per the deployment environment added in the <strong>Deploy to dev cloudhub</strong> step.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717564310749/d2e87c63-a2cc-4360-bdc5-9a3b3ca3c4e6.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-update-repository-variables">Update Repository Variables:</h3>
<p>For connected app credentials refer <a target="_blank" href="https://help.salesforce.com/s/articleView?id=001115971&amp;type=1">Connected App functionality</a></p>
<p>update connected app secrets in repository settings as below</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717563506732/6a0dbf2a-ab70-45ea-b9a8-0a8e4a7edc68.png" alt class="image--center mx-auto" /></p>
<p>In the above bibucket yaml is written to run manually, In Pipelines select branch and step to run the pipeline as below.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717563675900/4dd39293-73f3-41eb-87f1-29c68583113f.png" alt class="image--center mx-auto" /></p>
<p>once the pipeline is triggered application will be published to Anypoint Exchange and deployed.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717563911240/036905eb-e7e2-4e9c-b4cf-4ac238ee61cd.png" alt class="image--center mx-auto" /></p>
<p>Application deployed to Cloudhub 2.0.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717565114178/327f85c3-e56c-4de4-be0d-86b2905c7549.png" alt class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[Continuous Integration of Applications to CloudHub 2.0 using Github Actions]]></title><description><![CDATA[Prerequisites:

Github

Anypoint Platform (Exchange Contributor, Runtime Access)


Mule API Project Structure:

Before you Deploy Mule Application to Cloudhub 2.0
Update Pom xml file with Distribution Management
<distributionManagement>
  <repository...]]></description><link>https://blog.rnhintegrations.com/continuous-integration-of-applications-to-cloudhub-20-using-github-actions</link><guid isPermaLink="true">https://blog.rnhintegrations.com/continuous-integration-of-applications-to-cloudhub-20-using-github-actions</guid><category><![CDATA[#Cloudhub 2.0]]></category><category><![CDATA[Anypoint]]></category><category><![CDATA[CloudHub]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[github-actions]]></category><category><![CDATA[Actions]]></category><category><![CDATA[mule]]></category><category><![CDATA[mulesoft]]></category><category><![CDATA[platform]]></category><dc:creator><![CDATA[NagaRaju Kukkadapu]]></dc:creator><pubDate>Mon, 03 Jun 2024 22:37:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1717468931225/a00f6e7e-3dda-4e3f-86f9-5dffc578a682.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717466743847/844eb53e-98c4-4481-9889-73ee3abf51f3.jpeg" alt class="image--center mx-auto" /></p>
<h3 id="heading-prerequisites">Prerequisites:</h3>
<ul>
<li><p>Github</p>
</li>
<li><p>Anypoint Platform (Exchange Contributor, Runtime Access)</p>
</li>
</ul>
<h3 id="heading-mule-api-project-structure">Mule API Project Structure:</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717449253474/2de5c610-95b3-4237-81d9-f5f4004f427c.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-before-you-deploy-mule-application-to-cloudhub-20">Before you Deploy Mule Application to Cloudhub 2.0</h3>
<p>Update Pom xml file with Distribution Management</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">distributionManagement</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-connected-app-v3<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Exchange Private Repository<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://maven.anypoint.mulesoft.com/api/v3/organizations/${project.groupId}/maven<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">layout</span>&gt;</span>default<span class="hljs-tag">&lt;/<span class="hljs-name">layout</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">distributionManagement</span>&gt;</span>
</code></pre>
<p>Update Pom Xml with repositories</p>
<pre><code class="lang-xml"><span class="hljs-tag">&lt;<span class="hljs-name">repositories</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-connected-app-v3<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Anypoint Exchange<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://maven.anypoint.mulesoft.com/api/v3/maven<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">layout</span>&gt;</span>default<span class="hljs-tag">&lt;/<span class="hljs-name">layout</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>mulesoft-releases<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>MuleSoft Releases Repository<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://repository.mulesoft.org/releases/<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">layout</span>&gt;</span>default<span class="hljs-tag">&lt;/<span class="hljs-name">layout</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>anypoint-exchange-v3<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Anypoint Exchange V3<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://maven.anypoint.mulesoft.com/api/v3/maven<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">layout</span>&gt;</span>default<span class="hljs-tag">&lt;/<span class="hljs-name">layout</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">repositories</span>&gt;</span>
</code></pre>
<p>For groupId please refer <a target="_blank" href="https://help.salesforce.com/s/articleView?id=001115130&amp;type=1">How to know my Organization ID (Org ID) on the Anypoint Platform</a></p>
<p>For the deployment of Mule application to Cloudhub 2.0 , application has to be published to exchange and then the deployment.</p>
<p>To publish the application to Anypoint Exchange create folder .maven and make file settings.xml.</p>
<pre><code class="lang-xml"><span class="hljs-meta">&lt;?xml version="1.0"?&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">settings</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">pluginGroups</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">pluginGroup</span>&gt;</span>org.mule.tools<span class="hljs-tag">&lt;/<span class="hljs-name">pluginGroup</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">pluginGroups</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">servers</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">server</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">username</span>&gt;</span>~~~Client~~~<span class="hljs-tag">&lt;/<span class="hljs-name">username</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">password</span>&gt;</span>${CONNECTED_APP_CLIENT_ID}~?~${CONNECTED_APP_CLIENT_SECRET}<span class="hljs-tag">&lt;/<span class="hljs-name">password</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-connected-app-v3<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">server</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">servers</span>&gt;</span>

  <span class="hljs-tag">&lt;<span class="hljs-name">profiles</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">profile</span>&gt;</span>    
        <span class="hljs-tag">&lt;<span class="hljs-name">properties</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">org.id</span>&gt;</span>${ORGANIZATION_ID}<span class="hljs-tag">&lt;/<span class="hljs-name">org.id</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">properties</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">repositories</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-connected-app-v3<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Corporate Repository<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://maven.anypoint.mulesoft.com/api/v3/organizations/${org.id}/maven<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
          <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-connected-app-v2<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Corporate Repository<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
            <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>https://maven.anypoint.mulesoft.com/api/v2/organizations/${org.id}/maven<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
          <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">repositories</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>exchange-repos<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">profile</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">profiles</span>&gt;</span>

    <span class="hljs-tag">&lt;<span class="hljs-name">activeProfiles</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">activeProfile</span>&gt;</span>exchange-repos<span class="hljs-tag">&lt;/<span class="hljs-name">activeProfile</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">activeProfiles</span>&gt;</span>

<span class="hljs-tag">&lt;/<span class="hljs-name">settings</span>&gt;</span>
</code></pre>
<p>This repository will serve as an example. The code for your Mule application should be stored here.</p>
<p>When your code is uploaded to GitHub, create a new folder named <code>.github</code>. Inside this folder, create another folder named <code>workflows</code>. This is where the YAML file containing the pipeline's actual code should be created.</p>
<p>In the YAML script below, the Git reference points to the <code>develop</code> branch, and the pipeline starts running only in the <code>develop</code> branch. Similarly, you can create jobs for multiple environments for each branch.</p>
<pre><code class="lang-yaml"><span class="hljs-comment"># This is a basic workflow to help you get started with Actions</span>

<span class="hljs-attr">name:</span> <span class="hljs-string">CI</span>

<span class="hljs-comment"># Controls when the workflow will run</span>
<span class="hljs-attr">on:</span>
  <span class="hljs-comment"># Triggers the workflow on push or pull request events for all branches</span>

 <span class="hljs-attr">push:</span>
  <span class="hljs-attr">branches:</span> [<span class="hljs-string">"develop"</span>,<span class="hljs-string">"main"</span>]
 <span class="hljs-attr">pull_request:</span>
  <span class="hljs-attr">branches:</span> [<span class="hljs-string">"develop"</span>,<span class="hljs-string">"main"</span>]


<span class="hljs-attr">jobs:</span>
 <span class="hljs-attr">build:</span>
  <span class="hljs-attr">if:</span> <span class="hljs-string">${{</span> <span class="hljs-string">contains(github.ref,</span> <span class="hljs-string">'dev'</span><span class="hljs-string">)</span> <span class="hljs-string">||contains(github.ref,</span> <span class="hljs-string">'release'</span><span class="hljs-string">)</span> <span class="hljs-string">}}</span>
  <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span>
  <span class="hljs-attr">steps:</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">'MULE CONNECTED APP USER--$<span class="hljs-template-variable">{{vars.MULE_CONNECT_APP_USER}}</span>'</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">'MULE CONNECTED APP PASSWORD--$<span class="hljs-template-variable">{{vars.MULE_CONNECT_APP_PWD}}</span>'</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">'Eventname-- $<span class="hljs-template-variable">{{ github.event_name  }}</span>'</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">'event-- $<span class="hljs-template-variable">{{ github.event  }}</span>'</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">'Ref-- $<span class="hljs-template-variable">{{ github.ref  }}</span>'</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">'RefName-- $<span class="hljs-template-variable">{{ github.refname  }}</span>'</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">'github head ref-- $<span class="hljs-template-variable">{{   github.head_ref }}</span>'</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Checkout</span> <span class="hljs-string">this</span> <span class="hljs-string">repo</span>
      <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v3</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Cache</span> <span class="hljs-string">dependencies</span>
      <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/cache@v3</span>
      <span class="hljs-attr">with:</span>
        <span class="hljs-attr">path:</span> <span class="hljs-string">~/.m2/repository</span>
        <span class="hljs-attr">key:</span> <span class="hljs-string">${{</span> <span class="hljs-string">runner.os</span> <span class="hljs-string">}}-maven-${{</span> <span class="hljs-string">hashFiles('**/pom.xml')</span> <span class="hljs-string">}}</span>
        <span class="hljs-attr">restore-keys:</span> <span class="hljs-string">|
          ${{ runner.os }}-maven-
</span>    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Set</span> <span class="hljs-string">up</span> <span class="hljs-string">JDK</span> <span class="hljs-number">1.8</span>
      <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/setup-java@v3</span>
      <span class="hljs-attr">with:</span>
        <span class="hljs-attr">distribution:</span> <span class="hljs-string">'zulu'</span>
        <span class="hljs-attr">java-version:</span> <span class="hljs-number">8</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Build</span> <span class="hljs-string">with</span> <span class="hljs-string">Maven</span>
      <span class="hljs-attr">env:</span>
        <span class="hljs-attr">USERNAME:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.CONNECTED_APP_CLIENT_ID</span> <span class="hljs-string">}}</span>
        <span class="hljs-attr">PASSWORD:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.CONNECTED_APP_CLIENT_SECRET</span> <span class="hljs-string">}}</span>
        <span class="hljs-attr">KEY:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.decryption_key</span> <span class="hljs-string">}}</span>    
      <span class="hljs-comment">#run: mvn --settings .maven/settings.xml clean install -e -X --file pom.xml</span>
      <span class="hljs-attr">run:</span> <span class="hljs-string">mvn</span> <span class="hljs-string">-B</span>  <span class="hljs-string">package</span> <span class="hljs-string">--file</span> <span class="hljs-string">pom.xml</span> <span class="hljs-string">--settings</span> <span class="hljs-string">.maven/settings.xml</span> <span class="hljs-string">-DskipMunitTests</span>

    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Stamp</span> <span class="hljs-string">artifact</span> <span class="hljs-string">file</span> <span class="hljs-string">name</span> <span class="hljs-string">with</span> <span class="hljs-string">commit</span> <span class="hljs-string">hash</span>
      <span class="hljs-attr">run:</span> <span class="hljs-string">|
        artifactName1=$(ls target/*.jar | head -1)
        commitHash=$(git rev-parse --short "$GITHUB_SHA")
        artifactName2=$(ls target/*.jar | head -1 | sed "s/.jar/-$commitHash.jar/g")
        mv $artifactName1 $artifactName2
</span>    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Upload</span> <span class="hljs-string">artifact</span> 
      <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/upload-artifact@v3</span>
      <span class="hljs-attr">with:</span>
          <span class="hljs-attr">name:</span> <span class="hljs-string">artifacts</span>
          <span class="hljs-attr">path:</span> <span class="hljs-string">target/*.jar</span>

 <span class="hljs-attr">deploy_to_dev:</span>
    <span class="hljs-attr">environment:</span>
      <span class="hljs-attr">name:</span> <span class="hljs-string">Dev</span>
    <span class="hljs-attr">if:</span> <span class="hljs-string">${{</span> <span class="hljs-string">contains(github.ref,</span> <span class="hljs-string">'dev'</span><span class="hljs-string">)</span> <span class="hljs-string">}}</span>
    <span class="hljs-attr">needs:</span> <span class="hljs-string">build</span>
    <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span>
    <span class="hljs-attr">steps:</span>  
    <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">'PROVIDER***--$<span class="hljs-template-variable">{{vars.DEPLOY_PROVIDER}}</span>'</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">run:</span> <span class="hljs-string">echo</span> <span class="hljs-string">'REPLICA COUNT***--$<span class="hljs-template-variable">{{vars.REPLICA_COUNT}}</span>'</span>

    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Checkout</span> <span class="hljs-string">this</span> <span class="hljs-string">repo</span>
      <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v3</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Cache</span> <span class="hljs-string">dependencies</span>
      <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/cache@v3</span>
      <span class="hljs-attr">with:</span>
        <span class="hljs-attr">path:</span> <span class="hljs-string">~/.m2/repository</span>
        <span class="hljs-attr">key:</span> <span class="hljs-string">${{</span> <span class="hljs-string">runner.os</span> <span class="hljs-string">}}-maven-${{</span> <span class="hljs-string">hashFiles('**/pom.xml')</span> <span class="hljs-string">}}</span>
        <span class="hljs-attr">restore-keys:</span> <span class="hljs-string">|
          ${{ runner.os }}-maven-
</span>    <span class="hljs-bullet">-</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/download-artifact@v3</span>
      <span class="hljs-attr">with:</span>
        <span class="hljs-attr">name:</span> <span class="hljs-string">artifacts</span>
    <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Deploy</span> <span class="hljs-string">to</span> <span class="hljs-string">dev</span>
      <span class="hljs-attr">env:</span>
        <span class="hljs-attr">CONNECTED_APP_CLIENT_ID:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.CONNECTED_APP_CLIENT_ID</span> <span class="hljs-string">}}</span>
        <span class="hljs-attr">CONNECTED_APP_CLIENT_SECRET:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.CONNECTED_APP_CLIENT_SECRET</span> <span class="hljs-string">}}</span>
        <span class="hljs-attr">KEY:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.decryption_key</span> <span class="hljs-string">}}</span>
      <span class="hljs-attr">run:</span> <span class="hljs-string">|</span>
        <span class="hljs-string">mvn</span> <span class="hljs-string">deploy</span> <span class="hljs-string">--settings</span> <span class="hljs-string">.maven/settings.xml</span>  <span class="hljs-string">-DskipMunitTests</span> <span class="hljs-string">-Dappname_env='dev'</span> <span class="hljs-string">-Denvironment=Sandbox</span> <span class="hljs-string">-DMULE_ENV=dev</span> <span class="hljs-string">-DDEPLOY_TARGET=Cloudhub-US-East-2</span> <span class="hljs-string">-DMULE_PROVIDER=MC</span> <span class="hljs-string">-DDEPLOY_MULE_VERSION=4.6.2</span>  <span class="hljs-string">-DDEPLOY_VCORE=1</span> <span class="hljs-string">-DDEPLOY_FORWARD_SSL_SESSION=true</span> <span class="hljs-string">-DDEPLOY_LAST_MILE_SECURITY=true</span> <span class="hljs-string">-DCONNECTED_APP_CLIENT_ID="$CONNECTED_APP_CLIENT_ID"</span> <span class="hljs-string">-DCONNECTED_APP_CLIENT_SECRET="$CONNECTED_APP_CLIENT_SECRET"</span>
</code></pre>
<h3 id="heading-update-connected-app-secrets">Update Connected App Secrets:</h3>
<p>For connected app credentials refer <a target="_blank" href="https://help.salesforce.com/s/articleView?id=001115971&amp;type=1">Connected App functionality</a></p>
<p>update connected app secrets in repository settings as below</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717453999492/6669cd24-7f3f-4b47-953f-a54267e53b1c.png" alt class="image--center mx-auto" /></p>
<p>If you are following any branching strategy, raise a pull request to the <code>develop</code> branch. As per the above script, the Git reference is pointed to the <code>develop</code> branch, so the pipeline will get triggered accordingly.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1717454131443/1163be98-9ac0-415f-aa06-8a587b57de28.png" alt class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[Static Code Check Using Mule Sonar Plugin]]></title><description><![CDATA[Prerequisites:

Docker

SonarQube

Anypoint Studio


Installation of Docker:

Installation on Windows

Installation on Mac


Installation of mule sonar plugin:

mule-sonar Repository link

https://github.com/mulesoft-catalyst/mule-sonarqube-plugin#se...]]></description><link>https://blog.rnhintegrations.com/static-code-check-using-mule-sonar-plugin</link><guid isPermaLink="true">https://blog.rnhintegrations.com/static-code-check-using-mule-sonar-plugin</guid><category><![CDATA[mulesoft]]></category><category><![CDATA[sonarqube]]></category><category><![CDATA[static]]></category><category><![CDATA[code]]></category><category><![CDATA[#check]]></category><dc:creator><![CDATA[NagaRaju Kukkadapu]]></dc:creator><pubDate>Tue, 26 Sep 2023 11:04:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1695726093140/88ca99d3-6bee-48ff-9e5e-f425189cc998.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-prerequisites">Prerequisites:</h3>
<ul>
<li><p>Docker</p>
</li>
<li><p>SonarQube</p>
</li>
<li><p>Anypoint Studio</p>
</li>
</ul>
<h3 id="heading-installation-of-docker">Installation of Docker:</h3>
<ul>
<li><p><a target="_blank" href="https://docs.docker.com/desktop/install/windows-install/">Installation on Windows</a></p>
</li>
<li><p><a target="_blank" href="https://docs.docker.com/desktop/install/mac-install/">Installation on Mac</a></p>
</li>
</ul>
<h3 id="heading-installation-of-mule-sonar-plugin">Installation of mule sonar plugin:</h3>
<ul>
<li><a target="_blank" href="https://github.com/mulesoft-catalyst/mule-sonarqube-plugin#server">mule-sonar Repository link</a></li>
</ul>
<p><a target="_blank" href="https://github.com/mulesoft-catalyst/mule-sonarqube-plugin#server">https://github.com/mulesoft-catalyst/mule-sonarqube-plugin#server</a></p>
<ul>
<li>On successful installation of docker run the below command to install mule sonar plugin</li>
</ul>
<pre><code class="lang-c">               docker pull fperezpa/mulesonarqube:<span class="hljs-number">7.7</span><span class="hljs-number">.3</span>
</code></pre>
<ul>
<li>On successful installation of sonar run the following command to start the sonar.</li>
</ul>
<pre><code class="lang-c">docker run -d --name sonarqube -p <span class="hljs-number">9000</span>:<span class="hljs-number">9000</span> -p <span class="hljs-number">9092</span>:<span class="hljs-number">9092</span> fperezpa/mulesonarqube:<span class="hljs-number">7.7</span><span class="hljs-number">.3</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695722838461/7c07e188-0a3c-42f8-833a-24bd1005a0f0.png" alt class="image--center mx-auto" /></p>
<ul>
<li>On Docker, screen sonar status can be seen</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695722901210/56d29467-b3c0-4762-8b82-90678ffaa0ac.png" alt class="image--center mx-auto" /></p>
<ul>
<li><p>On a Successful run and once the Sonar is <strong>Up</strong>.</p>
</li>
<li><p>Call <a target="_blank" href="http://localhost:9000">http://localhost:9000</a> on the browser.</p>
</li>
<li><p>Pass credentials below</p>
<p>  username: admin</p>
<p>                                Password: admin</p>
<h3 id="heading-static-code-check">Static Code Check:</h3>
</li>
<li><p>Update the properties with</p>
</li>
</ul>
<pre><code class="lang-xml">                <span class="hljs-tag">&lt;<span class="hljs-name">sonar.sources</span>&gt;</span>src/<span class="hljs-tag">&lt;/<span class="hljs-name">sonar.sources</span>&gt;</span>
</code></pre>
<ul>
<li>Update profiles to connect with sonar.</li>
</ul>
<pre><code class="lang-xml">        <span class="hljs-tag">&lt;<span class="hljs-name">profiles</span>&gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">profile</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>sonar<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">activation</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">activeByDefault</span>&gt;</span>true<span class="hljs-tag">&lt;/<span class="hljs-name">activeByDefault</span>&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">activation</span>&gt;</span>
                    <span class="hljs-tag">&lt;<span class="hljs-name">properties</span>&gt;</span>
                        <span class="hljs-tag">&lt;<span class="hljs-name">sonar.host.url</span>&gt;</span>
                            http://localhost:9000
                        <span class="hljs-tag">&lt;/<span class="hljs-name">sonar.host.url</span>&gt;</span>
                    <span class="hljs-tag">&lt;/<span class="hljs-name">properties</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">profile</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">profiles</span>&gt;</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695723688671/0558e883-36c4-4f76-ba3e-f40e724a0d68.jpeg" alt class="image--center mx-auto" /></p>
<ul>
<li>Run the following command at project exists where pom.xml exists.</li>
</ul>
<pre><code class="lang-xml">                mvn sonar:sonar
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695723824384/ace00824-7a24-402d-b4c9-162e34524c59.png" alt class="image--center mx-auto" /></p>
<ul>
<li>On successful build at <a target="_blank" href="http://lolcahost:9000/projects">http://lolcahost:9000/projects</a>, you can see the project got created with static code check.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695723905985/573ec53a-c427-48eb-aeba-b9025e90f828.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695723932823/40a10288-bf8d-4f2d-8c31-6c49ccd64b7c.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1695723954956/a6ef3706-3b06-4723-8d02-b9c4fc27dfff.png" alt class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[Getting Started With 
API Gateway and Cloud Functions]]></title><description><![CDATA[Prerequisites:

Google Cloud Account

Installing Google CLI

Sample application to deploy to gcloud

Postman to test




In the Google Cloud console, go to the Dashboard page and select or create a Google Cloud project.

Go to Dashboard Page https://...]]></description><link>https://blog.rnhintegrations.com/getting-started-with-api-gateway-and-cloud-functions</link><guid isPermaLink="true">https://blog.rnhintegrations.com/getting-started-with-api-gateway-and-cloud-functions</guid><category><![CDATA[gcloud-cli]]></category><category><![CDATA[GCP]]></category><category><![CDATA[cli]]></category><category><![CDATA[cloud functions]]></category><category><![CDATA[Cloud]]></category><dc:creator><![CDATA[NagaRaju Kukkadapu]]></dc:creator><pubDate>Wed, 16 Aug 2023 17:47:28 GMT</pubDate><content:encoded><![CDATA[<p><strong>Prerequisites:</strong></p>
<ul>
<li><p>Google Cloud Account</p>
</li>
<li><p>Installing Google CLI</p>
</li>
<li><p>Sample application to deploy to gcloud</p>
</li>
<li><p>Postman to test</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1692203866839/e2730eb6-d778-4651-ba03-27e1b4f24fd7.png" alt class="image--center mx-auto" /></p>
<ol>
<li><p>In the Google Cloud console, go to the Dashboard page and select or create a Google Cloud project.</p>
<ul>
<li><p>Go to Dashboard Page <a target="_blank" href="https://console.cloud.google.com/projectselector2/home/dashboard?_ga=2.124589327.405847725.1691588802-1872602126.1691583025">https://console.cloud.google.com/projectselector2/home/dashboard?_ga=2.124589327.405847725.1691588802-1872602126.1691583025</a></p>
</li>
<li><p>Select the Project as shown below and click on New Project</p>
</li>
</ul>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1692203986101/b5fd429c-5949-42c0-b9ea-3d5da9cc318c.png" alt class="image--center mx-auto" /></p>
<ul>
<li>Name the Project as per Naming standards and click on create.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1692204078012/8fc3ef1d-ebdf-4c76-9442-a08242809a54.png" alt class="image--center mx-auto" /></p>
<ol>
<li><p>Confirm billing is enabled for your project.</p>
<p> https://cloud.google.com/billing/docs/how-to/modify-project</p>
</li>
</ol>
<p><strong>Using Google Cloud CLI:</strong></p>
<ol>
<li>Install Google CLI in Mac using bash.</li>
</ol>
<ul>
<li>command to install CLI using bash</li>
</ul>
<pre><code class="lang-plaintext">·       curl https://sdk.cloud.google.com | bash
</code></pre>
<ul>
<li><p>For other installation process for Mac or Windows.</p>
<p>  <a target="_blank" href="https://cloud.google.com/sdk/docs/install-sdk">https://cloud.google.com/sdk/docs/install-sdk</a></p>
</li>
</ul>
<ol>
<li>Login to gcloud in CLI</li>
</ol>
<pre><code class="lang-plaintext">•    gcloud auth login
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1692206540387/a73cf514-71df-49c8-8e95-a4cd4b770708.png" alt class="image--center mx-auto" /></p>
<ol>
<li>To set Project Id</li>
</ol>
<pre><code class="lang-plaintext">·       gcloud config set project projectId
</code></pre>
<ul>
<li>Get the project Id selecting the project and projectId can be found in the URL.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1692206866087/09d4c004-ce7d-4e70-8b60-9c7d5818768d.png" alt class="image--center mx-auto" /></p>
<ol>
<li><p>To check if Service List enabled</p>
<pre><code class="lang-c"> ·       gcloud services <span class="hljs-built_in">list</span>
</code></pre>
<ul>
<li>Enabling required services</li>
</ul>
</li>
</ol>
<p>    API Gateway requires that you enable the following Google services:</p>
    <table><tbody><tr><td><p><strong>Name</strong></p></td><td><p><strong>Title</strong></p></td></tr><tr><td><p><a target="_blank" href="http://apigateway.googleapis.com">apigateway.googleapis.com</a></p></td><td><p>API Gateway API</p></td></tr><tr><td><p><a target="_blank" href="http://servicemanagement.googleapis.com">servicemanagement.googleapis.com</a></p></td><td><p>Service Management API</p></td></tr><tr><td><p><a target="_blank" href="http://servicecontrol.googleapis.com">servicecontrol.googleapis.com</a></p></td><td><p>Service Control API</p></td></tr></tbody></table>

<ul>
<li>If you do not see the required services listed, enable them:</li>
</ul>
<pre><code class="lang-c">    - gcloud services enable apigateway.googleapis.com
    - gcloud services enable servicemanagement.googleapis.com
    - gcloud services enable servicecontrol.googleapis.com
</code></pre>
<ol>
<li>Sample application to deploy to gcloud.</li>
</ol>
<pre><code class="lang-c">cmd:
gcloud functions deploy java-http-function --gen2 --entry-point com.example.functions.Main --runtime=java11 –-{Region} --source={folderlocation} --trigger-http --allow-unauthenticated
</code></pre>
<pre><code class="lang-c">Example:
gcloud functions deploy java-http-function --gen2 --entry-point com.example.functions.Main --runtime=java11 --region=us-east1 --source=/Users/Downloads/gcp-cloud-functions --trigger-http --allow-unauthenticated
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1692207462871/4549fcb3-d0db-4290-80fa-1ef74e4d679e.png" alt class="image--center mx-auto" /></p>
<ul>
<li>On Completion of deployment Gcp URL will be generated to call</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1692207479672/d5e3ff9a-72a5-4d01-a9cb-e3db2e01e338.png" alt class="image--center mx-auto" /></p>
<ol>
<li>Test the Endpoint URL with the Input as per your implementation.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1692207619261/70fcb1d5-22a3-4a7c-b5c3-0fcee7a8f8b2.png" alt class="image--center mx-auto" /></p>
<ol>
<li>To trace Logs</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1692207675119/226c33b7-2807-410b-b5ff-7cf9ca703dd7.png" alt class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[Configure Appender to Splunk in Mule Application log4j configuration]]></title><description><![CDATA[Introduction:  

Splunk is a tool used for logging, analysing, reporting, visualising, monitoring or searching the machine data in real time.
HEC offers an experience on Splunk Cloud deployments that Splunk manages that is similar to the experience o...]]></description><link>https://blog.rnhintegrations.com/configure-appender-to-splunk-in-mule-application-log4j-configuration</link><guid isPermaLink="true">https://blog.rnhintegrations.com/configure-appender-to-splunk-in-mule-application-log4j-configuration</guid><dc:creator><![CDATA[NagaRaju Kukkadapu]]></dc:creator><pubDate>Mon, 02 May 2022 15:46:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1651506338034/gAfHeJLCG.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Introduction</strong>:  </p>
<ul>
<li>Splunk is a tool used for logging, analysing, reporting, visualising, monitoring or searching the machine data in real time.</li>
<li>HEC offers an experience on Splunk Cloud deployments that Splunk manages that is similar to the experience on self-service Splunk Cloud. The following exceptions apply, you cannot make changes to configuration files, because Splunk Cloud does not provide that access.</li>
</ul>
<p><strong>Creating HTTP Event Collector Token: </strong> 
The HTTP Event Collector (HEC) lets you send data and application events to a Splunk deployment over the HTTP and Secure HTTP (HTTPS) protocols. HEC uses a token-based authentication model.
For creating token, navigate to Settings → Data inputs → HTTP Event Collector</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651503637583/dQ91rmslF.png" alt="Screenshot 1944-02-12 at 8.30.29 PM.png" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651503672785/pPpAYDKAh.png" alt="Screenshot 1944-02-12 at 8.31.05 PM.png" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651503713750/lmNcXhkQ4.png" alt="Screenshot 1944-02-12 at 8.31.43 PM.png" /></p>
<p>Once you click on New Token button, it will navigate to form, and start filling details like Name and click on Next at top of web page for filling further details.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651503755575/jP6srCBDm.png" alt="Screenshot 1944-02-12 at 8.32.24 PM.png" /></p>
<p>On the next screen you can select SourceType as log4j as we will be using log4j as source for sending data to Splunk from MuleSoft application.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651503832736/T6kycegW3.png" alt="Screenshot 1944-02-12 at 8.33.40 PM.png" /></p>
<p>Now configure the index and make sure main index as Default. And then Click Next à Submit</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651503884603/miSd8JYEw.png" alt="Screenshot 1944-02-12 at 8.34.34 PM.png" /></p>
<p>Once you clicked on Submit button, it will create a token and that we will be using for authentication purpose.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651503949151/-zJcHuzDC.png" alt="Screenshot 1944-02-12 at 8.35.38 PM.png" /></p>
<p>Here in Anypoint studio configure Log4j Appender to send log data to Splunk instance.</p>
<p>Procedure: One can configure log4j2.xml file inside application configuration on src/main/resources and use specific Splunk appender. below are the configuration details for Splunk appender approach.</p>
<pre><code>                            Splunk appender

            <span class="hljs-operator">&lt;</span>SplunkHttp name<span class="hljs-operator">=</span><span class="hljs-string">"Splunk"</span>
                 url<span class="hljs-operator">=</span><span class="hljs-string">"https://ped-p-fn3wj.splunkcloud.com:8088/"</span>
                 token<span class="hljs-operator">=</span><span class="hljs-string">"460fedc3-702b-487d-afaa-7997ccdce793"</span>
                 batch_size_count<span class="hljs-operator">=</span><span class="hljs-string">"1"</span>
                 disableCertificateValidation<span class="hljs-operator">=</span><span class="hljs-string">"true"</span><span class="hljs-operator">&gt;</span>
                 <span class="hljs-operator">&lt;</span>PatternLayout pattern<span class="hljs-operator">=</span><span class="hljs-string">"[%d{MM-dd HH:mm:ss}] %-5p %c{1} [%t]:      %m%n"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
             <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>SplunkHttp<span class="hljs-operator">&gt;</span>
</code></pre><p>The standard form for the URI in managed Splunk Cloud is as follows:</p>
<pre><code>              &lt;protocol&gt;<span class="hljs-symbol">://http-inputs-&lt;host&gt;</span><span class="hljs-symbol">:&lt;port&gt;/&lt;endpoint&gt;</span>
</code></pre><p>While using SplunkHttp, you need to add the following dependency in pom.xml of your application.</p>
<pre><code>               <span class="hljs-tag">&lt;<span class="hljs-name">dependency</span>&gt;</span>
                  <span class="hljs-tag">&lt;<span class="hljs-name">groupId</span>&gt;</span>com.splunk.logging<span class="hljs-tag">&lt;/<span class="hljs-name">groupId</span>&gt;</span>
                  <span class="hljs-tag">&lt;<span class="hljs-name">artifactId</span>&gt;</span>splunk-library-javalogging<span class="hljs-tag">&lt;/<span class="hljs-name">artifactId</span>&gt;</span>
                  <span class="hljs-tag">&lt;<span class="hljs-name">version</span>&gt;</span>1.7.3<span class="hljs-tag">&lt;/<span class="hljs-name">version</span>&gt;</span>
               <span class="hljs-tag">&lt;/<span class="hljs-name">dependency</span>&gt;</span>
             <span class="hljs-tag">&lt; <span class="hljs-attr">---------------------------------------------</span> &gt;</span>
                <span class="hljs-tag">&lt;<span class="hljs-name">repository</span>&gt;</span>
                  <span class="hljs-tag">&lt;<span class="hljs-name">id</span>&gt;</span>splunk-artifactory<span class="hljs-tag">&lt;/<span class="hljs-name">id</span>&gt;</span>
                  <span class="hljs-tag">&lt;<span class="hljs-name">name</span>&gt;</span>Splunk Releases<span class="hljs-tag">&lt;/<span class="hljs-name">name</span>&gt;</span>
                  <span class="hljs-tag">&lt;<span class="hljs-name">url</span>&gt;</span>http://splunk.jfrog.io/splunk/ext-releases-local<span class="hljs-tag">&lt;/<span class="hljs-name">url</span>&gt;</span>
                <span class="hljs-tag">&lt;/<span class="hljs-name">repository</span>&gt;</span>
</code></pre><p>You may need  to add below two additional dependencies.</p>
<pre><code>                 <span class="hljs-operator">&lt;</span>dependency<span class="hljs-operator">&gt;</span>
                    <span class="hljs-operator">&lt;</span>groupId<span class="hljs-operator">&gt;</span>org.apache.logging.log4j&lt;<span class="hljs-operator">/</span>groupId<span class="hljs-operator">&gt;</span>
                    <span class="hljs-operator">&lt;</span>artifactId<span class="hljs-operator">&gt;</span>log4j<span class="hljs-operator">-</span>core<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>artifactId<span class="hljs-operator">&gt;</span>
                    <span class="hljs-operator">&lt;</span>version<span class="hljs-operator">&gt;</span><span class="hljs-number">2.10</span><span class="hljs-number">.0</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>version<span class="hljs-operator">&gt;</span>
                 <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>dependency<span class="hljs-operator">&gt;</span>
                 <span class="hljs-operator">&lt;</span>dependency<span class="hljs-operator">&gt;</span>
                     <span class="hljs-operator">&lt;</span>groupId<span class="hljs-operator">&gt;</span>org.apache.logging.log4j&lt;<span class="hljs-operator">/</span>groupId<span class="hljs-operator">&gt;</span>
                     <span class="hljs-operator">&lt;</span>artifactId<span class="hljs-operator">&gt;</span>log4j<span class="hljs-operator">-</span>api<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>artifactId<span class="hljs-operator">&gt;</span>
                     <span class="hljs-operator">&lt;</span>version<span class="hljs-operator">&gt;</span><span class="hljs-number">2.10</span><span class="hljs-number">.0</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>version<span class="hljs-operator">&gt;</span>
                 <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>dependency<span class="hljs-operator">&gt;</span>
</code></pre><p>Note: We need to define loggers in log4j2.xml.
make sure AppenderRef is match with name of SplunkHttp Appender.</p>
<pre><code>   <span class="hljs-operator">&lt;</span>AsyncRoot level<span class="hljs-operator">=</span>”INFO”<span class="hljs-operator">&gt;</span> <span class="hljs-operator">&lt;</span>AppenderRef ref<span class="hljs-operator">=</span>”Splunk”<span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>AsyncRoot<span class="hljs-operator">&gt;</span>
</code></pre><p><strong>Enable Custom Logging for CloudHub Application:</strong>
           When you disable the default CloudHub application logs, then only the system logs are available. For application worker logs, please check your own application’s logging system.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651505444336/T_PX-bAtR.png" alt="Screenshot 1944-02-12 at 9.00.34 PM.png" /></p>
<pre><code><span class="hljs-operator">&lt;</span>?xml version<span class="hljs-operator">=</span><span class="hljs-string">"1.0"</span> encoding<span class="hljs-operator">=</span><span class="hljs-string">"UTF-8"</span>?<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>Log4J2CloudhubLogAppender name<span class="hljs-operator">=</span><span class="hljs-string">"CLOUDHUB"</span> addressProvider<span class="hljs-operator">=</span><span class="hljs-string">"com.mulesoft.ch.logging.DefaultAggregatorAddressProvider"</span> applicationContext<span class="hljs-operator">=</span><span class="hljs-string">"com.mulesoft.ch.logging.DefaultApplicationContext"</span> appendRetryIntervalMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.appendRetryInterval}"</span> appendMaxAttempts<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.appendMaxAttempts}"</span> batchSendIntervalMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.batchSendInterval}"</span> batchMaxRecords<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.batchMaxRecords}"</span> memBufferMaxSize<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.memBufferMaxSize}"</span> journalMaxWriteBatchSize<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.journalMaxBatchSize}"</span> journalMaxFileSize<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.journalMaxFileSize}"</span> clientMaxPacketSize<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.clientMaxPacketSize}"</span> clientConnectTimeoutMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.clientConnectTimeout}"</span> clientSocketTimeoutMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.clientSocketTimeout}"</span> serverAddressPollIntervalMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.serverAddressPollInterval}"</span> serverHeartbeatSendIntervalMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.serverHeartbeatSendIntervalMs}"</span> statisticsPrintIntervalMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.statisticsPrintIntervalMs}"</span><span class="hljs-operator">&gt;</span>
   <span class="hljs-operator">&lt;</span>PatternLayout pattern<span class="hljs-operator">=</span><span class="hljs-string">"[%d{MM-dd     HH:mm:ss}] %-5p %c{1} [%t]: %m%n"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>Log4J2CloudhubLogAppender<span class="hljs-operator">&gt;</span>
</code></pre><p>make sure AppenderRef is match with name of cloudhub Appender.</p>
<pre><code><span class="hljs-operator">&lt;</span>AsyncRoot     level<span class="hljs-operator">=</span>”INFO”<span class="hljs-operator">&gt;</span>   <span class="hljs-operator">&lt;</span>AppenderRef ref<span class="hljs-operator">=</span>”cloudhub”    <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>AsyncRoot<span class="hljs-operator">&gt;</span>
</code></pre><p>Below is full log4j2.xml which can be used for your application for enabling custom logging</p>
<pre><code><span class="hljs-operator">&lt;</span>?xml version<span class="hljs-operator">=</span><span class="hljs-string">"1.0"</span>encoding<span class="hljs-operator">=</span><span class="hljs-string">"UTF-8"</span>?<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span>Configuration status<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> name<span class="hljs-operator">=</span><span class="hljs-string">"cloudhub"</span>
 packages<span class="hljs-operator">=</span><span class="hljs-string">"com.mulesoft.ch.logging.appender,com.splunk.logging,org.apache.logging.log4j"</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>Appenders<span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>Log4J2CloudhubLogAppendername<span class="hljs-operator">=</span><span class="hljs-string">"CLOUDHUB"</span>
 addressProvider<span class="hljs-operator">=</span><span class="hljs-string">"com.mulesoft.ch.logging.DefaultAggregatorAddressProvider"</span>
 applicationContext<span class="hljs-operator">=</span><span class="hljs-string">"com.mulesoft.ch.logging.DefaultApplicationContext"</span>
 appendRetryIntervalMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.appendRetryInterval}"</span>
 appendMaxAttempts<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.appendMaxAttempts}"</span>
 batchSendIntervalMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.batchSendInterval}"</span>
 batchMaxRecords<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.batchMaxRecords}"</span>memBufferMaxSize<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.memBufferMaxSize}"</span>
 journalMaxWriteBatchSize<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.journalMaxBatchSize}"</span>
 journalMaxFileSize<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.journalMaxFileSize}"</span>
 clientMaxPacketSize<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.clientMaxPacketSize}"</span>
 clientConnectTimeoutMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.clientConnectTimeout}"</span>
 clientSocketTimeoutMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.clientSocketTimeout}"</span>
 serverAddressPollIntervalMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.serverAddressPollInterval}"</span>
  serverHeartbeatSendIntervalMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.serverHeartbeatSendIntervalMs}"</span>
 statisticsPrintIntervalMs<span class="hljs-operator">=</span><span class="hljs-string">"${sys:logging.statisticsPrintIntervalMs}"</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>PatternLayoutpattern<span class="hljs-operator">=</span><span class="hljs-string">"[%d{MM-dd HH:mm:ss}] %-5p %c{1} [%t]:     %m%n"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>Log4J2CloudhubLogAppender<span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>SplunkHttpname<span class="hljs-operator">=</span><span class="hljs-string">"Splunk"</span> 
 url<span class="hljs-operator">=</span><span class="hljs-string">"https://prd-p-fn3wj.splunkcloud.com:8088/"</span>
 token<span class="hljs-operator">=</span><span class="hljs-string">"538feb69-9f16-4bd6-a0e1-ec7d0f71242b"</span>
 batch_size_count<span class="hljs-operator">=</span><span class="hljs-string">"1"</span>
 disableCertificateValidation<span class="hljs-operator">=</span><span class="hljs-string">"true"</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>PatternLayoutpattern<span class="hljs-operator">=</span><span class="hljs-string">"[%d{MM-dd HH:mm:ss}] %-5p %c{1} [%t]:     %m%n"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>SplunkHttp<span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>Appenders<span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>Loggers<span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLogger
 name<span class="hljs-operator">=</span><span class="hljs-string">"org.mule.runtime.core.internal.processor.LoggerMessageProcessor"</span>
 level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"com.mulesoft.agent"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncRootlevel<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span><span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>AppenderRefref<span class="hljs-operator">=</span><span class="hljs-string">"Splunk"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AppenderRef ref<span class="hljs-operator">=</span><span class="hljs-string">"CLOUDHUB"</span><span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>AsyncRoot<span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"com.gigaspaces"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"ERROR"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"com.j_spaces"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"ERROR"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"com.sun.jini"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"ERROR"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"net.jini"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"ERROR"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.apache"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"WARN"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.apache.cxf"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"WARN"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.springframework.beans.factory"</span>
 level<span class="hljs-operator">=</span><span class="hljs-string">"WARN"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.mule"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"com.mulesoft"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.jetel"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"WARN"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"Tracking"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"WARN"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.mule"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"com.mulesoft"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.mule.extensions.jms"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.mule.service.http.impl.service.HttpMessageLogger"</span>
 level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.mule.extension.salesforce"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
  <span class="hljs-operator">&lt;</span>AsyncLogger name<span class="hljs-operator">=</span><span class="hljs-string">"org.mule.extension.ftp"</span>level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.mule.extension.sftp"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"com.mulesoft.extension.ftps"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.mule.modules.sap"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"com.mulesoft.extension.mq"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"com.mulesoft.mq"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.mule.extension.db"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"INFO"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"httpclient.wire"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"DEBUG"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span>AsyncLoggername<span class="hljs-operator">=</span><span class="hljs-string">"org.mule.transport.email"</span> level<span class="hljs-operator">=</span><span class="hljs-string">"DEBUG"</span> <span class="hljs-operator">/</span><span class="hljs-operator">&gt;</span>
 <span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>Loggers<span class="hljs-operator">&gt;</span>
<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>Configuration<span class="hljs-operator">&gt;</span>
</code></pre><p><strong>JSON Logger:</strong>
JSON Logger is a component for logging the information, warning, errors. It logs the data in the form of JSON. It is recommended to use JSON Logger for your application and it logs the data.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651505973970/k2Z660YJO.png" alt="Screenshot 1944-02-12 at 9.09.14 PM.png" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651506008550/r21Wn8IMk.png" alt="Screenshot 1944-02-12 at 9.09.56 PM.png" /></p>
<ul>
<li>Now deploy the API to cloud hub and you can see the logs in splunk cloud
Now, you can verify the logs in Splunk, and it will be in JSON format.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651506055090/fB3uWDwRO.png" alt="Screenshot 1944-02-12 at 9.10.45 PM.png" /></p>
<p><strong>Conclusion:</strong>
Splunk is a very useful and powerful tool for logging, analysing, reporting, searching, and visualizing the events and data. MuleSoft provide capability to easily integrate Splunk using Anypoint Studio</p>
]]></content:encoded></item><item><title><![CDATA[Execute Composite Request In Salesforce]]></title><description><![CDATA[MuleSoft Salesforce connector helps you to work with Salesforce Batch and sobject Tree API’s 
Prerequisites:

Salesforce Developer Account 
Installing salesforce connector (by login into Anypoint exchange from studio you can install the salesforce co...]]></description><link>https://blog.rnhintegrations.com/execute-composite-request-in-salesforce</link><guid isPermaLink="true">https://blog.rnhintegrations.com/execute-composite-request-in-salesforce</guid><dc:creator><![CDATA[NagaRaju Kukkadapu]]></dc:creator><pubDate>Mon, 02 May 2022 14:49:54 GMT</pubDate><content:encoded><![CDATA[<p>MuleSoft Salesforce connector helps you to work with Salesforce Batch and sobject Tree API’s </p>
<p>Prerequisites:</p>
<ul>
<li>Salesforce Developer Account </li>
<li>Installing salesforce connector (by login into Anypoint exchange from studio you can install the salesforce connector)</li>
<li>Authentication OAuth Username and Password.<pre><code>   Username
   <span class="hljs-keyword">Password</span>
   Consumer Key
   Consumer Secret
   <span class="hljs-keyword">Security</span> Token
   Token Endpoint
</code></pre></li>
</ul>
<p>As we need to Create, Get, Update and Upsert Account in Salesforce using execute Composite Request in Salesforce </p>
<p>Create a Project in Anypoint Studio and drag and drop the salesforce Execute Composite Request </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1650909897111/ww7Yzk6gp.png" alt="Screenshot 1944-02-05 at 11.33.59 PM.png" /></p>
<ul>
<li><p>Configure the connection details for Salesforce and use OAuth Username and Password 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651502780382/lC7o8cgK8.png" alt="Screenshot 1944-02-12 at 8.16.02 PM.png" /></p>
</li>
<li><p>Create the payload to CREATE the Account in Salesforce</p>
<pre><code> <span class="hljs-attribute">url</span>: <span class="hljs-string">"/services/data/v50.0/sobjects/Account"</span>
</code></pre></li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1650912121940/D4U8pkqaZ.png" alt="Screenshot 1944-02-06 at 12.11.48 AM.png" /></p>
<ul>
<li>Create the payload to UPDATE the Account in Salesforce<pre><code>  <span class="hljs-attribute">url</span>: <span class="hljs-string">"/services/data/v50.0/sobjects/Account/{Id}"</span>
</code></pre></li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651502334189/_McujGSLf.png" alt="Screenshot 1944-02-12 at 8.08.16 PM.png" /></p>
<ul>
<li>Create the payload to UPSERT the Account in Salesforce<pre><code><span class="hljs-number">1.</span> url: "/services/data/v50.0/sobjects/Account/EXTERNALId/{Id}"
<span class="hljs-number">2.</span> EXTERNALId : it can be Id <span class="hljs-keyword">or</span> External_Id <span class="hljs-keyword">Type</span>
</code></pre></li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1651502567912/kOc9v7Sue.png" alt="Screenshot 1944-02-12 at 8.12.21 PM.png" /></p>
]]></content:encoded></item><item><title><![CDATA[Query Data From Zuora Object]]></title><description><![CDATA[This tutorial talks about how to query data from Zuora object using Zuora connector.
Prerequisites:

Installing Zuora connector (by login into Anypoint exchange from studio you can install the Salesforce connector)
Zuora developer account
Anypoint St...]]></description><link>https://blog.rnhintegrations.com/query-data-from-zuora-object</link><guid isPermaLink="true">https://blog.rnhintegrations.com/query-data-from-zuora-object</guid><category><![CDATA[integration]]></category><category><![CDATA[Java]]></category><dc:creator><![CDATA[NagaRaju Kukkadapu]]></dc:creator><pubDate>Sun, 24 Apr 2022 17:49:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1650822307789/XL-z_4jlT.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This tutorial talks about how to query data from Zuora object using Zuora connector.</p>
<h2 id="heading-prerequisites">Prerequisites:</h2>
<ul>
<li>Installing Zuora connector (by login into Anypoint exchange from studio you can install the Salesforce connector)</li>
<li>Zuora developer account</li>
<li>Anypoint Studio</li>
</ul>
<h2 id="heading-process">Process</h2>
<ul>
<li>Create an Mule Applicatio </li>
<li>If Zuora connecter is already present drag the Query Operation or else add the Zuora Module from Exchange</li>
<li>Configure the connection details with Zuora API Credentials and use the Basic Username and Password connection (Username, Password).</li>
<li>Get the details of the Zuora object and configure the listener to trigger the request</li>
</ul>
<p>
       <img src="https://docs.mulesoft.com/zuora-connector/0.3.9/_images/zuora-global-element-props.png" alt="Zuora Connector Configuration" /> 
</p>

<ul>
<li>Provide the Query string to retrieve the records as shown in the picture below
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1650822307789/XL-z_4jlT.png" alt="image.png" /></li>
<li>Deploy / Run the application and trigger the endpoint using postman</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1650822375471/hqlRGjCEp.png" alt="image.png" /></p>
]]></content:encoded></item></channel></rss>