{"id":2155,"date":"2012-10-11T22:59:41","date_gmt":"2012-10-11T22:59:41","guid":{"rendered":"https:\/\/www.wapshere.com\/missmiis\/?p=2155"},"modified":"2022-08-21T16:12:01","modified_gmt":"2022-08-21T16:12:01","slug":"fim-best-practice-have-development-and-test-environments","status":"publish","type":"post","link":"https:\/\/www.wapshere.com\/missmiis\/fim-best-practice-have-development-and-test-environments","title":{"rendered":"FIM Best Practice: Have Development and Test environments"},"content":{"rendered":"<p>For anything above the simplest GALSync deployment, and particularly if you have the FIM Portal, you must have development and test environments.<\/p>\n<p>There are always a number of different ways you can approach each problem, and you need a suitably representative Dev environment to try them all out.<\/p>\n<p>Meanwhile Test should be as close to production as you can get it so you can properly test any changes. Once changes are applied in production and have <em>impacted production data<\/em> they can be hard to roll back. Good testing is key!<\/p>\n<p><!--more--><\/p>\n<p><strong>Requirements for Development<\/strong><\/p>\n<ul>\n<li>All FIM components on the same versions as Prod.<\/li>\n<li>Each production system represented: at least a text file MA with a data dump if you can&#8217;t have a full Development version of the connected system.<\/li>\n<li>A representative sample of production identity data.<\/li>\n<\/ul>\n<p><strong>Requirements for Test<\/strong><\/p>\n<ul>\n<li>All FIM components on the same versions as Prod.<\/li>\n<li>A Test version of each production system, same versions and config as prod.<\/li>\n<li>A full set of production identity data.<\/li>\n<li>A similar spec to Prod as you are likely to run more Full Syncs in Test and bad performance can seriously curtail testing.<\/li>\n<\/ul>\n<p><strong>Migrating Configuration from Dev to Test to Prod<\/strong><\/p>\n<p>There are good resources on the Microsoft website for configuration migration: <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/ee534906(v=ws.10).aspx\">http:\/\/technet.microsoft.com\/en-us\/library\/ee534906(v=ws.10).aspx<\/a><\/p>\n<p>It is worth thinking of the need to migrate configuration changes when designing your system components. Some tips:<\/p>\n<ul>\n<li>Always use a constants lookup file with any custom code so you can have an environment-specific lookup file and use the same code.<\/li>\n<li>The Portal migration scripts work better if you have the same people in all environments &#8211; particularly if they are members of manual groups or sets.<\/li>\n<li>Small changes are often simpler to apply by hand rather than configuration migration.<\/li>\n<\/ul>\n<p><strong>Refreshing Dev and Test Environments<\/strong><\/p>\n<p>Inevitably Dev and Test environments will diverge from the Prod environment, so it can sometimes be very useful to do a refresh from Prod.<\/p>\n<p>The best way to ensure you get everything is by transferring the databases. If you&#8217;re transferring to a different domain you need to do a couple of other steps:<\/p>\n<ul>\n<li>Reinstall the Sync Service using the prod DB and specifying new service accounts and groups.<\/li>\n<li>Reinstall the Portal using the prod DB and specifying new service accounts. Then use <a href=\"https:\/\/www.wapshere.com\/missmiis\/change-fimadmin-ps1\">this script<\/a> to change the Built-In Administrator account.<\/li>\n<\/ul>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>For anything above the simplest GALSync deployment, and particularly if you have the FIM Portal, you must have development and test environments. There are always a number of different ways you can approach each problem, and you need a suitably representative Dev environment to try them all out. Meanwhile Test should be as close to&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":[]},"categories":[55,42],"tags":[],"class_list":["post-2155","post","type-post","status-publish","format-standard","hentry","category-best-practice","category-fim-2010"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pkp1o-yL","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/posts\/2155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/comments?post=2155"}],"version-history":[{"count":7,"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/posts\/2155\/revisions"}],"predecessor-version":[{"id":3281,"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/posts\/2155\/revisions\/3281"}],"wp:attachment":[{"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/media?parent=2155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/categories?post=2155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/tags?post=2155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}