{"id":1734,"date":"2023-07-11T13:06:34","date_gmt":"2023-07-11T20:06:34","guid":{"rendered":"https:\/\/medely.com\/blog\/?p=1734"},"modified":"2024-08-06T07:20:10","modified_gmt":"2024-08-06T14:20:10","slug":"dont-let-third-party-services-assimilate-your-application","status":"publish","type":"post","link":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/","title":{"rendered":"Don&#8217;t Let Third Party Services Assimilate Your Application"},"content":{"rendered":"\n<p>Third-Party services are like the Borg. They want to assimilate your application into their ecosystems. After assimilation, removing them from your code base can be nearly impossible. Even if you <em>can<\/em> remove them, they often leave scars that will mar your application for the rest of its life.<\/p>\n\n\n\n<p>Depending on the complexity of integration, they can become so painful to replace, you are either stuck with it or you must burn down a good portion of your code in the process of replacing it. The side effects can be horrendous. It\u2019s this kind of moment where programmers curse the day they decided to take up the keyboard. Those who live by the keyboard, die by the keyboard. It can be a bloodbath.<\/p>\n\n\n\n<p>Resistance is futile! Or so it might seem. But it doesn\u2019t have to be that way. You can use Third-Party software in a way that avoids total assimilation. In fact, you can force Third-Party services to integrate with <em>your<\/em> application. Checkmate!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Third-Party-Services\">Third-Party Services<\/h2>\n\n\n\n<p>Just like every other enterprise-level company in the universe, Medely interfaces with a variety of Third-Party services to accomplish things that would not make sense to re-create internally. Using Third-Party services allows us to focus on solving problems more directly related to our customers&#8217; needs. So it makes sense to avail ourselves of all the yummy, tempting, prettily packaged Third-Party services out there.<\/p>\n\n\n\n<p>But buyer beware. There\u2019s always a price to pay for all that Third-Party goodness. The biggest mistake you can make is to let the tentacles of those services get deeply integrated into the Application\u2019s code base. Once that\u2019s done, you\u2019re now assimilated into <em>their<\/em> ecosystem.<\/p>\n\n\n\n<p>Don\u2019t let this tragedy happen to your application. Instead, make Third-Party services assimilate into <em>your<\/em> application. It can be done.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Expect-Change\">Expect Change<\/h2>\n\n\n\n<p>Any integrated service can disappear, have major updates, become unreliable, or no longer meet the application&#8217;s growing needs. Another brand spanking new service might have just been released that does everything 10X better. Whatever the reason, it\u2019s pretty much guaranteed that any Third-Party service integration will eventually require something major to be done to them. When that happens, the change should be as painless as possible. So, code for change from the beginning.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Avoiding-Assimilation\">Avoiding Assimilation<\/h2>\n\n\n\n<p>There are many ways an application can become assimilated by a Third-Party service. But they all boil down to allowing Third-Party services to integrate deeply into the application\u2019s code base. However, it\u2019s not just about avoiding entangling the service deeply into your code. Even if your code is well organized with great isolation, you can still get trapped in their ecosystem by adopting their way of thinking about the problem being solved.<\/p>\n\n\n\n<p>Of course, it\u2019s easy to let these services get tightly intertwined with the existing code base. They promise to make your life much easier, so why not marry into their hype? Unfortunately, once the honeymoon is over, even small changes can end up requiring multiple code point modifications. Where did it all go wrong?<\/p>\n\n\n\n<p>It\u2019s not all doom and gloom. People write great integrations all the time. Ideally, any Third-Party service should be easy to modify or replace. As always, there are many ways to get the same result.<\/p>\n\n\n\n<p>The best ways will always isolate the service from the application\u2019s code base and allow replacing it straightforward. Feel free to take this pattern and toss it into the intergalactic dust bin and do your own thing. Or better, twist it into something that makes you happy. That\u2019s the fun of not being assimilated. You have options. Besides, this pattern isn\u2019t new. But it\u2019s a very good one for this problem (and others).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Principles\">Principles<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Isolation\">Isolation<\/h3>\n\n\n\n<p>All Third-Party interactions should be isolated from the code base it services and only interact at a thin API interface where the base code is on one side and the Third-Party code is on the other side (conceptually and\/or by code organization). Now that\u2019s pretty basic stuff.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Carefully-Organize-Your-Code\">Carefully Organize Your Code<\/h3>\n\n\n\n<p>To achieve isolation, it\u2019s important to organize the service\u2019s code in a way that places it entirely apart from the application\u2019s code. Third-Party services are NOT part of the application. They are here to perform a job you don\u2019t have the time or desire to code yourself. Keep them as far away from your application as possible and let them in only through specific API \u201cdoors\u201d you designate.<\/p>\n\n\n\n<p>Isolating the service\u2019s support code should make it easy to identify and work on the integration code completely separate from the application\u2019s code. Ideally, the integration code should live under a single folder structure completely behind the interface API. A change to the integrated service should not require a change to the application\u2019s code.<\/p>\n\n\n\n<p>The same applies to the application code. Changes to the application code should not require changes in the integration code. To achieve this, the application code and the Third-Party code must talk to each other through carefully defined boundaries, normally a single API layer.<\/p>\n\n\n\n<p>The only time both the application and the Third Party integration code must change together is when the API interface changes. Even in this case, code isolation allows for the smallest set of changes.<\/p>\n\n\n\n<p>The application should never be required to change its code to suit the service. The service is not the boss of the application. Don\u2019t organize your code so that it becomes the boss.<\/p>\n\n\n\n<p>Isolating services is like carefully separating the food on your plate behind WALLS! Those walls are the interface (API) between the services and your carefully crafted application. Don\u2019t let the \u201cfood\u201d intermingle. It may make food delicious, but it\u2019ll give your application indigestion.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Craft-Your-API-In-Isolation-From-the-Service\">Craft Your API In Isolation From the Service<\/h3>\n\n\n\n<p>When integrating a service, It\u2019s tempting to adjust your application to fit within that service&#8217;s way of \u201cthinking\u201d. Instead, you should think about how your application wants to ask for and receive the data for the problem you are solving. Initially, try not to let the Third-Party service inform your thinking.<\/p>\n\n\n\n<p>Ideally, your API won\u2019t simply reflect the service\u2019s API. Instead, it should reflect your business needs in a way that makes sense for your application. At the very least, inform your ideas from the perspective of multiple services that accomplish the same thing. Regardless, making adjustments later is going to be easier if you properly isolate the service in the first place.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"The-Core-Pattern\">The Core Pattern<\/h3>\n\n\n\n<p>The core pattern is defined by three distinct layers: API Interface, Manager, and Adapter.<\/p>\n\n\n\n<p>The implementation can be as simple as a single class or be broken into multiple classes (or whatever structure your language requires). But all three \u2018layers\u2019 exist within any integration. They must exist as separate parts in the code, even if you choose to use a single class.<\/p>\n\n\n\n<p>The diagram below shows how you must go through each \u201clayer\u201d before you can get to the next layer whether from the Application side or the 3rd Party side. This is the Base Pattern at its simplest, and it is the key to enforcing strict isolation.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"257\" height=\"397\" src=\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Isolating-3rd-Party-Services.png\" alt=\"\" class=\"wp-image-1735\" srcset=\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Isolating-3rd-Party-Services.png 257w, https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Isolating-3rd-Party-Services-194x300.png 194w\" sizes=\"(max-width: 257px) 100vw, 257px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"API-Layer\">API Layer<\/h4>\n\n\n\n<p>This is the interface for the Application side. The Third-Party service doesn\u2019t use this API. This is how the application will retrieve something from the service. This API is designed by and for the Application\u2019s needs. This is how the Application \u2018thinks&#8217; about this problem.<\/p>\n\n\n\n<p>Typically, this API (especially at initial implementation) will be informed by how the Third-Party service \u201cthinks\u201d, but the application should never twist itself to fit into the way the service thinks. If there is going to be any twisting, it should be to make the service meet your application\u2019s needs. It\u2019s far more cost-effective. Ideally, this API is the implementation of how the application wants to ask for and receive the data irrespective of how the Third Party does its thing.<\/p>\n\n\n\n<p>Who are we designing this for? What do we want to accomplish? What\u2019s the simplest API to achieve that? How do we want to ask for the data? What format do we want the data to be in when it\u2019s returned? After all that, then consider how the service can inform your API along with a few of its competitors.<\/p>\n\n\n\n<p>Every Third-Party service will likely accomplish the same thing differently. You don\u2019t want to have to change your API to accommodate every service you might integrate. So, make them behave the way your application wants them to behave.<\/p>\n\n\n\n<p>Pay the extra time now to save more time later.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"Manager-Layer\">Manager Layer<\/h4>\n\n\n\n<p>The Manager is the code that sits between the Application API Layer and the Adapter Layer and moderates the traffic between the application and the service. It enforces the API on the adapter and the adapter layer is squarely in its gaze. It defines the methods that the adapters must listen to and enforces how that data is returned to the API Layer.<\/p>\n\n\n\n<p>It can exist (and often does at first) as part of the API Layer\u2019s code, but as complexity grows, it can easily be separated into its own class. Just keep the API part separate from the Manager part. If load balancing is needed, this is where it\u2019ll reside.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"Adapter-Layer\">Adapter Layer<\/h4>\n\n\n\n<p>This is the code that encapsulates all direct interactions with the Third-Party service. Its primary purpose is to \u201cadapt\u201d the service to the application\u2019s API. It maps the data it receives from the service into the expected format from the API.<\/p>\n\n\n\n<p>It coerces the 3rd Party\u2019s behavior(API) to work the way your application API Interface expects. In this way, you are forcing the 3rd party to be integrated with your application and not the other way around. It does this by making the Service play by the Application\u2019s rules. Services are bent to the will of the application instead of the application bending itself to the will of the Service.<\/p>\n\n\n\n<p>This layer can grow, like the Manager Layer, into multiple classes: one for mapping, one for talking to the service, and any other classes as needed. Trap the Third-Party in this layer. It will make all future changes much easier to accomplish.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Implementation-Notes\">Implementation Notes<\/h3>\n\n\n\n<p>The three layers described above are the base pattern. But how it\u2019s implemented varies based on the complexity of what is trying to be accomplished. A simple service that provides very limited functionality doesn\u2019t need the complexity of implementing the three layers separately. And complex implementations can break the manager and adapter layers into additional layers. It all depends on the need. The key is to keep the responsibilities of each layer separate and don\u2019t let the application layer and the adapter layer intermix.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Key-Advantages\">Key Advantages<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Easier-Refactoring\">Easier Refactoring<\/h3>\n\n\n\n<p>This is the main advantage and the key goal of this pattern. It makes replacing and refactoring these Third Party services easier and simpler. For instance, you can add a new Adapter to a new service without touching the existing Application and Adapter code.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"478\" height=\"568\" src=\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Replacing-3rd-Party-Services.png\" alt=\"\" class=\"wp-image-1736\" srcset=\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Replacing-3rd-Party-Services.png 478w, https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Replacing-3rd-Party-Services-252x300.png 252w\" sizes=\"(max-width: 478px) 100vw, 478px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Easier-to-Maintain\">Easier to Maintain<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"Code-Isolation\">Code Isolation<\/h4>\n\n\n\n<p>With code isolated by Interface walls, refactoring, and bug fixes can be done with greatly reduced risk. The Application and the Service Adapters don\u2019t care how each side does their business. Code can be changed at each layer without disturbing the other layers. As long as the adapter fulfills the requirements of the Manager, it will just work for the Application<\/p>\n\n\n\n<p>The only time where a change will affect multiple layers is at the API Interfaces. Even in that case, the complexity of making changes is significantly reduced.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"Changing-the-API-Layer\">Changing the API Layer<\/h4>\n\n\n\n<p>APIs can change, especially at first. Services can come up with an entirely new version of their API and the Application may change how it \u201cthinks\u201d about the problem. Whether early on or later in the project, it\u2019s helpful if such changes can be isolated in such a way as to reduce the risk of breaking the entire integration.<\/p>\n\n\n\n<p>Below describes a major API change from the Third Party service side. But it can equally apply to a major API change on the application\u2019s side.<\/p>\n\n\n\n<p>In this scenario, the service has decided to release V2 of their interface and it\u2019s a non-trivial change so the Application needs to re-do how they communicate with the service. Worse, they are going to sunset V1 in a year. Dealing with this is pretty straightforward within this pattern.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Create a new V2 adapter that implements the service\u2019s new API<\/li>\n\n\n\n<li>Adapt it to return the data in the expected format to the application\u2019s API<\/li>\n\n\n\n<li>Leave the old adapter in place while building the new adapter<\/li>\n\n\n\n<li>When the V2 Adapter is ready, swap to using the new Adapter<\/li>\n\n\n\n<li>Remove the old V1 Adapter<\/li>\n<\/ul>\n\n\n\n<p>This isolates the change, reduces the risk, and requires no changes to the Application\u2019s API layer. Best of all, you don\u2019t have to change any of the application\u2019s code. Well, unless the Application Layer wants to take advantage of new capabilities with the service\u2019s new API.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"479\" height=\"526\" src=\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Updating-API-for-3rd-Party-Services.png\" alt=\"\" class=\"wp-image-1737\" srcset=\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Updating-API-for-3rd-Party-Services.png 479w, https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Updating-API-for-3rd-Party-Services-273x300.png 273w\" sizes=\"(max-width: 479px) 100vw, 479px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"The-Drawbacks\">The Drawbacks<\/h2>\n\n\n\n<p>The biggest drawback to implementing this pattern is that it typically takes more time to build. The more complicated the requirements, the more time it\u2019ll probably take. Whether it\u2019s beneficial timewise to use this pattern or not depends on answering the following questions.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"1\">\n<li>Will your application ever need to replace the Third Party service?<\/li>\n\n\n\n<li>Will your application ever need to do non-trivial refactoring driven by the needs of the application or the whims of the service?<\/li>\n<\/ol>\n\n\n\n<p>If the answer to both questions is \u201cno,\u201d then this pattern isn\u2019t going to provide as much. Its benefits will be limited to the general benefits of isolating code, which is non-trivial and could save you time in the long run anyway by making it easier to understand the implementation.<\/p>\n\n\n\n<p>If the answers include any maybes, then you\u2019ll probably benefit from using this pattern as it will allow you to adjust more easily as you get greater clarity. Start with the simplest implementation of the pattern that gets you what you need now. Your future self will thank you.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Conclusion\">Conclusion<\/h2>\n\n\n\n<p>Third-Party services want to assimilate your application. It\u2019s in their nature. Letting them intertwine deeply into your code base can easily make them a nightmare to update or replace later. Change is inevitable, but assimilation isn\u2019t.<\/p>\n\n\n\n<p>This pattern will let you prepare for the inevitability of that change. It may cost a little more time now to implement, but if done right, it will make changing the code surrounding your integrated services much easier. The extracost is relatively small but the payoff potential is huge.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Third-Party services are like the Borg. They want to assimilate your application into their ecosystems. After assimilation, removing them from [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":1746,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[11],"tags":[],"class_list":["post-1734","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-medely"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Don&#039;t Let Third Party Services Assimilate Your Application | Medely | Build a better workforce. Deliver better care.<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Don&#039;t Let Third Party Services Assimilate Your Application | Medely | Build a better workforce. Deliver better care.\" \/>\n<meta property=\"og:description\" content=\"Third-Party services are like the Borg. They want to assimilate your application into their ecosystems. After assimilation, removing them from [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/\" \/>\n<meta property=\"og:site_name\" content=\"Medely | Build a better workforce. Deliver better care.\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/JoinMedely\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-11T20:06:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-06T14:20:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Engineering-Blog-Header-WP.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Abby Huether\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoinMedely\" \/>\n<meta name=\"twitter:site\" content=\"@JoinMedely\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Abby Huether\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/\"},\"author\":{\"name\":\"Abby Huether\",\"@id\":\"https:\/\/medely.com\/blog\/#\/schema\/person\/05efbbe37169e9f37da1fd87aed6f210\"},\"headline\":\"Don&#8217;t Let Third Party Services Assimilate Your Application\",\"datePublished\":\"2023-07-11T20:06:34+00:00\",\"dateModified\":\"2024-08-06T14:20:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/\"},\"wordCount\":2469,\"publisher\":{\"@id\":\"https:\/\/medely.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Engineering-Blog-Header-WP.png\",\"articleSection\":[\"Medely\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/\",\"url\":\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/\",\"name\":\"Don't Let Third Party Services Assimilate Your Application | Medely | Build a better workforce. Deliver better care.\",\"isPartOf\":{\"@id\":\"https:\/\/medely.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Engineering-Blog-Header-WP.png\",\"datePublished\":\"2023-07-11T20:06:34+00:00\",\"dateModified\":\"2024-08-06T14:20:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#primaryimage\",\"url\":\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Engineering-Blog-Header-WP.png\",\"contentUrl\":\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Engineering-Blog-Header-WP.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/medely.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Don&#8217;t Let Third Party Services Assimilate Your Application\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/medely.com\/blog\/#website\",\"url\":\"https:\/\/medely.com\/blog\/\",\"name\":\"Medely | Build a better workforce. Deliver better care.\",\"description\":\"The latest in healthcare news, plus tips and tricks for facilities and pros.\",\"publisher\":{\"@id\":\"https:\/\/medely.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/medely.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/medely.com\/blog\/#organization\",\"name\":\"Medely\",\"url\":\"https:\/\/medely.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/medely.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2019\/12\/medely-logo-dark.png\",\"contentUrl\":\"https:\/\/medely.com\/blog\/wp-content\/uploads\/2019\/12\/medely-logo-dark.png\",\"width\":824,\"height\":274,\"caption\":\"Medely\"},\"image\":{\"@id\":\"https:\/\/medely.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/JoinMedely\",\"https:\/\/x.com\/JoinMedely\",\"https:\/\/www.instagram.com\/joinmedely\/\",\"https:\/\/www.linkedin.com\/company\/medely\",\"https:\/\/www.youtube.com\/channel\/UCJPLIEbvmJcVSdZjDH32mZg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/medely.com\/blog\/#\/schema\/person\/05efbbe37169e9f37da1fd87aed6f210\",\"name\":\"Abby Huether\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/medely.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/69fc4fd2dd7630883af1290903418756?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/69fc4fd2dd7630883af1290903418756?s=96&d=mm&r=g\",\"caption\":\"Abby Huether\"},\"sameAs\":[\"http:\/\/medely.com\"],\"url\":\"https:\/\/medely.com\/blog\/author\/abby\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Don't Let Third Party Services Assimilate Your Application | Medely | Build a better workforce. Deliver better care.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/","og_locale":"en_US","og_type":"article","og_title":"Don't Let Third Party Services Assimilate Your Application | Medely | Build a better workforce. Deliver better care.","og_description":"Third-Party services are like the Borg. They want to assimilate your application into their ecosystems. After assimilation, removing them from [&hellip;]","og_url":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/","og_site_name":"Medely | Build a better workforce. Deliver better care.","article_publisher":"https:\/\/www.facebook.com\/JoinMedely","article_published_time":"2023-07-11T20:06:34+00:00","article_modified_time":"2024-08-06T14:20:10+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Engineering-Blog-Header-WP.png","type":"image\/png"}],"author":"Abby Huether","twitter_card":"summary_large_image","twitter_creator":"@JoinMedely","twitter_site":"@JoinMedely","twitter_misc":{"Written by":"Abby Huether","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#article","isPartOf":{"@id":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/"},"author":{"name":"Abby Huether","@id":"https:\/\/medely.com\/blog\/#\/schema\/person\/05efbbe37169e9f37da1fd87aed6f210"},"headline":"Don&#8217;t Let Third Party Services Assimilate Your Application","datePublished":"2023-07-11T20:06:34+00:00","dateModified":"2024-08-06T14:20:10+00:00","mainEntityOfPage":{"@id":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/"},"wordCount":2469,"publisher":{"@id":"https:\/\/medely.com\/blog\/#organization"},"image":{"@id":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#primaryimage"},"thumbnailUrl":"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Engineering-Blog-Header-WP.png","articleSection":["Medely"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/","url":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/","name":"Don't Let Third Party Services Assimilate Your Application | Medely | Build a better workforce. Deliver better care.","isPartOf":{"@id":"https:\/\/medely.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#primaryimage"},"image":{"@id":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#primaryimage"},"thumbnailUrl":"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Engineering-Blog-Header-WP.png","datePublished":"2023-07-11T20:06:34+00:00","dateModified":"2024-08-06T14:20:10+00:00","breadcrumb":{"@id":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#primaryimage","url":"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Engineering-Blog-Header-WP.png","contentUrl":"https:\/\/medely.com\/blog\/wp-content\/uploads\/2023\/07\/Engineering-Blog-Header-WP.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/medely.com\/blog\/dont-let-third-party-services-assimilate-your-application\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/medely.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Don&#8217;t Let Third Party Services Assimilate Your Application"}]},{"@type":"WebSite","@id":"https:\/\/medely.com\/blog\/#website","url":"https:\/\/medely.com\/blog\/","name":"Medely | Build a better workforce. Deliver better care.","description":"The latest in healthcare news, plus tips and tricks for facilities and pros.","publisher":{"@id":"https:\/\/medely.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/medely.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/medely.com\/blog\/#organization","name":"Medely","url":"https:\/\/medely.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/medely.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/medely.com\/blog\/wp-content\/uploads\/2019\/12\/medely-logo-dark.png","contentUrl":"https:\/\/medely.com\/blog\/wp-content\/uploads\/2019\/12\/medely-logo-dark.png","width":824,"height":274,"caption":"Medely"},"image":{"@id":"https:\/\/medely.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/JoinMedely","https:\/\/x.com\/JoinMedely","https:\/\/www.instagram.com\/joinmedely\/","https:\/\/www.linkedin.com\/company\/medely","https:\/\/www.youtube.com\/channel\/UCJPLIEbvmJcVSdZjDH32mZg"]},{"@type":"Person","@id":"https:\/\/medely.com\/blog\/#\/schema\/person\/05efbbe37169e9f37da1fd87aed6f210","name":"Abby Huether","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/medely.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/69fc4fd2dd7630883af1290903418756?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/69fc4fd2dd7630883af1290903418756?s=96&d=mm&r=g","caption":"Abby Huether"},"sameAs":["http:\/\/medely.com"],"url":"https:\/\/medely.com\/blog\/author\/abby\/"}]}},"_links":{"self":[{"href":"https:\/\/medely.com\/blog\/wp-json\/wp\/v2\/posts\/1734"}],"collection":[{"href":"https:\/\/medely.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/medely.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/medely.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/medely.com\/blog\/wp-json\/wp\/v2\/comments?post=1734"}],"version-history":[{"count":1,"href":"https:\/\/medely.com\/blog\/wp-json\/wp\/v2\/posts\/1734\/revisions"}],"predecessor-version":[{"id":1738,"href":"https:\/\/medely.com\/blog\/wp-json\/wp\/v2\/posts\/1734\/revisions\/1738"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/medely.com\/blog\/wp-json\/wp\/v2\/media\/1746"}],"wp:attachment":[{"href":"https:\/\/medely.com\/blog\/wp-json\/wp\/v2\/media?parent=1734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/medely.com\/blog\/wp-json\/wp\/v2\/categories?post=1734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/medely.com\/blog\/wp-json\/wp\/v2\/tags?post=1734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}