Mortgage Origination

Content Type: Industry Template


Accelerating mortgage loan close = increased revenue and customer satisfaction customers 

Why do financial services firms pretend they don’t know their customer when it comes time to apply for a mortgage? Mortgage origination is a highly standardized process that involves collecting information the bank may already have. However, financial services firms continue to struggle with leveraging their customer relationships to provide them with a mortgage experience that doesn’t require data entry or additional steps.

Key benefits:  

  • Using one tool, a single team creates offers and connected experiences across native mobile and responsive web applications 
  • Automate data entry by pulling relevant data out of siloed platforms – more accurate data makes back-office processing and underwriting more efficient  
  • Break down your monolithic application into composable microservices that can be re-used across your lending portfolio 
  • Extend your intelligent automation capabilities with rapid integration to AI/ML, back office, and administrative platforms 
  • Execute A/B testing activities while expending incremental development effort 

The Mortgage Origination app offers a streamlined, optimized end-user experience for both customer and loan officer in a two interconnected apps: a Mendix Native app for the customer and a responsive web app for the loan officer.

Key features of this Mendix Template: 

  • Use the Mendix application(s) as a kickstart for your Mendix project, or as a light-weight reference architecture.   
  • The Customer has access to a Mendix Native Mobile app that runs on their iOS or Android device, guiding them through the elaborate mortgage application process in a user-friendly and fully digital way. 
  • This presents the customer with a clear overview of their mortgage options, enables them to upload digital documents instead of physical copies, live chat functionality with loan officer and generation of a pre-qualification letter, after which they can plan an appointment with the loan officer to move things forward. 
  • The Loan Officer works in a point-of-sale web application that provides them with a robust, clear overview of their origination pipeline, customer pre-qualification submissions. Additionally, the application provides view and edit ability of key customer data and metrics (Debt to Income ratio, Loan to Value, Credit Score, Credit profile information, Income, Assets, key milestones etc) as well as the selected loan product. As a result, the loan officer is able to address the customer needs from a single view that reflects the financial services process and procedures, and facilitates collection of documentation that is required to get the customer to processing.  

Want to learn more about the Mortgage Origination application? Check out the solutions page: 


The mortgage origination template allows a customer to start a mortgage application from a native banking app. The mortgage application wizard is streamlined, has a great user experience, and guides the customer through the complex steps of the process while minimizing data entry. The loan officer works in a point-of-sale responsive web application that provides them with a robust, clear overview of their origination pipeline and customer pre-qualification submissions.  

This content has been developed to enable the Mendix Ecosystem to create and ideate. While we strive to incorporate best practices, security guidelines and data privacy considerations. By work within a SOC-compliant process and considering data privacy and security in our development. Mendix cannot take responsibility for any such standards, data, or security leaks in this content on the Mendix platform. Additionally, Mendix is not responsible for any data or security leaks resulting from further development on this app after hand-over/download. 

Our content is created to illustrate the art and power of the possible with the Mendix platform on a global scale. We develop content to demonstrate how Mendix is a good fit for your industry. Of course, we encourage you to use our content as inspiration or a starting point for further development. So, we have taken ample care and consideration during the build to create a quality application for you. However, due to the nature and goal of development our content has not been extensively tested for security and data privacy issues. Should you incorporate this content in your production environment please review the entire application according to your own company standards and applicable regulations. 


  • Prequalify for a mortgage on a native mobile app 

  • Calculate the estimated cost of a mortgage 

  • Live chat with loan officers 

  • Fulfill digital document requests from the native app  

Loan officer: 

  • Extensive dashboard capabilities 

  • Live chat with customers  

  • View and edit key customer data and metrics 

How to set up Mortgage Origination 

  • Open the app in Mendix Studio Pro 9.18.2 or later 

  • Use the Mendix ‘make it native’ app to test the native app locally 

  • Download the Make it Native App from the app store / play store to your mobile device 

  • Run your project in Mendix Studio Pro 

  • Scan the QR code generated in Mendix Studio Pro (view app -> view on your device -> view native mobile app -> scan code with the Make it Native app) 

  • Or generate an apk with the native builder in Mendix Studio Pro. 

  • Push notifications are enabled through Google Firebase. You will need to add your own FCM configuration to the project. You can find out more about push notifications here.  

  • Mortgage origination uses the Email service from marketplace to send prequalification letters to the customer. You will need to start your own subscription by following these steps: 

  • Go to the email service page on marketplace and follow the steps to get a subscription. 

  • Open Mendix Studio Pro 

  • Open Settings -> Default Configuration 

  • Go to the Constants tab 

  • Add a Value for the constant ‘SendEmailModule.SecretKey’ use the binding keys from your subscription on marketplace 

  • Add a Value for the constant ‘SendEmailModule.UserName’ use the binding keys from your subscription on marketplace 

  • Add a Value for the constant ‘Encryption.EncryptionKey’, choose a random string of 32 characters 

  • Rerun your application 

Demo Data 

Master data and demo data will be generated in the after-startup flow. If you want to reset the demo data then login as an MxAdmin, click on the demo data link on the dashboard and then click on Reset Demo Data.  

If you want to remove the demo data functionality from your project, please take the following steps: 

  • Delete the module DemoData_JSON 

  • Delete the folder DemoData in the Loan module 

  • Remove the link to DemoData_Overview from the Admin dashboard 

  • Update security 

  • Replace or remove the after start-up microflow 

Some values in the native app are pre-populated for demo purposes. You will need to replace these with values provided by the customer or your back-end systems. These values are set upon creation of the LoanApplication object in microflow LoanApplication_Create 


Demo Users 

A list of demo users is generated as part of the demo data functionality. They all have the same generic password ‘Mendix1’. The demo user switcher is not enabled because it does not work on Mendix Native applications.  

  • Loan Officer  

  • User  

  •, has no active loan applications or contact requests, so this user is good to demonstrate the native app  

  •, already has active loan applications, so all values will be prefilled if you open the native app with this account. 

Explaining the Domain Model 

All relevant entities are also documented in the domain model in Mendix Studio Pro. 

Loan module 

  • LoginHelper: Non-persistent helper entity used to navigate to the standard login page, although we are using anonymous users in this app.  

  • PrequalificationLetter: Document that is generated and received when a customer successfully files their mortgage application request.  

  • Customer: This is the customer who is already known to the bank in our narrative, applying for the mortgage. 

  • Asset: To be updated and added by a loan officer for a full overview of assets to base credit eligibility on. 

  • Liability: To be updated and added by a loan officer for a full overview of liabilities to base credit eligibility on.  

  • LoanApplication: The actual mortgage loan application the customer files. 

  • LoanCalculationNP: Non-persistent helper entity used in calculating the loan costs. 

  • Timeline: All relevant actions and changes to a loan application are captured in this object. A log object which is displayed in the loan officer application overview to provide a quick overview of relevant actions.  

  • Document: All relevant documents to the loan application can be added by the loan officer in the application overview page and are stored in this entity.  

  • Photo: fulfilled document request that is created in the native app by the customer and then approved by the loan officer. 

  • DocumentRequest: document that is requested by the loan officer, of which the customer will be notified in the native app. 

  • RequestImage: image that is associated with a DocumentRequest and can be filled with contents by the customer in the native app by taking a picture. 

  • WizardDisplayHelper: non-persistent helper entity that keeps track of the step of the wizard that the customer is at. 

  • ContactRequest: The request that is filed at the end of the application process by the customer to finish the application together with a loan officer. 

  • CustomerDetail: Entity editable by customer in the native mortgage application request flow. 

  • ChartHelper and Chartdata: helper entities to generate the pie charts on the summary page


  • ChatCounter: Stores the number of unread messages to make it possible to display for the LoanOfficer 

  • Conversation: Conversation between a Loan Officer and a User. 

  • Message: Message within a Conversation. 

  • MessageInput: Non-persistable entity used to create a native chat message before sending it.


  • MessageNP and DisplayHelper entities are used For the LocalPushNotifications module.


  • Login and PinCodeLogin: Non-Persistent helper entities used for (pin code) login functionality in native application.

*This software uses the following GPL component: alpine-linux 3.15. The source code for the component(s) is available at 


Version: 1.2.0
Framework Version: 9.18.2
Release Notes: Changed the email service Updated marketplace modules Improved styling and usability in a few places
Version: 1.1.0
Framework Version: 9.12.2
Release Notes: Added a generic push notifications mechanism that works both locally and in apk Updated marketplace modules Separated functionality into generic components Improved styling and usability in a few places
Version: 1.0.0
Framework Version: 9.12.2
Release Notes: First version