{"id":57,"date":"2026-08-15T02:39:16","date_gmt":"2026-08-15T02:39:16","guid":{"rendered":"https:\/\/barrymind.com\/?p=57"},"modified":"2026-08-15T02:39:19","modified_gmt":"2026-08-15T02:39:19","slug":"migrating-from-encompass-to-vesta-two-los-two-very-different-philosophies","status":"publish","type":"post","link":"https:\/\/barrymind.com\/?p=57","title":{"rendered":"Migrating from Encompass to Vesta: Two LOS, Two Very Different Philosophies"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\"><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">For the past year, I\u2019ve been working on something that sounds simple when you describe it in one sentence:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Migrating a Loan Origination System from ICE Encompass to Vesta.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, anyone who has actually worked on a mortgage system knows that \u201cmigration\u201d is one of those words that can mean anything from <em>\u201ccopy some data over\u201d<\/em> to <em>\u201cquestion every architectural decision you have made for the last ten years.\u201d<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This one is definitely closer to the second category.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We were previously built around <strong>ICE Encompass<\/strong>, and our new platform is <strong>Vesta<\/strong>. Both are LOS platforms, both manage loans, borrowers, documents, workflows, and all the other wonderful things that make mortgage software what it is.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But once you start working with both systems every day, you realize that they have some very different ideas about how an LOS should work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here are a few differences that stood out to me during the migration.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Desktop vs. Browser<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The first difference is probably the most obvious.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our Encompass environment has traditionally been based on the <strong>desktop client<\/strong>. Vesta, on the other hand, is <strong>browser-based<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And yes, you can feel the difference.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vesta feels lighter and more flexible. Open a browser, log in, and you are there. There is no traditional desktop application to install, maintain, update, or wonder why it suddenly decided that today was a good day to stop cooperating.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Encompass, by comparison, feels a little more heavyweight.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To be fair, ICE has also introduced a <strong>Web version of Encompass<\/strong>, so the future of Encompass is clearly moving in that direction. But our environment has been using the desktop client for a long time, so our day-to-day experience has mostly been with the traditional application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And after years of working with it, you get used to it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Until you switch to a browser-based LOS and suddenly realize that your browser has been waiting patiently to become your new LOS client all along.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The Loan Lock Problem<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The more interesting difference is what happens when multiple people want to work on the same loan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Encompass, editing a loan generally involves <strong>locking the loan<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If one user has the loan locked for editing, another user can&#8217;t simply open it and start changing things.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is a very understandable design.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A loan contains a huge amount of interconnected data. You don&#8217;t want User A and User B editing the same object at the same time and then discovering that whoever clicked Save last accidentally erased the other&#8217;s changes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So Encompass basically says:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u201cOne person at a time, please.\u201d<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">It works.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But it also means that collaboration can become a little awkward.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vesta takes a fundamentally different approach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because the Vesta client is designed around <strong>real-time persistence<\/strong>, changes are saved as they happen. There isn&#8217;t the same traditional \u201copen \u2192 edit \u2192 save \u2192 unlock\u201d workflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That means multiple people can work with the same loan without the traditional loan-locking model getting in the way.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Architecturally, I really like this idea.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But, as usual, solving one problem creates another.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The danger of the accidental change<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If everything is saved immediately, you have to be much more careful about accidental edits.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine that you are just looking at a loan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You scroll through the page.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Your mouse wheel moves.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Your keyboard accidentally hits a key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You click something you thought was just a selector.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And suddenly&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Congratulations. You changed the loan.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There is no comforting \u201cDon&#8217;t worry, you haven&#8217;t saved yet\u201d moment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The change may already be persisted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is one of those interesting trade-offs in software design:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Traditional save-based systems protect you from some accidental changes, but make collaboration harder.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Real-time systems make collaboration much easier, but make accidental changes more dangerous.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neither approach is universally better. They simply move the risk to different places.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Two Very Different Ideas About Data<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">The biggest difference I&#8217;ve noticed, though, isn&#8217;t the UI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s the <strong>philosophy behind the data model<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Encompass is relatively permissive.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are many fields that are related to each other. Change one field, and Encompass may automatically recalculate several others.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, changing one of the important loan or property values may cause things such as LTV, payment amounts, or other calculated values to change.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But here&#8217;s the interesting part:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The fact that a value is calculated doesn&#8217;t necessarily mean the user is forbidden from changing it.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In many situations, Encompass allows users to override calculated values.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And sometimes something even more interesting happens.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A field may appear to be read-only in the Encompass client, but the underlying platform may still allow it to be changed through the <strong>SDK or API<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In other words, the UI and the underlying data model don&#8217;t always enforce exactly the same rules.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From a developer&#8217;s perspective, this creates a surprisingly flexible environment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The general philosophy feels something like:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u201cWe&#8217;ll calculate this for you, but if you have a good reason to do something different, we&#8217;ll let you.\u201d<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">That flexibility can be extremely useful in mortgage software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mortgage underwriting is full of exceptions. Not everything can be reduced to a clean mathematical formula.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes the system calculates something.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then a human looks at the loan and says:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u201cYes, but this particular loan is different.\u201d<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">And the system needs to allow that.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Vesta Is Much Stricter<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Vesta takes a very different approach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If a field is automatically calculated, <strong>it is generally read-only<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And this isn&#8217;t just a UI rule.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is the important part.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the field is read-only in the Vesta UI, trying to modify it through an API may also fail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In other words:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>UI says: Read-only\n        \u2193\nAPI says: Read-only\n        \u2193\nDeveloper says: \"But what if I really, really want to?\"\n        \u2193\nAPI: No.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And yes, I have learned to respect that \u201cNo.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This makes Vesta&#8217;s data model much more strictly enforced.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From a system-design perspective, I actually think this is a very clean approach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The system knows which values are derived and which values are inputs, and it tries hard to prevent developers from bypassing those rules.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But it also means that <strong>API integrations require much more careful planning<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can&#8217;t simply look at a field, see that it exists, and assume:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u201cIt&#8217;s an API field, so I can probably update it.\u201d<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Nope.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before updating a field in Vesta, you need to understand:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Is this field calculated?<\/li>\n\n\n\n<li>Is it writable?<\/li>\n\n\n\n<li>What fields does it depend on?<\/li>\n\n\n\n<li>Should I update another field instead?<\/li>\n\n\n\n<li>Will Vesta recalculate this value automatically?<\/li>\n\n\n\n<li>Is there a supported API operation for what I&#8217;m trying to accomplish?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Otherwise, your perfectly reasonable API call may come back with a perfectly unreasonable-looking error.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At least from the developer&#8217;s perspective.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Flexibility vs. Enforcement<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">This is probably the biggest philosophical difference I see between the two platforms.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Encompass tends to favor flexibility.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It gives users and integrations more freedom to manipulate the loan, even when the system has calculated a value.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Vesta tends to favor consistency and enforcement.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the platform says a value is derived, it doesn&#8217;t want you changing that value directly.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You could summarize the philosophies like this:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th>Encompass<\/th><th>Vesta<\/th><\/tr><\/thead><tbody><tr><td>Client<\/td><td>Desktop in our environment<\/td><td>Browser<\/td><\/tr><tr><td>Editing model<\/td><td>Traditional loan locking<\/td><td>Real-time persistence<\/td><\/tr><tr><td>Collaboration<\/td><td>More restrictive<\/td><td>More flexible<\/td><\/tr><tr><td>Calculated fields<\/td><td>Often can be overridden<\/td><td>Generally read-only<\/td><\/tr><tr><td>API enforcement<\/td><td>Relatively permissive in some areas<\/td><td>Much stricter<\/td><\/tr><tr><td>Architecture<\/td><td>Mature \/ legacy-friendly<\/td><td>Modern \/ cloud-native<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Neither approach is inherently right or wrong.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">They simply make different trade-offs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And those trade-offs become very obvious when you spend a year moving a real mortgage system from one platform to the other.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">And Then There Is AI<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">There is one more area where Vesta has a very interesting advantage: <strong>AI<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vesta was built with a much newer architecture, and AI is much more naturally integrated into the platform&#8217;s overall design.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The idea of having AI agents participate directly in loan workflows is particularly interesting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is quite different from simply adding an AI assistant to an existing LOS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I haven&#8217;t personally used Vesta&#8217;s AI capabilities enough yet to give it a fair technical evaluation, so I&#8217;ll leave that topic for another post.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I would rather say <em>\u201cI haven&#8217;t used it enough to judge it\u201d<\/em> than write three paragraphs about AI based on a product demo and pretend I am now an AI expert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The internet already has enough of those.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">What I Learned from the Migration<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">After working with both platforms, one thing has become very clear to me:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>An LOS is not just a collection of screens and APIs.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The platform&#8217;s philosophy shows up everywhere.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">How does it handle concurrency?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">How does it define a calculated field?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Who is allowed to change a value?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What happens when a user changes something?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What happens when an API changes something?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Where does the system enforce business rules?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And perhaps most importantly:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Does the platform trust the user, or does it trust its own data model?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Encompass and Vesta answer these questions differently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Encompass gives you a lot of freedom. Sometimes that freedom is exactly what you need. Sometimes it means developers have to be very careful about what they change and how they change it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vesta gives you stronger guardrails. That can make the platform more predictable, but it also means you have to understand its rules before you start writing integrations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After a year of migration work, I&#8217;ve learned that moving from one LOS to another isn&#8217;t really about moving data from System A to System B.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You&#8217;re also moving from <strong>one set of assumptions to another<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And sometimes, the hardest part isn&#8217;t figuring out how to call the new API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s realizing that the new system has a completely different answer to the question:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u201cWhat should happen when someone changes a loan?\u201d<\/strong><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>For the past year, I\u2019ve been working on something that sounds simple when you describe it in one sentence: Migrating a Loan Origination System from ICE Encompass to Vesta. Of course, anyone who has actually worked on a mortgage system knows that \u201cmigration\u201d is one of those words that can mean anything from \u201ccopy some &#8230; <a title=\"Migrating from Encompass to Vesta: Two LOS, Two Very Different Philosophies\" class=\"read-more\" href=\"https:\/\/barrymind.com\/?p=57\" aria-label=\"Read more about Migrating from Encompass to Vesta: Two LOS, Two Very Different Philosophies\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-57","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/barrymind.com\/index.php?rest_route=\/wp\/v2\/posts\/57","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/barrymind.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/barrymind.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/barrymind.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/barrymind.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=57"}],"version-history":[{"count":1,"href":"https:\/\/barrymind.com\/index.php?rest_route=\/wp\/v2\/posts\/57\/revisions"}],"predecessor-version":[{"id":58,"href":"https:\/\/barrymind.com\/index.php?rest_route=\/wp\/v2\/posts\/57\/revisions\/58"}],"wp:attachment":[{"href":"https:\/\/barrymind.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=57"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/barrymind.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=57"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/barrymind.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}