<?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" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Naman Khard on Medium]]></title>
        <description><![CDATA[Stories by Naman Khard on Medium]]></description>
        <link>https://medium.com/@nkhard98?source=rss-56766fbd217f------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Stories by Naman Khard on Medium</title>
            <link>https://medium.com/@nkhard98?source=rss-56766fbd217f------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 19 May 2026 06:55:42 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@nkhard98/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Brief overview on Mendix-Snowflake Integration capabilities]]></title>
            <link>https://medium.com/@nkhard98/brief-overview-on-mendix-snowflake-integration-capabilities-f303274fe62e?source=rss-56766fbd217f------2</link>
            <guid isPermaLink="false">https://medium.com/p/f303274fe62e</guid>
            <category><![CDATA[mendix]]></category>
            <category><![CDATA[mendix-world]]></category>
            <category><![CDATA[snowflake]]></category>
            <category><![CDATA[snowflake-connector]]></category>
            <dc:creator><![CDATA[Naman Khard]]></dc:creator>
            <pubDate>Sun, 27 Apr 2025 08:41:14 GMT</pubDate>
            <atom:updated>2025-04-27T08:41:14.106Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*IkmGq7Z9JlGD7kBR.png" /><figcaption>Architecture of Snowflake-Mendix integration</figcaption></figure><p>This article aims to provide a summary of all the solutions available in Mendix marketplace and Snowflake marketplace to perform integration between both the platforms. Before we deep dive-in further, let’s quickly understand in brief what are these platform —</p><blockquote>Mendix is a platform used to build web, native, and hybrid applications through a low-code/no-code approach. It is primarily a cloud-based solution that operates in PaaS, IaaS, and on-premises models. Using the low-code approach, it aims to support rapid application development (RAD) and follows Agile methodology with an incremental/prototyping model in the SDLC for building applications.<br>Every Mendix application uses SQL DB for storing structured data and file storage documents server to store unstructured data.</blockquote><blockquote>Snowflake is a cloud-based data platform used to store both SQL and NoSQL records. It primarily operates on a PaaS model, with its storage layer hosted on one of the major cloud providers — AWS, Azure, or GCP. All data stored in Snowflake can be queried using Snowflake (similar to SQL) statements and accessed through the Snowflake UI (Snowsight), external connectors/drivers, or via the CLI.</blockquote><p>As of now, we have 3 modules in total offered by Mendix to perform the integration with Snowflake -<br><em>Referrence — </em><a href="https://docs.mendix.com/appstore/snowflake-modules/"><em>https://docs.mendix.com/appstore/snowflake-modules/</em></a></p><ol><li>Snowflake REST SQL Connector<br>- Available in Mendix Marketplace<br>- Can perform read and write operations with Snowflake<br>- Uses Https based REST approach to interact with Snowflake.<br>- <em>Link — </em><a href="https://marketplace.mendix.com/link/component/225717"><em>https://marketplace.mendix.com/link/component/225717</em></a></li><li>External Database Connector<br>- Available in Mendix marketplace<br>- Can perform read and write operations with Snowflake<br>- Uses JDBC driver approach to interact with Snowflake<br>- <em>Link — </em><a href="https://marketplace.mendix.com/link/component/219862"><em>https://marketplace.mendix.com/link/component/219862</em></a></li><li>Mendix Data Loader<br>- Available in snowflake marketplace<br>- Can perform write operations with Snowflake<br>- Uses Odata approach to fetch data from Mendix application and then directly ingest into Snowflake<br>- <em>Link — </em><a href="https://app.snowflake.com/marketplace/listing/GZTDZHHIE0/mendix-mendix-data-loader"><em>https://app.snowflake.com/marketplace/listing/GZTDZHHIE0/mendix-mendix-data-loader</em></a></li></ol><p>Let’s quickly explore what are the capabilities offered by each of them understanding in form of pros-cons :</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/514/0*DXRLhRhwz_VVHJbb.png" /><figcaption>Snowflake SQL Rest Connector</figcaption></figure><h4><a href="https://marketplace.mendix.com/link/component/225717">Snowflake SQL Rest Connector</a> -</h4><p><strong>Pros:</strong><br>- Authentication with an RSA key pair according to PKCS #8 standard<br>- Authentication with OAUTH through an OIDC provider<br>- Execution of single SQL statements<br>- Synchronous execution of calls<br>- Execution of a Cortex Analyst query<br>- Convenient to create SQL queries in microflow<br>- Doesn’t have any dependencies on any snowflake jars or libraries.<br>- Can add multiple authentication for configuration and dynamically call SQL statements via identifiers.</p><p><strong>Cons -</strong><br>- Complex execution of calling SQL statements asynchronously.<br>- Slow performance can be observed in case of congestion.<br>- Can be inefficient if multiple SQL statements are concurrently called for execution asynchronously.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/0*cQVUytrtqKUJqm_i.png" /><figcaption>External Database Connector</figcaption></figure><h4><a href="https://marketplace.mendix.com/link/component/219862">External Database Connector —</a></h4><p><strong>Pros:<br></strong>- Authentication with an RSA key pair according to PKCS #8 standard<br>- Supports synchronous and asynchronous executions of SQL calls.<br>- Supports execution of multi SQL statements via CTE.<br>- Supports calling SQL statements of stored procedures.<br>- As compared to SQL Rest Connector, this can be more performant in case of congestion as statements are getting queued over jdbc pool.</p><p><strong>Cons:<br></strong>- Queries need to be pre-defined in external database object, before calling it inside microflow, can be inconvenient for writing complex microflows.<br>- Doesn’t allow to configure multiple authentication and dynamically use it to call snowflake SQL statements.<br>- Have dependencies on snowflake-jdbc drivers, hikari-cp libraries, bounty case files for generating decrypted private key for authentication.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/64/0*g6XZc6FEmg6j1X1q" /></figure><h4><a href="https://app.snowflake.com/marketplace/listing/GZTDZHHIE0/mendix-mendix-data-loader?originTab=provider&amp;providerName=Mendix&amp;profileGlobalName=GZTDZHHIDF">Mendix Data Loader —</a></h4><p><strong>Pros:<br></strong>- Can be useful for ingesting bulk data of Mendix application into Snowflake databases<br>- Uses OData, hence Mendix application needs to publish OData service which will be consumed by this connector to fetch data.</p><p><strong>Cons:<br></strong>- Doesn’t support real time writeback of data to Snowflake, as Snowflake task will be pulling data from Mendix database on interval basis.<br>- Cannot use this module to read existing Snowflake records inside Mendix application.</p><h4>Conclusion:</h4><p>Hope this article gives you an idea about the modules and able to decide the approach of integration with the capabilities mentioned. You can refer below documentation for detailed understanding -<br>1. Snowflake SQL Rest Connector — <a href="https://docs.mendix.com/appstore/connectors/snowflake/snowflake-rest-sql/">https://docs.mendix.com/appstore/connectors/snowflake/snowflake-rest-sql/</a><br>2. External Database Connector — <a href="https://docs.mendix.com/appstore/modules/snowflake/external-database-connector/#introduction">https://docs.mendix.com/appstore/modules/snowflake/external-database-connector/#introduction</a><br>3. Mendix Data Loader — <a href="https://docs.mendix.com/appstore/modules/snowflake/mendix-data-loader/">https://docs.mendix.com/appstore/modules/snowflake/mendix-data-loader/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f303274fe62e" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mendix — Decoding XAS Service]]></title>
            <link>https://medium.com/@nkhard98/mendix-decoding-xas-service-655d2c5b7acf?source=rss-56766fbd217f------2</link>
            <guid isPermaLink="false">https://medium.com/p/655d2c5b7acf</guid>
            <category><![CDATA[mendix-world]]></category>
            <category><![CDATA[mendix-developer]]></category>
            <category><![CDATA[mendix]]></category>
            <dc:creator><![CDATA[Naman Khard]]></dc:creator>
            <pubDate>Sat, 05 Apr 2025 08:38:27 GMT</pubDate>
            <atom:updated>2025-04-05T08:38:27.195Z</atom:updated>
            <content:encoded><![CDATA[<h3>Mendix — Decoding XAS</h3><p>Hello folks. You must be wondering why an article on this topic… Well, let me share a story. Recently, the CYS department audited our Mendix cloud application and shared some vulnerabilities, asking about the behaviour of Mendix runtime. In their logs, they reportedly raised questions about this XAS service.</p><p>Well, this allows us to deeply study the XAS service and try to decode this.</p><h4>What’s in there for you?</h4><p>Honestly, this blog is more theoretical and aims to share the findings discovered and unwrap the inner workings of the Mendix architecture. With this knowledge, you will be able to handle your application security more wisely.</p><h4>Introduction</h4><p>XAS is the private HTTPS REST API endpoint used by the Mendix client to communicate with Mendix Runtime. It is one of the request handlers offered by Mendix. This is sent as a form of API request and is an important element of the Mendix architecture. Each type of call to this API is called an action, and necessary parts of the state are sent along with it. You can inspect XAS requests in the Network tab of your browser’s developer tools and filter out requests to the XAS path.</p><p>Whenever a XAS action (such as a microflow call) is triggered, Mendix Client also sends the state. Mendix Client does not send the entire state to the runtime, as this would create major performance issues. Mendix decides which parts of the state should be sent by analyzing each microflow during the deployment of the applications.</p><h4>Decoding XAS request</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/975/1*0tvfha-X2KyGLYKRdsWPsA.png" /><figcaption>This is an example of XAS request which is called by endpoint — cloud.mendix.com</figcaption></figure><p>The above image illustrates how an XAS request is made within the Mendix application. The left part represents the XAS request made, and the right part represents the response application received from Mendix runtime on making XAS request. The responses varies on the basis of the <strong>action</strong> parameter.</p><p>Let’s consider another XAS request where we have <em>action</em> as <em>runtimeOperation</em>,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/975/1*4NRSxv2L49lbPwGm6i7lRQ.png" /><figcaption>This request is made within localhost:8084 endpoint</figcaption></figure><p>In both images, you will find a similar request body (the JSON one)made by XAS. Let’s focus on that and decode what that means:</p><ol><li>The action property indicates to the Runtime that the request is for a Runtime Operation, as specified by the operationId property.</li></ol><p>The Runtime queries its registry to locate any Runtime Operation associated with the ID “<strong><em>3ow5sZxTSUW01B+FefxS2Q”</em></strong>. In this instance, it identifies an operation type, “Create”.</p><ol><li>Under the params section, parameters can be transmitted to the Runtime if required. In this example, no parameters are necessary.</li><li>As indicated, the majority of the information concerning the Runtime Operation is maintained internally within the Runtime. This approach minimizes the amount of data transmitted in the client’s request, thereby enhancing security. However, this can also make debugging the application more difficult.</li><li>To assist with debugging, you can set the IDResolution log node to ‘debug’. This log node records every time a new Runtime Operation ID is resolved to its corresponding Runtime Operation. It includes the stored registration details and any parameter inputs received from the Client.</li></ol><p>Additionally, the Runtime Registry is stored in the app’s deployment directory under model/operations.json for debugging purposes</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/975/1*Pnn79vpDGbo6TOrFq0_AHw.png" /><figcaption>For id 3ow5sZxTSUW01B+FefxS2Q, you can see operation type is “create”</figcaption></figure><p>For this operation type, this will follow the below call between Mendix components,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*bdjjQNBDGjPBBoVF.png" /></figure><p>This resolves to the following in the Runtime:</p><pre>{<br>    &quot;constants&quot;: {<br>        &quot;ObjectType&quot;: &quot;DataProduct.Domain&quot;<br>    },<br>    &quot;id&quot;: &quot;3ow5sZxTSUW01B+FefxS2Q&quot;,<br>    &quot;parameters&quot;: {},<br>    &quot;type&quot;: &quot;create&quot;<br>}</pre><p>One thing to note from the above models.json file, for every operation ID we have allowed UserRoleSets, which is nothing but an access rule defined at the Microflow level, and from this, we understand that Mendix runtime holds all the microflow access rules over there.</p><h4>Conclusion</h4><p>I hope this article was able to provide you insights on XAS service in depth.</p><h4>Referrences</h4><p>Mendix Blog — <a href="https://www.mendix.com/blog/the-art-of-state-part-1-introduction-to-the-client-state/">https://www.mendix.com/blog/the-art-of-state-part-1-introduction-to-the-client-state/</a></p><p>Mendix doc — <a href="https://docs.mendix.com/refguide/communication-patterns/">https://docs.mendix.com/refguide/communication-patterns/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=655d2c5b7acf" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mendix Team Server Migration: SVN to Git : Part 2]]></title>
            <link>https://medium.com/@nkhard98/mendix-team-server-migration-svn-to-git-part-2-4113e86f6cb3?source=rss-56766fbd217f------2</link>
            <guid isPermaLink="false">https://medium.com/p/4113e86f6cb3</guid>
            <dc:creator><![CDATA[Naman Khard]]></dc:creator>
            <pubDate>Sat, 22 Feb 2025 16:18:36 GMT</pubDate>
            <atom:updated>2025-02-22T16:18:36.161Z</atom:updated>
            <content:encoded><![CDATA[<h3>Mendix Team Server Migration: SVN to Git : Part 2</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*4naj7Q3jdZxY40NX" /></figure><p>In part 1 — <a href="https://medium.com/@nkhard98/mendix-team-server-migration-svn-to-git-part-1-46eadedccec2">https://medium.com/@nkhard98/mendix-team-server-migration-svn-to-git-part-1-46eadedccec2</a></p><p>We understand how one can migrate their Mendix application configured on SVN server to Git. This article aims to share the experience of version controlling strategy which one can find after the migration.</p><p>In part 1, I mentioned about how I was benefitted with Mx command line tool, well let me reveal this part over here.</p><p>After you migrate the application, you will observe some changes under Version Control of your Studio pro. If you go under “Merge changes here”, you will notice something different than usual SVN server options,</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/755/1*g9QunmU4dQ0xH3btWDHIbA.png" /><figcaption>Merge changes popup in Git</figcaption></figure><p>If you have been working in Mendix for a while that too in SVN, you must have came across “Advanced merge” in SVN, where it gives you the possibility to import changes of certain revision range by specifying start revision and end revision.</p><p>But guess what, you won’t be seeing this option anymore in Git. Honestly, I don’t know why this has been discontinued but it was a great feature and for me personally, that was one of the lifeline feature for transporting codes from development branch to UAT and then further to prod.</p><p>Seeing this, I was shock and made me hard to believe, but after exploring community and slack channel, I need to accept this.</p><p>Now let’s talk quickly about the other 2 options, Merge feature branch and port fix.<br>1. Merge feature branch — Will allow you to include all the changes of the custom branch to the current branch.<br>2. Port fix — Will allow you to import only single revision change from the custom branch.</p><p>For my usage, none of the above 2 matches my need, where I want to import only partial changes comprising of multiple revisions to the current branch.</p><p>My approach regarding version control is simple, for any mendix projects, I only have custom branches each for my app environment. For example, If my app has test,accp and prod environments. Then I will be having individual code branches for each of the environment and will be deploying that respectively.</p><p>One thing I made sure was I won’t be compromising the branch setup because of this and then after some research, I found out a way which closely work like advanced merge SVN and that is Mendix command line tool — “mx merge”</p><p>Reference — <a href="https://docs.mendix.com/refguide/mx-command-line-tool/merge/#merge">https://docs.mendix.com/refguide/mx-command-line-tool/merge/#merge</a></p><p>The above link clearly explains how the process works and this actually solves my problem. One may argue, this is nothing just a Merge feature branch option only but the algorithm used beneath varies actually.</p><blockquote>This command works differently than the normal version-controlled merges you can do in Studio Pro. While Studio Pro does a real merge of one branch into another, this command runs the merge algorithm over three .mpr files that do not even have to be version-controlled.</blockquote><p>This brings to the end of the topic, I hope you may find the information useful. Feel free to reach out at — <a href="https://www.linkedin.com/in/nkhard98/">https://www.linkedin.com/in/nkhard98/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4113e86f6cb3" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mendix Team Server Migration: SVN to Git : Part 1]]></title>
            <link>https://medium.com/@nkhard98/mendix-team-server-migration-svn-to-git-part-1-46eadedccec2?source=rss-56766fbd217f------2</link>
            <guid isPermaLink="false">https://medium.com/p/46eadedccec2</guid>
            <dc:creator><![CDATA[Naman Khard]]></dc:creator>
            <pubDate>Sat, 22 Feb 2025 15:24:19 GMT</pubDate>
            <atom:updated>2025-02-22T16:47:21.698Z</atom:updated>
            <content:encoded><![CDATA[<h3>Mendix Team Server Migration: SVN to Git : Part 1</h3><p>In this article, we will mainly try to understand how one can plan for migrating their Mendix apps configured from SVN server to Git.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6ZgS-IfOLYxUaEeH" /></figure><p><strong>Introduction</strong> —</p><p>With Mendix 10 around, we have seen a lot of changes has been implemented within the platform and one of them is Mendix 10 will now only support the Git server.</p><p>Well, the Git server was introduced in Mendix 9 itself and lately projects have been created within that which comes with advanced version controlling techniques like mx diff, mx merge etc by the Mx command line tool for Mendix projects. (I personally was benefitted alot… let’s keep it for part-2).</p><p>Anyways, sorry for going off-track, with this change we have legacy apps configured on SVN and those apps need to be eventually migrated to Git server and in my opinion, the sooner you do it the safer you will be in future because this might get more complicated with the project dependencies….</p><p><strong>Approach —</strong></p><p>It depends on which stage your project is but to achieve this, I would highly insist before you start the actual migration. Make sure your project is already fulfilling below criterias (The criterias are referred from — <a href="https://docs.mendix.com/developerportal/general/migrate-to-git/#apps-eligible-for-migration">https://docs.mendix.com/developerportal/general/migrate-to-git/#apps-eligible-for-migration</a>, I advise you whenever you are reading this, please refer to this site as the criteria might get updated from time to time).</p><p><em>Note : The criteria mentioned below are as per the dated : 22nd Feb 2025, advised to recheck with above URL.</em></p><p><strong>Criteria -</strong></p><ol><li>The main line of the project should be in version Mendix 9.24.28 or above</li><li>All the other branches should be in atleast 9.12 or above.</li><li>The size of the mpr file (One can check in app directory of the project) should be less than 400 MB.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TJ4skLqsmfoXTIi0sTNEkQ.png" /></figure><p>4. (Optional) Also, if you plan to migrate your app with entire change history then your repository size should not exceed more than 3.5 GB (this is something Mendix can only check within backend, although there are some ways you can roughly estimate if it has occupied that much space already).</p><p>Now that we know criteria, the biggest questions what if my project doesn’t fulfill the above criteria and in this article we are mainly going to understand that -</p><p>Criteria 1 and 2 are pretty straightforward and I believe one shouldn’t face much issue while upgrading your apps if your project has been designed mainly keeping in mind the Mendix best practices.</p><p>Criteria 3 is something the projects usually don’t hit the benchmark of that but if your project has exceeded the limit then let’s understand how to overcome that.<br>So, before we understand the solution let’s understand first what is MPR ? MPR stands for Mendix Package runtime in simple terms, whatever we build inside Studio Pro all the code gets stored gets in form of Mendix binary format which is interpreted or excuted by Mendix runtime. For better understanding, refer below paragraph -</p><blockquote>An app modeled in Mendix is traditionally stored in a single .mpr file. This is essentially a database which contains data for all documents, such as microflows, workflows, pages. As the Mendix app is stored in a single file, your version control system only sees that a single file is changed. To show the exact documents that have changed inside the .mpr file a tool that comprehends the format is required, such as Studio Pro.</blockquote><p>The above information has been taken from — <a href="https://docs.mendix.com/refguide/troubleshoot-repository-size/#traditional-mprv1-format">https://docs.mendix.com/refguide/troubleshoot-repository-size/#traditional-mprv1-format</a></p><p>Now that we know what MPR is, we can actually think of reducing its size and I believe before we go for advance optimization, you can actually think of optimizing the size by removing unused Mendix objects like modules, pages, microflows, entities etc…. because that will directly affect the size of mpr file as it will have less objects to store basically you are reducing the code usage size.</p><p>Even after doing this, if you are unable to bring the size under 400 MB then you have to go for advance optimization which is optimizing the MPR file which is also known MPRv2.<br>To achieve this, you need to refer below documentation — <a href="https://docs.mendix.com/refguide/troubleshoot-repository-size/#decreasing-mprv1-file-size">https://docs.mendix.com/refguide/troubleshoot-repository-size/#decreasing-mprv1-file-size</a></p><p>I won’t go deep futher, but I will quickly outline the difference in working of MPRv1 and MPRv2, while v1 stores all the changes in a single mpr file basically re-writing the entire changes on latest revision, v2 will actaully maintain a delta copy of the base version of .mpr file which gets created during project initialization. So every time you make changes to the app, your base mpr will stay as it is but the another mpr file will be holding changes wrt to base mpr and that will keep growing.. For more info, please continue reading the above URL</p><p>Note : In article, they have mentioned this option is available for Mendix 10.18 but you will also see this in Mendix 9.24.28 onwards…</p><p>With fulfilling above criterias, your app will become eligible for migration and this will be shown under Team server of Mendix sprintr project and as of now, only Scrum Master of the Mendix app can perform migration hence scrum master can only see this under Team server.</p><p>Once you click on “Migrate to Git” option, you will be redirected to another application of Mendix where it will perform migration and before it does that, it will check the eligibilty criteria stated above and then only it will proceed to the next step to choose how want to procced further with migration.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ELTVq16agcRphtzK7rhf5g.png" /></figure><p>Once you reach this page, you will see an option to perform migration with 2 approaches — “Continue with history” and “Continue without history”. To understand more, please refer — <a href="https://docs.mendix.com/developerportal/general/migrate-to-git/#eligible-for-migrating-without-history">https://docs.mendix.com/developerportal/general/migrate-to-git/#eligible-for-migrating-without-history</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DakagPTXVWcmszKoNsbedQ.png" /></figure><p>Here the optional criteria, will come into picture, if your app repository size is more than 3.5 GB (your repository will mainly comprises of .mpr file,userlib folder, data folder stored under deployment folder, your javasource,javascript,theme,theme-source folders) then your app won’t be eligible for migration with history, hence overall size of this shouldn’t exceed more than 3.5 GB across all the branches of the app.</p><p>Once you click on “Migrate to Git” after you reaching the final step, it will enable migration where your app environments will still be running with zero downtime but all your deployment activities will be blocked and your code in machine will become stale. You will be receiving mail notifications about the process start and end, as per the logic app without history will get migrated quicker as compared to app with history.</p><p>Congratulations…. Your app will be migrated and now you have to download it again from team server using studio pro.</p><p>Thanks for reading the article or blog. I will be writing another part of this, where I will share my experience what changes one will observe after migration and how to adapt with them. So stay tuned and see you on another one. Bye and take care!.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=46eadedccec2" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Deep dive into Mendix Data Loader]]></title>
            <link>https://medium.com/@nkhard98/deep-dive-into-mendix-data-loader-a66679e3d4d6?source=rss-56766fbd217f------2</link>
            <guid isPermaLink="false">https://medium.com/p/a66679e3d4d6</guid>
            <category><![CDATA[mendix]]></category>
            <category><![CDATA[snowflake]]></category>
            <dc:creator><![CDATA[Naman Khard]]></dc:creator>
            <pubDate>Mon, 18 Nov 2024 04:22:58 GMT</pubDate>
            <atom:updated>2024-11-18T04:22:58.422Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Marketplace link — </em><a href="https://app.snowflake.com/marketplace/listing/GZTDZHHIE0/mendix-mendix-data-loader"><em>https://app.snowflake.com/marketplace/listing/GZTDZHHIE0/mendix-mendix-data-loader</em></a></p><h4><strong>Introduction -</strong></h4><ul><li>The Mendix Data Loader, developed using Snowflake’s Native App Framework, is designed to streamline the extraction of operational data from Mendix applications directly into the Snowflake environment.</li><li>It is tailored for data engineers, this connector simplifies the data migration process, ensuring efficient and secure data transfer from one or many Mendix apps into a structured Snowflake database.</li></ul><h4>Pre-requisites -</h4><ul><li>To use the Mendix Data Loader, you must have the following:</li><li>A Mendix application with a <a href="https://docs.mendix.com/refguide/published-odata-services/">published OData service</a> that includes exposed entities.</li><li>A Snowflake environment.</li></ul><h4>Licensing and Costs –</h4><ul><li>The Mendix Data Loader is covered under the Mendix EULA. While the loader itself does not incur additional costs, operating within Snowflake may incur a usage cost. For more information, refer to the <a href="https://www.snowflake.com/en/data-cloud/pricing-options/">Snowflake pricing documentation</a>.</li><li>Depending on your use case, your deployment environment, and the type of app that you want to build, you may also need a license for your Mendix app. For more information, refer to <a href="https://docs.mendix.com/developerportal/deploy/licensing-apps-outside-mxcloud/">Licensing Apps</a>.</li></ul><h4>Architecture</h4><ul><li>It will mainly involve three components — Mendix app, Mendix Data Loader, and Snowflake Warehouse.</li><li>The Mendix app will be sending its application data to the Mendix data loader or the data loader can request data from the Mendix app on an interval basis.</li><li>When the Mendix data loader receives data from Mendix, then it will write the data to the snowflake tables.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fC78NYmZ8LoCNyzjcoSzCA.png" /><figcaption>Architecture of Mendix Data Loader setup</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a66679e3d4d6" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unleashing Power of Mendix with Snowflake — Part 2]]></title>
            <link>https://medium.com/@nkhard98/unleashing-power-of-mendix-with-snowflake-part-2-50790003dc9a?source=rss-56766fbd217f------2</link>
            <guid isPermaLink="false">https://medium.com/p/50790003dc9a</guid>
            <category><![CDATA[snowflake]]></category>
            <category><![CDATA[mendix]]></category>
            <dc:creator><![CDATA[Naman Khard]]></dc:creator>
            <pubDate>Mon, 18 Nov 2024 04:05:52 GMT</pubDate>
            <atom:updated>2024-11-18T04:05:52.678Z</atom:updated>
            <content:encoded><![CDATA[<h3>Unleashing Power of Mendix with Snowflake — Part 2</h3><p><em>Link to Part 1 — </em><a href="https://medium.com/@nkhard98/unleashing-power-of-mendix-with-snowflake-part-1-cddba4a1fc29"><em>https://medium.com/@nkhard98/unleashing-power-of-mendix-with-snowflake-part-1-cddba4a1fc29</em></a></p><p>In the last post, I quickly discussed using Snowflake DB over native Mendix DB (which is provided by Mendix cloud platforms) for big data applications. This leads to an interesting question if both are storing data in tabular format, then how does Snowflake DB have an edge over Mendix DB? We understood one aspect of it but there is also a difference in how their data get stored physically and we are going to compare in this post.</p><p>Mendix — By default, Mendix cloud platforms store data using PostgreSQL DB and in it, the rows of the table are stored physically into segment files of fixed size and each segment file comprises fixed-size pages. These files can be stored in a contiguous or dis-contiguous fashion. This is the concept of segmented paging under memory management. At this postgres manages all of this for Mendix and whenever Mendix wants to retrieve data from the table, it instructs Postgres to fetch all rows of the tables from all the segment files and then that data is passed to Mendix memory by Postgres and then further data operations (like pruning) /transformation(like aggregation) happens. This entire process is very quick but if we work on rows of a table having 3 billion rows you can imagine the performance impact.</p><p>Snowflake — On the other hand, stores the rows of a table into something called micro partitions which are continuous units of storage. These partitions follow the columnar storage principle. The rows of the table are broken down into partitions and every partition’s metadata is managed by Snowflake which contains information on the min and max value of every column stored inside it which will be helpful in pruning operations, as the number of distinct values and other additional properties, which makes query processing and transformation operations more efficient and faster for larger datasets.</p><p>For more information, you can refer below articles for a better understanding -<br>Mendix — <a href="https://lnkd.in/gak4Bmwu">https://lnkd.in/gak4Bmwu</a>.<br>Snowflake — <a href="https://lnkd.in/gXUn8ZV9">https://lnkd.in/gXUn8ZV9</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/972/0*lBY81MnHwUtr5vws" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=50790003dc9a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unleashing Power of Mendix with Snowflake — Part 1]]></title>
            <link>https://medium.com/@nkhard98/unleashing-power-of-mendix-with-snowflake-part-1-cddba4a1fc29?source=rss-56766fbd217f------2</link>
            <guid isPermaLink="false">https://medium.com/p/cddba4a1fc29</guid>
            <category><![CDATA[mendix]]></category>
            <category><![CDATA[snowflake]]></category>
            <dc:creator><![CDATA[Naman Khard]]></dc:creator>
            <pubDate>Mon, 18 Nov 2024 03:58:49 GMT</pubDate>
            <atom:updated>2024-11-18T03:58:49.212Z</atom:updated>
            <content:encoded><![CDATA[<h3>Unleashing Power of Mendix with Snowflake — Part 1</h3><p>Hey Folks, Mendix is a great technology for building applications, but what if you have been asked to build apps for large datasets or big data over Mendix platform servers?</p><p>Well, we can still build a solution but it might not be a great approach in terms of cost and performance.</p><p>One of the solutions can be built using Snowflake Warehouse instead of Mendix DB. Mendix will be mainly acting as a front end over here and Snowflake will be used as a backend.</p><p>Let’s have a quick comparison -</p><p>1. Costs — Snowflake offers storage costs ranging roughly from $25 to $40 per TB storage per month based on the location you pick. While Mendix involves file and database storage costs in its plan the storage they offer is combined which roughly starts with 15GB. You can buy additional storage every year and that is also not cheaper. Hence Snowflake does have a huge advantage (One can argue for compute costs and we will see in the performance section).</p><p>2. Performance — Mendix uses a combined approach of OOL+SQL to retrieve data from Mendix DB. On the tool level, we define the retrieve data path via the ‘retrieve’ activity in microflow/nanoflow and use xpath when we want to do selective point lookup. Now internally these xpath and retrieve logic from flows get transformed into OQL and then further into SQL before it is queried to Mendix DB. After successfully queried, these rows get converted into Mendix objects before the contents get loaded into UI. This consumes time and degrades the performance.</p><p>As per the Mendix experts, we can speed up things by writing OQL directly from the tool, but it can be a cumbersome task. Another approach is to have those entities or tables stored in a denormalized approach and then use retrieve activity but again this is not doable every time.</p><p>Here Snowflake can be useful since we need to pass SQL directly to query data, one can write efficient queries to retrieve data (this is further optimized at the service layer of Snowflake by query optimizer). Furthermore, for advanced analytics Snowflake offers various functions or methods like CTE which makes working on data simpler.</p><p>Coming back to the compute cost, Snowflake charges for processing, and hence once we have processed data, we can have it cached in Mendix DB for a particular session. Hence ending up saving some bucks and more importantly we have an app running much faster.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Ea0hXryl6IOhNkl1" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cddba4a1fc29" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>