Repository: gruntwork-io/terratest

Issue:
Remove usage of satori/go.uuid package
**Describe the solution you'd like**
Please remove the usage of satori/go.uuid package as its quite old and the v1.2.0 seems to be flagged by NIST with a critical CVE - CVE-2021-3538

**Describe alternatives you've considered**
NA

**Additional context**
NA


Hints from issue comments:

Solution patch:
diff --git a/go.mod b/go.mod
index 9df86f6f..0c973f5c 100644
--- a/go.mod
+++ b/go.mod
@@ -47,10 +47,20 @@ require (
 
 require (
 	cloud.google.com/go/cloudbuild v1.19.0
-	github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0
-	github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0
+	github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0
+	github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1
 	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appcontainers/armappcontainers/v3 v3.0.0
+	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appservice/armappservice/v2 v2.3.0
+	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/datafactory/armdatafactory/v9 v9.1.0
+	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/keyvault/armkeyvault v1.5.0
+	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/mysql/armmysql v1.2.0
+	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/postgresql/armpostgresql v1.2.0
 	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0
+	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/sql/armsql v1.2.0
+	github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/synapse/armsynapse v0.8.0
+	github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates v1.4.0
+	github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.4.0
+	github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.4.0
 	github.com/aws/aws-sdk-go-v2 v1.32.5
 	github.com/aws/aws-sdk-go-v2/config v1.28.5
 	github.com/aws/aws-sdk-go-v2/credentials v1.17.46
@@ -93,14 +103,15 @@ require (
 	cloud.google.com/go/longrunning v0.6.2 // indirect
 	cloud.google.com/go/monitoring v1.21.2 // indirect
 	filippo.io/edwards25519 v1.1.0 // indirect
-	github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
+	github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect
+	github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0 // indirect
 	github.com/Azure/go-autorest v14.2.0+incompatible // indirect
 	github.com/Azure/go-autorest/autorest/adal v0.9.13 // indirect
 	github.com/Azure/go-autorest/autorest/azure/cli v0.4.2 // indirect
 	github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
 	github.com/Azure/go-autorest/logger v0.2.1 // indirect
 	github.com/Azure/go-autorest/tracing v0.6.0 // indirect
-	github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
+	github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect
 	github.com/BurntSushi/toml v1.4.0 // indirect
 	github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1 // indirect
 	github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect
@@ -191,7 +202,6 @@ require (
 	github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
 	github.com/pmezard/go-difflib v1.0.0 // indirect
 	github.com/russross/blackfriday/v2 v2.1.0 // indirect
-	github.com/satori/go.uuid v1.2.0 // indirect
 	github.com/sergi/go-diff v1.3.1 // indirect
 	github.com/spf13/pflag v1.0.6 // indirect
 	github.com/texttheater/golang-levenshtein v1.0.1 // indirect
diff --git a/go.sum b/go.sum
index f21d5595..32b67560 100644
--- a/go.sum
+++ b/go.sum
@@ -28,22 +28,48 @@ filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4
 github.com/Azure/azure-sdk-for-go v51.0.0+incompatible h1:p7blnyJSjJqf5jflHbSGhIhEpXIgIFmYZNg5uwqweso=
 github.com/Azure/azure-sdk-for-go v51.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
 github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 h1:g0EZJwz7xkXQiZAI5xi9f3WWFYBlX1CPTrR+NDToRkQ=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0/go.mod h1:XCW7KnZet0Opnr7HccfUw1PLc4CjHqpcaxW8DHklNkQ=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM=
 github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8=
 github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA=
 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appcontainers/armappcontainers/v3 v3.0.0 h1:NYYoOOPGOqUXw/bGIVd6OY/K8J23a18IAlAx1tOHWNo=
 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appcontainers/armappcontainers/v3 v3.0.0/go.mod h1:LDN3sr8FJ36sY6ZmMes6Q2vHJ+5r1aFsE3wEo7VbXJg=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appservice/armappservice/v2 v2.3.0 h1:JI8PcWOImyvIUEZ0Bbmfe05FOlWkMi2KhjG+cAKaUms=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appservice/armappservice/v2 v2.3.0/go.mod h1:nJLFPGJkyKfDDyJiPuHIXsCi/gpJkm07EvRgiX7SGlI=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/datafactory/armdatafactory/v9 v9.1.0 h1:82oTC4oB/7AjVmPR8KMvlyHZgZ8PGdboh8c0Jol/XWY=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/datafactory/armdatafactory/v9 v9.1.0/go.mod h1:nuDWiSqiFv4Bo8LX99dl+Ecl9o1iNSLJDBsrl8iRWr4=
 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do=
 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0/go.mod h1:LRr2FzBTQlONPPa5HREE5+RjSCTXl7BwOvYOaWTqCaI=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v3 v3.1.0 h1:2qsIIvxVT+uE6yrNldntJKlLRgxGbZ85kgtz5SNBhMw=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v3 v3.1.0/go.mod h1:AW8VEadnhw9xox+VaVd9sP7NjzOAnaZBLRH6Tq3cJ38=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/keyvault/armkeyvault v1.5.0 h1:nnQ9vXH039UrEFxi08pPuZBE7VfqSJt343uJLw0rhWI=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/keyvault/armkeyvault v1.5.0/go.mod h1:4YIVtzMFVsPwBvitCDX7J9sqthSj43QD1sP6fYc1egc=
 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0 h1:pPvTJ1dY0sA35JOeFq6TsY2xj6Z85Yo23Pj4wCCvu4o=
 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0/go.mod h1:mLfWfj8v3jfWKsL9G4eoBoXVcsqcIUTapmdKy7uGOp0=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/mysql/armmysql v1.2.0 h1:dhywcZH9yPDIje9aTqwy6psZSPzI6CJLYEprDahIBSQ=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/mysql/armmysql v1.2.0/go.mod h1:6z3b+JdBLH0eMzfBex/cvEIoEFVEwXuB0wbgdfN11iM=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/postgresql/armpostgresql v1.2.0 h1:0hXKrsbh2M6CQyW0TDC9Bsyd99vQmrOxiBTUfQHZjPA=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/postgresql/armpostgresql v1.2.0/go.mod h1:bvZZor36Jg9q9kouuMyfJ+ay77+qK+YUfThXH1FdXjU=
 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0 h1:Dd+RhdJn0OTtVGaeDLZpcumkIVCtA/3/Fo42+eoYvVM=
 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0/go.mod h1:5kakwfW5CjC9KK+Q4wjXAg+ShuIm2mBMua0ZFj2C8PE=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/sql/armsql v1.2.0 h1:S087deZ0kP1RUg4pU7w9U9xpUedTCbOtz+mnd0+hrkQ=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/sql/armsql v1.2.0/go.mod h1:B4cEyXrWBmbfMDAPnpJ1di7MAt5DKP57jPEObAvZChg=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/synapse/armsynapse v0.8.0 h1:IKCilT2DdxjeCXhiCIZb5hywpA1KDGKwpdA1WL20wT0=
+github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/synapse/armsynapse v0.8.0/go.mod h1:IzuvA34YNVnlifc1+KhCouAKEf1VYzV439FOpyfTHzA=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates v1.4.0 h1:mtvR5ZXH5Ew6PSONd5lO5OXovWP1E3oAlgC8fpxor2Q=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates v1.4.0/go.mod h1:u560+RFVfG0CBPzkXlDW43slESbBAQjgDGi3r6z+wk8=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.4.0 h1:E4MgwLBGeVB5f2MdcIVD3ELVAWpr+WD6MUe1i+tM/PA=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.4.0/go.mod h1:Y2b/1clN4zsAoUd/pgNAQHjLDnTis/6ROkUfyob6psM=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.4.0 h1:/g8S6wk65vfC6m3FIxJ+i5QDyN9JWwXI8Hb0Img10hU=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.4.0/go.mod h1:gpl+q95AzZlKVI3xSoseF9QPrypk0hQqBiJYeB/cR/I=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0 h1:nCYfgcSyHZXJI8J0IWE5MsCGlb2xp9fJiXyxWgmOFg4=
+github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.2.0/go.mod h1:ucUjca2JtSZboY8IoUqyQyuuXvwbMBVwFOm0vdQPNhA=
 github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
 github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
 github.com/Azure/go-autorest/autorest v0.11.17/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw=
@@ -70,8 +96,10 @@ github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+Z
 github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
 github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
 github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
+github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM=
+github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
 github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
@@ -190,6 +218,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/denisenkom/go-mssqldb v0.12.3 h1:pBSGx9Tq67pBOTLmxNuirNTeB8Vjmf886Kx+8Y+8shw=
 github.com/denisenkom/go-mssqldb v0.12.3/go.mod h1:k0mtMFOnU+AihqFxPMiF05rtiDrorD1Vrm1KEz5hxDo=
+github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
+github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
 github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
 github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=
 github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
@@ -351,6 +381,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
 github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
 github.com/jstemmer/go-junit-report v1.0.0 h1:8X1gzZpR+nVQLAht+L/foqOeX2l9DTZoaIPbEQHxsds=
 github.com/jstemmer/go-junit-report v1.0.0/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
+github.com/keybase/go-keychain v0.0.1 h1:way+bWYa6lDppZoZcgMbYsvC7GxljxrskdNInRtuthU=
+github.com/keybase/go-keychain v0.0.1/go.mod h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k=
 github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
@@ -435,13 +467,13 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
 github.com/pquerna/otp v1.4.0 h1:wZvl1TIVxKRThZIBiwOOHOGP/1+nZyWBil9Y2XNEDzg=
 github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI=
+github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
 github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
 github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
-github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
-github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
 github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
 github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
diff --git a/modules/azure/appService.go b/modules/azure/appService.go
index 28aceb22..0922eef8 100644
--- a/modules/azure/appService.go
+++ b/modules/azure/appService.go
@@ -4,7 +4,7 @@ import (
 	"context"
 	"testing"
 
-	"github.com/Azure/azure-sdk-for-go/services/web/mgmt/2019-08-01/web"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appservice/armappservice/v2"
 	"github.com/stretchr/testify/require"
 )
 
@@ -31,7 +31,7 @@ func AppExistsE(appName string, resourceGroupName string, subscriptionID string)
 
 // GetAppService gets the App service object
 // This function would fail the test if there is an error.
-func GetAppService(t *testing.T, appName string, resGroupName string, subscriptionID string) *web.Site {
+func GetAppService(t *testing.T, appName string, resGroupName string, subscriptionID string) *armappservice.Site {
 	site, err := GetAppServiceE(appName, resGroupName, subscriptionID)
 	require.NoError(t, err)
 
@@ -39,7 +39,7 @@ func GetAppService(t *testing.T, appName string, resGroupName string, subscripti
 }
 
 // GetAppServiceE gets the App service object
-func GetAppServiceE(appName string, resGroupName string, subscriptionID string) (*web.Site, error) {
+func GetAppServiceE(appName string, resGroupName string, subscriptionID string) (*armappservice.Site, error) {
 	rgName, err := getTargetAzureResourceGroupName(resGroupName)
 	if err != nil {
 		return nil, err
@@ -50,28 +50,19 @@ func GetAppServiceE(appName string, resGroupName string, subscriptionID string)
 		return nil, err
 	}
 
-	resource, err := client.Get(context.Background(), rgName, appName)
+	resp, err := client.Get(context.Background(), rgName, appName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	return &resource, nil
+	return &resp.Site, nil
 }
 
-func GetAppServiceClientE(subscriptionID string) (*web.AppsClient, error) {
-	// Create an Apps client
-	appsClient, err := CreateAppServiceClientE(subscriptionID)
+// GetAppServiceClientE creates and returns an App Service web apps client
+func GetAppServiceClientE(subscriptionID string) (*armappservice.WebAppsClient, error) {
+	clientFactory, err := getArmAppServiceClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
-	if err != nil {
-		return nil, err
-	}
-
-	// Attach authorizer to the client
-	appsClient.Authorizer = *authorizer
-	return appsClient, nil
+	return clientFactory.NewWebAppsClient(), nil
 }
diff --git a/modules/azure/client_factory.go b/modules/azure/client_factory.go
index 4fec3de1..664d16a0 100644
--- a/modules/azure/client_factory.go
+++ b/modules/azure/client_factory.go
@@ -17,10 +17,8 @@ import (
 	"strings"
 
 	"github.com/Azure/azure-sdk-for-go/profiles/latest/frontdoor/mgmt/frontdoor"
-	"github.com/Azure/azure-sdk-for-go/profiles/latest/mysql/mgmt/mysql"
 	"github.com/Azure/azure-sdk-for-go/profiles/latest/privatedns/mgmt/privatedns"
 	"github.com/Azure/azure-sdk-for-go/profiles/latest/resources/mgmt/resources"
-	"github.com/Azure/azure-sdk-for-go/profiles/latest/sql/mgmt/sql"
 	"github.com/Azure/azure-sdk-for-go/profiles/preview/cosmos-db/mgmt/documentdb"
 	"github.com/Azure/azure-sdk-for-go/profiles/preview/preview/monitor/mgmt/insights"
 	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
@@ -29,19 +27,21 @@ import (
 	"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
 	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
 	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appcontainers/armappcontainers/v3"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/appservice/armappservice/v2"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/datafactory/armdatafactory/v9"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/keyvault/armkeyvault"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/mysql/armmysql"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/postgresql/armpostgresql"
 	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/sql/armsql"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/synapse/armsynapse"
 	"github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute"
 	"github.com/Azure/azure-sdk-for-go/services/containerinstance/mgmt/2018-10-01/containerinstance"
 	"github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2019-05-01/containerregistry"
 	"github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2019-11-01/containerservice"
-	"github.com/Azure/azure-sdk-for-go/services/datafactory/mgmt/2018-06-01/datafactory"
-	kvmng "github.com/Azure/azure-sdk-for-go/services/keyvault/mgmt/2016-10-01/keyvault"
 	"github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-09-01/network"
-	sqlmi "github.com/Azure/azure-sdk-for-go/services/preview/sql/mgmt/v3.0/sql"
 	"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-06-01/subscriptions"
 	"github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2019-06-01/storage"
-	"github.com/Azure/azure-sdk-for-go/services/synapse/mgmt/2020-12-01/synapse"
-	"github.com/Azure/azure-sdk-for-go/services/web/mgmt/2019-08-01/web"
 	autorestAzure "github.com/Azure/go-autorest/autorest/azure"
 )
 
@@ -163,25 +163,54 @@ func CreateCosmosDBSQLClientE(subscriptionID string) (*documentdb.SQLResourcesCl
 	return &cosmosClient, nil
 }
 
-// CreateKeyVaultManagementClientE is a helper function that will setup a key vault management client with the correct BaseURI depending on
-// the Azure environment that is currently setup (or "Public", if none is setup).
-func CreateKeyVaultManagementClientE(subscriptionID string) (*kvmng.VaultsClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
+// getArmKeyVaultClientFactory gets an arm keyvault client factory
+func getArmKeyVaultClientFactory(subscriptionID string) (*armkeyvault.ClientFactory, error) {
+	targetSubscriptionID, err := getTargetAzureSubscription(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Lookup environment URI
-	baseURI, err := getBaseURI()
+	clientCloudConfig, err := getClientCloudConfig()
 	if err != nil {
 		return nil, err
 	}
+	cred, err := azidentity.NewDefaultAzureCredential(&azidentity.DefaultAzureCredentialOptions{
+		ClientOptions: azcore.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
+	if err != nil {
+		return nil, err
+	}
+	return armkeyvault.NewClientFactory(targetSubscriptionID, cred, &arm.ClientOptions{
+		ClientOptions: policy.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
+}
 
-	// create keyvault management clinet
-	vaultClient := kvmng.NewVaultsClientWithBaseURI(baseURI, subscriptionID)
-
-	return &vaultClient, nil
+// getArmPostgreSQLClientFactory gets an arm postgresql client factory
+func getArmPostgreSQLClientFactory(subscriptionID string) (*armpostgresql.ClientFactory, error) {
+	targetSubscriptionID, err := getTargetAzureSubscription(subscriptionID)
+	if err != nil {
+		return nil, err
+	}
+	clientCloudConfig, err := getClientCloudConfig()
+	if err != nil {
+		return nil, err
+	}
+	cred, err := azidentity.NewDefaultAzureCredential(&azidentity.DefaultAzureCredentialOptions{
+		ClientOptions: azcore.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
+	if err != nil {
+		return nil, err
+	}
+	return armpostgresql.NewClientFactory(targetSubscriptionID, cred, &arm.ClientOptions{
+		ClientOptions: policy.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
 }
 
 // CreateStorageAccountClientE creates a storage account client.
@@ -302,148 +331,98 @@ func CreateResourceGroupClientE(subscriptionID string) (*resources.GroupsClient,
 }
 
 // CreateSQLServerClient is a helper function that will create and setup a sql server client
-func CreateSQLServerClient(subscriptionID string) (*sql.ServersClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
-	if err != nil {
-		return nil, err
-	}
-
-	// Lookup environment URI
-	baseURI, err := getBaseURI()
+func CreateSQLServerClient(subscriptionID string) (*armsql.ServersClient, error) {
+	clientFactory, err := getArmSQLClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Create a sql server client
-	sqlClient := sql.NewServersClientWithBaseURI(baseURI, subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
-	if err != nil {
-		return nil, err
-	}
-
-	// Attach authorizer to the client
-	sqlClient.Authorizer = *authorizer
-
-	return &sqlClient, nil
+	return clientFactory.NewServersClient(), nil
 }
 
-// CreateSQLMangedInstanceClient is a helper function that will create and setup a sql server client
-func CreateSQLMangedInstanceClient(subscriptionID string) (*sqlmi.ManagedInstancesClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
-	if err != nil {
-		return nil, err
-	}
-
-	// Lookup environment URI
-	baseURI, err := getBaseURI()
+// CreateSQLMangedInstanceClient is a helper function that will create and setup a sql managed instance client
+func CreateSQLMangedInstanceClient(subscriptionID string) (*armsql.ManagedInstancesClient, error) {
+	clientFactory, err := getArmSQLClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
+	return clientFactory.NewManagedInstancesClient(), nil
+}
 
-	// Create a sql server client
-	sqlmiClient := sqlmi.NewManagedInstancesClientWithBaseURI(baseURI, subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
+// CreateSQLMangedDatabasesClient is a helper function that will create and setup a sql managed databases client
+func CreateSQLMangedDatabasesClient(subscriptionID string) (*armsql.ManagedDatabasesClient, error) {
+	clientFactory, err := getArmSQLClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Attach authorizer to the client
-	sqlmiClient.Authorizer = *authorizer
-
-	return &sqlmiClient, nil
+	return clientFactory.NewManagedDatabasesClient(), nil
 }
 
-// CreateSQLMangedDatabasesClient is a helper function that will create and setup a sql server client
-func CreateSQLMangedDatabasesClient(subscriptionID string) (*sqlmi.ManagedDatabasesClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
+// getArmSQLClientFactory gets an arm sql client factory
+func getArmSQLClientFactory(subscriptionID string) (*armsql.ClientFactory, error) {
+	targetSubscriptionID, err := getTargetAzureSubscription(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Lookup environment URI
-	baseURI, err := getBaseURI()
+	clientCloudConfig, err := getClientCloudConfig()
 	if err != nil {
 		return nil, err
 	}
-
-	// Create a sql server client
-	sqlmidbClient := sqlmi.NewManagedDatabasesClientWithBaseURI(baseURI, subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
+	cred, err := azidentity.NewDefaultAzureCredential(&azidentity.DefaultAzureCredentialOptions{
+		ClientOptions: azcore.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
 	if err != nil {
 		return nil, err
 	}
-
-	// Attach authorizer to the client
-	sqlmidbClient.Authorizer = *authorizer
-
-	return &sqlmidbClient, nil
+	return armsql.NewClientFactory(targetSubscriptionID, cred, &arm.ClientOptions{
+		ClientOptions: policy.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
 }
 
 // CreateDatabaseClient is a helper function that will create and setup a SQL DB client
-func CreateDatabaseClient(subscriptionID string) (*sql.DatabasesClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
-	if err != nil {
-		return nil, err
-	}
-
-	// Lookup environment URI
-	baseURI, err := getBaseURI()
+func CreateDatabaseClient(subscriptionID string) (*armsql.DatabasesClient, error) {
+	clientFactory, err := getArmSQLClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
+	return clientFactory.NewDatabasesClient(), nil
+}
 
-	// Create a sql DB client
-	sqlDBClient := sql.NewDatabasesClientWithBaseURI(baseURI, subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
+// CreateMySQLServerClientE is a helper function that will setup a mysql server client.
+func CreateMySQLServerClientE(subscriptionID string) (*armmysql.ServersClient, error) {
+	clientFactory, err := getArmMySQLClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Attach authorizer to the client
-	sqlDBClient.Authorizer = *authorizer
-
-	return &sqlDBClient, nil
+	return clientFactory.NewServersClient(), nil
 }
 
-// CreateMySQLServerClientE is a helper function that will setup a mysql server client.
-func CreateMySQLServerClientE(subscriptionID string) (*mysql.ServersClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
+// getArmMySQLClientFactory gets an arm mysql client factory
+func getArmMySQLClientFactory(subscriptionID string) (*armmysql.ClientFactory, error) {
+	targetSubscriptionID, err := getTargetAzureSubscription(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Lookup environment URI
-	baseURI, err := getBaseURI()
+	clientCloudConfig, err := getClientCloudConfig()
 	if err != nil {
 		return nil, err
 	}
-
-	// Create a mysql server client
-	mysqlClient := mysql.NewServersClientWithBaseURI(baseURI, subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
+	cred, err := azidentity.NewDefaultAzureCredential(&azidentity.DefaultAzureCredentialOptions{
+		ClientOptions: azcore.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
 	if err != nil {
 		return nil, err
 	}
-
-	// Attach authorizer to the client
-	mysqlClient.Authorizer = *authorizer
-
-	return &mysqlClient, nil
+	return armmysql.NewClientFactory(targetSubscriptionID, cred, &arm.ClientOptions{
+		ClientOptions: policy.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
 }
 
 // CreateDisksClientE returns a new Disks client in the specified Azure Subscription
@@ -740,22 +719,37 @@ func CreateNewVirtualNetworkClientE(subscriptionID string) (*network.VirtualNetw
 
 // CreateAppServiceClientE returns an App service client instance configured with the
 // correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup).
-func CreateAppServiceClientE(subscriptionID string) (*web.AppsClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
+func CreateAppServiceClientE(subscriptionID string) (*armappservice.WebAppsClient, error) {
+	clientFactory, err := getArmAppServiceClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
+	return clientFactory.NewWebAppsClient(), nil
+}
 
-	// Lookup environment URI
-	baseURI, err := getEnvironmentEndpointE(ResourceManagerEndpointName)
+// getArmAppServiceClientFactory gets an arm app service client factory
+func getArmAppServiceClientFactory(subscriptionID string) (*armappservice.ClientFactory, error) {
+	targetSubscriptionID, err := getTargetAzureSubscription(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// create client
-	appsClient := web.NewAppsClientWithBaseURI(baseURI, subscriptionID)
-	return &appsClient, nil
+	clientCloudConfig, err := getClientCloudConfig()
+	if err != nil {
+		return nil, err
+	}
+	cred, err := azidentity.NewDefaultAzureCredential(&azidentity.DefaultAzureCredentialOptions{
+		ClientOptions: azcore.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
+	if err != nil {
+		return nil, err
+	}
+	return armappservice.NewClientFactory(targetSubscriptionID, cred, &arm.ClientOptions{
+		ClientOptions: policy.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
 }
 
 // CreateContainerRegistryClientE returns an ACR client instance configured with the
@@ -838,91 +832,56 @@ func CreateFrontDoorFrontendEndpointClientE(subscriptionID string) (*frontdoor.F
 	return &client, nil
 }
 
-// CreateSynapseWorkspaceClientE is a helper function that will setup a synapse client.
-func CreateSynapseWorkspaceClientE(subscriptionID string) (*synapse.WorkspacesClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
-	if err != nil {
-		return nil, err
-	}
-
-	// Lookup environment URI
-	baseURI, err := getBaseURI()
+// CreateSynapseWorkspaceClientE is a helper function that will setup a synapse workspace client.
+func CreateSynapseWorkspaceClientE(subscriptionID string) (*armsynapse.WorkspacesClient, error) {
+	clientFactory, err := getArmSynapseClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
+	return clientFactory.NewWorkspacesClient(), nil
+}
 
-	// Create a synapse client
-	synapseWorkspaceClient := synapse.NewWorkspacesClientWithBaseURI(baseURI, subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
+// CreateSynapseSqlPoolClientE is a helper function that will setup a synapse sql pool client.
+func CreateSynapseSqlPoolClientE(subscriptionID string) (*armsynapse.SQLPoolsClient, error) {
+	clientFactory, err := getArmSynapseClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Attach authorizer to the client
-	synapseWorkspaceClient.Authorizer = *authorizer
-
-	return &synapseWorkspaceClient, nil
+	return clientFactory.NewSQLPoolsClient(), nil
 }
 
-// CreateSynapseSqlPoolClientE is a helper function that will setup a synapse client.
-func CreateSynapseSqlPoolClientE(subscriptionID string) (*synapse.SQLPoolsClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
+// getArmSynapseClientFactory gets an arm synapse client factory
+func getArmSynapseClientFactory(subscriptionID string) (*armsynapse.ClientFactory, error) {
+	targetSubscriptionID, err := getTargetAzureSubscription(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Lookup environment URI
-	baseURI, err := getBaseURI()
+	clientCloudConfig, err := getClientCloudConfig()
 	if err != nil {
 		return nil, err
 	}
-
-	// Create a synapse client
-	synapseSqlPoolClient := synapse.NewSQLPoolsClientWithBaseURI(baseURI, subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
+	cred, err := azidentity.NewDefaultAzureCredential(&azidentity.DefaultAzureCredentialOptions{
+		ClientOptions: azcore.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
 	if err != nil {
 		return nil, err
 	}
-
-	// Attach authorizer to the client
-	synapseSqlPoolClient.Authorizer = *authorizer
-
-	return &synapseSqlPoolClient, nil
+	return armsynapse.NewClientFactory(targetSubscriptionID, cred, &arm.ClientOptions{
+		ClientOptions: policy.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
 }
 
-// CreateDataFactoriesClientE is a helper function that will setup a synapse client.
-func CreateDataFactoriesClientE(subscriptionID string) (*datafactory.FactoriesClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
-	if err != nil {
-		return nil, err
-	}
-
-	// Lookup environment URI
-	baseURI, err := getBaseURI()
-	if err != nil {
-		return nil, err
-	}
-
-	// Create a synapse client
-	dataFactoryClient := datafactory.NewFactoriesClientWithBaseURI(baseURI, subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
+// CreateDataFactoriesClientE is a helper function that will setup a data factory client.
+func CreateDataFactoriesClientE(subscriptionID string) (*armdatafactory.FactoriesClient, error) {
+	clientFactory, err := getArmDataFactoryClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Attach authorizer to the client
-	dataFactoryClient.Authorizer = *authorizer
-
-	return &dataFactoryClient, nil
+	return clientFactory.NewFactoriesClient(), nil
 }
 
 // CreatePrivateDnsZonesClientE is a helper function that will setup a private DNS zone client.
@@ -1088,6 +1047,31 @@ func getArmAppContainersClientFactory(subscriptionID string) (*armappcontainers.
 	})
 }
 
+// getArmDataFactoryClientFactory gets an arm data factory client factory
+func getArmDataFactoryClientFactory(subscriptionID string) (*armdatafactory.ClientFactory, error) {
+	targetSubscriptionID, err := getTargetAzureSubscription(subscriptionID)
+	if err != nil {
+		return nil, err
+	}
+	clientCloudConfig, err := getClientCloudConfig()
+	if err != nil {
+		return nil, err
+	}
+	cred, err := azidentity.NewDefaultAzureCredential(&azidentity.DefaultAzureCredentialOptions{
+		ClientOptions: azcore.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
+	if err != nil {
+		return nil, err
+	}
+	return armdatafactory.NewClientFactory(targetSubscriptionID, cred, &arm.ClientOptions{
+		ClientOptions: policy.ClientOptions{
+			Cloud: clientCloudConfig,
+		},
+	})
+}
+
 func getClientCloudConfig() (cloud.Configuration, error) {
 	envName := getDefaultEnvironmentName()
 	switch strings.ToUpper(envName) {
diff --git a/modules/azure/datafactory.go b/modules/azure/datafactory.go
index b8d5be7e..35ee75a7 100644
--- a/modules/azure/datafactory.go
+++ b/modules/azure/datafactory.go
@@ -3,7 +3,7 @@ package azure
 import (
 	"context"
 
-	"github.com/Azure/azure-sdk-for-go/services/datafactory/mgmt/2018-06-01/datafactory"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/datafactory/armdatafactory/v9"
 	"github.com/gruntwork-io/terratest/modules/testing"
 	"github.com/stretchr/testify/require"
 )
@@ -28,29 +28,29 @@ func DataFactoryExistsE(dataFactoryName string, resourceGroupName string, subscr
 	return true, nil
 }
 
-// GetDataFactory is a helper function that gets the synapse workspace.
+// GetDataFactory is a helper function that gets the data factory.
 // This function would fail the test if there is an error.
-func GetDataFactory(t testing.TestingT, resGroupName string, factoryName string, subscriptionID string) *datafactory.Factory {
-	Workspace, err := GetDataFactoryE(subscriptionID, resGroupName, factoryName)
+func GetDataFactory(t testing.TestingT, resGroupName string, factoryName string, subscriptionID string) *armdatafactory.Factory {
+	factory, err := GetDataFactoryE(subscriptionID, resGroupName, factoryName)
 	require.NoError(t, err)
 
-	return Workspace
+	return factory
 }
 
-// GetDataFactoryE is a helper function that gets the workspace.
-func GetDataFactoryE(subscriptionID string, resGroupName string, factoryName string) (*datafactory.Factory, error) {
+// GetDataFactoryE is a helper function that gets the data factory.
+func GetDataFactoryE(subscriptionID string, resGroupName string, factoryName string) (*armdatafactory.Factory, error) {
 	// Create a datafactory client
 	datafactoryClient, err := CreateDataFactoriesClientE(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	// Get the corresponding synapse workspace
-	dataFactory, err := datafactoryClient.Get(context.Background(), resGroupName, factoryName, "")
+	// Get the corresponding data factory
+	resp, err := datafactoryClient.Get(context.Background(), resGroupName, factoryName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	//Return synapse workspace
-	return &dataFactory, nil
+	// Return data factory
+	return &resp.Factory, nil
 }
diff --git a/modules/azure/keyvault.go b/modules/azure/keyvault.go
index 9bbd292c..1d0756d6 100644
--- a/modules/azure/keyvault.go
+++ b/modules/azure/keyvault.go
@@ -3,16 +3,21 @@ package azure
 import (
 	"context"
 	"fmt"
-	"os"
 	"testing"
 
-	kvauth "github.com/Azure/azure-sdk-for-go/services/keyvault/auth"
-	kvmng "github.com/Azure/azure-sdk-for-go/services/keyvault/mgmt/2016-10-01/keyvault"
-	"github.com/Azure/azure-sdk-for-go/services/keyvault/v7.0/keyvault"
-	"github.com/Azure/go-autorest/autorest"
+	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/keyvault/armkeyvault"
+	"github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates"
+	"github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys"
+	"github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets"
 	"github.com/stretchr/testify/require"
 )
 
+// NewAzureCredentialE creates a new Azure credential using DefaultAzureCredential.
+func NewAzureCredentialE() (*azidentity.DefaultAzureCredential, error) {
+	return azidentity.NewDefaultAzureCredential(nil)
+}
+
 // KeyVaultSecretExists indicates whether a key vault secret exists; otherwise false
 // This function would fail the test if there is an error.
 func KeyVaultSecretExists(t *testing.T, keyVaultName string, secretName string) bool {
@@ -39,24 +44,20 @@ func KeyVaultCertificateExists(t *testing.T, keyVaultName string, certificateNam
 
 // KeyVaultCertificateExistsE indicates whether a certificate exists in key vault; otherwise false.
 func KeyVaultCertificateExistsE(keyVaultName, certificateName string) (bool, error) {
-	keyVaultSuffix, err := GetKeyVaultURISuffixE()
-	if err != nil {
-		return false, err
-	}
-	client, err := GetKeyVaultClientE()
-	if err != nil {
-		return false, err
-	}
-	maxVersionsCount := int32(1)
-	versions, err := client.GetCertificateVersions(context.Background(),
-		fmt.Sprintf("https://%s.%s", keyVaultName, keyVaultSuffix),
-		certificateName,
-		&maxVersionsCount)
+	client, err := GetKeyVaultCertificatesClientE(keyVaultName)
 	if err != nil {
 		return false, err
 	}
 
-	if len(versions.Values()) > 0 {
+	pager := client.NewListCertificatePropertiesVersionsPager(certificateName, nil)
+	if pager.More() {
+		_, err := pager.NextPage(context.Background())
+		if err != nil {
+			if ResourceNotFoundErrorExists(err) {
+				return false, nil
+			}
+			return false, err
+		}
 		return true, nil
 	}
 	return false, nil
@@ -64,24 +65,20 @@ func KeyVaultCertificateExistsE(keyVaultName, certificateName string) (bool, err
 
 // KeyVaultKeyExistsE indicates whether a key exists in the key vault; otherwise false.
 func KeyVaultKeyExistsE(keyVaultName, keyName string) (bool, error) {
-	keyVaultSuffix, err := GetKeyVaultURISuffixE()
-	if err != nil {
-		return false, err
-	}
-	client, err := GetKeyVaultClientE()
-	if err != nil {
-		return false, err
-	}
-	maxVersionsCount := int32(1)
-	versions, err := client.GetKeyVersions(context.Background(),
-		fmt.Sprintf("https://%s.%s", keyVaultName, keyVaultSuffix),
-		keyName,
-		&maxVersionsCount)
+	client, err := GetKeyVaultKeysClientE(keyVaultName)
 	if err != nil {
 		return false, err
 	}
 
-	if len(versions.Values()) > 0 {
+	pager := client.NewListKeyPropertiesVersionsPager(keyName, nil)
+	if pager.More() {
+		_, err := pager.NextPage(context.Background())
+		if err != nil {
+			if ResourceNotFoundErrorExists(err) {
+				return false, nil
+			}
+			return false, err
+		}
 		return true, nil
 	}
 	return false, nil
@@ -89,63 +86,76 @@ func KeyVaultKeyExistsE(keyVaultName, keyName string) (bool, error) {
 
 // KeyVaultSecretExistsE indicates whether a secret exists in the key vault; otherwise false.
 func KeyVaultSecretExistsE(keyVaultName, secretName string) (bool, error) {
-	client, err := GetKeyVaultClientE()
+	client, err := GetKeyVaultSecretsClientE(keyVaultName)
 	if err != nil {
 		return false, err
 	}
+
+	pager := client.NewListSecretPropertiesVersionsPager(secretName, nil)
+	if pager.More() {
+		_, err := pager.NextPage(context.Background())
+		if err != nil {
+			if ResourceNotFoundErrorExists(err) {
+				return false, nil
+			}
+			return false, err
+		}
+		return true, nil
+	}
+	return false, nil
+}
+
+// GetKeyVaultSecretsClientE creates a KeyVault secrets client.
+func GetKeyVaultSecretsClientE(keyVaultName string) (*azsecrets.Client, error) {
 	keyVaultSuffix, err := GetKeyVaultURISuffixE()
 	if err != nil {
-		return false, err
+		return nil, err
+	}
+	vaultURL := fmt.Sprintf("https://%s.%s", keyVaultName, keyVaultSuffix)
+
+	cred, err := NewAzureCredentialE()
+	if err != nil {
+		return nil, err
 	}
-	maxVersionsCount := int32(1)
-	versions, err := client.GetSecretVersions(context.Background(),
-		fmt.Sprintf("https://%s.%s", keyVaultName, keyVaultSuffix),
-		secretName,
-		&maxVersionsCount)
+
+	return azsecrets.NewClient(vaultURL, cred, nil)
+}
+
+// GetKeyVaultKeysClientE creates a KeyVault keys client.
+func GetKeyVaultKeysClientE(keyVaultName string) (*azkeys.Client, error) {
+	keyVaultSuffix, err := GetKeyVaultURISuffixE()
 	if err != nil {
-		return false, err
+		return nil, err
 	}
+	vaultURL := fmt.Sprintf("https://%s.%s", keyVaultName, keyVaultSuffix)
 
-	if len(versions.Values()) > 0 {
-		return true, nil
+	cred, err := NewAzureCredentialE()
+	if err != nil {
+		return nil, err
 	}
-	return false, nil
+
+	return azkeys.NewClient(vaultURL, cred, nil)
 }
 
-// GetKeyVaultClientE creates a KeyVault client.
-func GetKeyVaultClientE() (*keyvault.BaseClient, error) {
-	kvClient := keyvault.New()
-	authorizer, err := NewKeyVaultAuthorizerE()
+// GetKeyVaultCertificatesClientE creates a KeyVault certificates client.
+func GetKeyVaultCertificatesClientE(keyVaultName string) (*azcertificates.Client, error) {
+	keyVaultSuffix, err := GetKeyVaultURISuffixE()
 	if err != nil {
 		return nil, err
 	}
-	kvClient.Authorizer = *authorizer
-	return &kvClient, nil
-}
+	vaultURL := fmt.Sprintf("https://%s.%s", keyVaultName, keyVaultSuffix)
 
-// NewKeyVaultAuthorizerE will return dataplane Authorizer for KeyVault.
-func NewKeyVaultAuthorizerE() (*autorest.Authorizer, error) {
-	// Carry out env var lookups
-	_, clientIDExists := os.LookupEnv(AuthFromEnvClient)
-	_, tenantIDExists := os.LookupEnv(AuthFromEnvTenant)
-	_, fileAuthSet := os.LookupEnv(AuthFromFile)
-
-	// Execute logic to return an authorizer from the correct method
-	if clientIDExists && tenantIDExists {
-		authorizer, err := kvauth.NewAuthorizerFromEnvironment()
-		return &authorizer, err
-	} else if fileAuthSet {
-		authorizer, err := kvauth.NewAuthorizerFromFile()
-		return &authorizer, err
-	} else {
-		authorizer, err := kvauth.NewAuthorizerFromCLI()
-		return &authorizer, err
+	cred, err := NewAzureCredentialE()
+	if err != nil {
+		return nil, err
 	}
+
+	return azcertificates.NewClient(vaultURL, cred, nil)
 }
 
 // GetKeyVault is a helper function that gets the keyvault management object.
 // This function would fail the test if there is an error.
-func GetKeyVault(t *testing.T, resGroupName string, keyVaultName string, subscriptionID string) *kvmng.Vault {
+func GetKeyVault(t *testing.T, resGroupName string, keyVaultName string, subscriptionID string) *armkeyvault.Vault {
 	keyVault, err := GetKeyVaultE(t, resGroupName, keyVaultName, subscriptionID)
 	require.NoError(t, err)
 
@@ -153,39 +163,27 @@ func GetKeyVault(t *testing.T, resGroupName string, keyVaultName string, subscri
 }
 
 // GetKeyVaultE is a helper function that gets the keyvault management object.
-func GetKeyVaultE(t *testing.T, resGroupName string, keyVaultName string, subscriptionID string) (*kvmng.Vault, error) {
-	// Create akey vault management client
+func GetKeyVaultE(t *testing.T, resGroupName string, keyVaultName string, subscriptionID string) (*armkeyvault.Vault, error) {
+	// Create a key vault management client
 	vaultClient, err := GetKeyVaultManagementClientE(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	//Get the corresponding server client
-	keyVault, err := vaultClient.Get(context.Background(), resGroupName, keyVaultName)
+	// Get the corresponding vault
+	resp, err := vaultClient.Get(context.Background(), resGroupName, keyVaultName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	//Return keyvault
-	return &keyVault, nil
+	return &resp.Vault, nil
 }
 
 // GetKeyVaultManagementClientE is a helper function that will setup a key vault management client
-func GetKeyVaultManagementClientE(subscriptionID string) (*kvmng.VaultsClient, error) {
-	// Create a keyvault management client
-	vaultClient, err := CreateKeyVaultManagementClientE(subscriptionID)
+func GetKeyVaultManagementClientE(subscriptionID string) (*armkeyvault.VaultsClient, error) {
+	clientFactory, err := getArmKeyVaultClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
-	if err != nil {
-		return nil, err
-	}
-
-	// Attach authorizer to the client
-	vaultClient.Authorizer = *authorizer
-
-	return vaultClient, nil
+	return clientFactory.NewVaultsClient(), nil
 }
diff --git a/modules/azure/mysql.go b/modules/azure/mysql.go
index 5f447f44..001f1d1e 100644
--- a/modules/azure/mysql.go
+++ b/modules/azure/mysql.go
@@ -3,38 +3,23 @@ package azure
 import (
 	"context"
 
-	"github.com/Azure/azure-sdk-for-go/profiles/latest/mysql/mgmt/mysql"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/mysql/armmysql"
 	"github.com/gruntwork-io/terratest/modules/testing"
 	"github.com/stretchr/testify/require"
 )
 
 // GetMYSQLServerClientE is a helper function that will setup a mysql server client.
-// TODO: remove in next version
-func GetMYSQLServerClientE(subscriptionID string) (*mysql.ServersClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
+func GetMYSQLServerClientE(subscriptionID string) (*armmysql.ServersClient, error) {
+	clientFactory, err := getArmMySQLClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Create a mysql server client
-	mysqlClient := mysql.NewServersClient(subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
-	if err != nil {
-		return nil, err
-	}
-
-	// Attach authorizer to the client
-	mysqlClient.Authorizer = *authorizer
-
-	return &mysqlClient, nil
+	return clientFactory.NewServersClient(), nil
 }
 
 // GetMYSQLServer is a helper function that gets the server.
 // This function would fail the test if there is an error.
-func GetMYSQLServer(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) *mysql.Server {
+func GetMYSQLServer(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) *armmysql.Server {
 	mysqlServer, err := GetMYSQLServerE(t, subscriptionID, resGroupName, serverName)
 	require.NoError(t, err)
 
@@ -42,49 +27,34 @@ func GetMYSQLServer(t testing.TestingT, resGroupName string, serverName string,
 }
 
 // GetMYSQLServerE is a helper function that gets the server.
-func GetMYSQLServerE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) (*mysql.Server, error) {
-	// Create a mySQl Server client
+func GetMYSQLServerE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) (*armmysql.Server, error) {
+	// Create a MySQL Server client
 	mysqlClient, err := CreateMySQLServerClientE(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	// Get the corresponding server client
-	mysqlServer, err := mysqlClient.Get(context.Background(), resGroupName, serverName)
+	// Get the corresponding server
+	resp, err := mysqlClient.Get(context.Background(), resGroupName, serverName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	//Return server
-	return &mysqlServer, nil
+	return &resp.Server, nil
 }
 
 // GetMYSQLDBClientE is a helper function that will setup a mysql DB client.
-func GetMYSQLDBClientE(subscriptionID string) (*mysql.DatabasesClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
-	if err != nil {
-		return nil, err
-	}
-
-	// Create a mysql db client
-	mysqlDBClient := mysql.NewDatabasesClient(subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
+func GetMYSQLDBClientE(subscriptionID string) (*armmysql.DatabasesClient, error) {
+	clientFactory, err := getArmMySQLClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Attach authorizer to the client
-	mysqlDBClient.Authorizer = *authorizer
-
-	return &mysqlDBClient, nil
+	return clientFactory.NewDatabasesClient(), nil
 }
 
 // GetMYSQLDB is a helper function that gets the database.
 // This function would fail the test if there is an error.
-func GetMYSQLDB(t testing.TestingT, resGroupName string, serverName string, dbName string, subscriptionID string) *mysql.Database {
+func GetMYSQLDB(t testing.TestingT, resGroupName string, serverName string, dbName string, subscriptionID string) *armmysql.Database {
 	database, err := GetMYSQLDBE(t, subscriptionID, resGroupName, serverName, dbName)
 	require.NoError(t, err)
 
@@ -92,25 +62,24 @@ func GetMYSQLDB(t testing.TestingT, resGroupName string, serverName string, dbNa
 }
 
 // GetMYSQLDBE is a helper function that gets the database.
-func GetMYSQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string, dbName string) (*mysql.Database, error) {
-	// Create a mySQl db client
+func GetMYSQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string, dbName string) (*armmysql.Database, error) {
+	// Create a MySQL db client
 	mysqldbClient, err := GetMYSQLDBClientE(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	// Get the corresponding db client
-	mysqlDb, err := mysqldbClient.Get(context.Background(), resGroupName, serverName, dbName)
+	// Get the corresponding db
+	resp, err := mysqldbClient.Get(context.Background(), resGroupName, serverName, dbName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	//Return DB
-	return &mysqlDb, nil
+	return &resp.Database, nil
 }
 
 // ListMySQLDB is a helper function that gets all databases per server.
-func ListMySQLDB(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) []mysql.Database {
+func ListMySQLDB(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) []*armmysql.Database {
 	dblist, err := ListMySQLDBE(t, subscriptionID, resGroupName, serverName)
 	require.NoError(t, err)
 
@@ -118,19 +87,23 @@ func ListMySQLDB(t testing.TestingT, resGroupName string, serverName string, sub
 }
 
 // ListMySQLDBE is a helper function that gets all databases per server.
-func ListMySQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) ([]mysql.Database, error) {
-	// Create a mySQl db client
+func ListMySQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) ([]*armmysql.Database, error) {
+	// Create a MySQL db client
 	mysqldbClient, err := GetMYSQLDBClientE(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	// Get the corresponding db client
-	mysqlDbs, err := mysqldbClient.ListByServer(context.Background(), resGroupName, serverName)
-	if err != nil {
-		return nil, err
+	// Get the databases using pager
+	pager := mysqldbClient.NewListByServerPager(resGroupName, serverName, nil)
+	var databases []*armmysql.Database
+	for pager.More() {
+		page, err := pager.NextPage(context.Background())
+		if err != nil {
+			return nil, err
+		}
+		databases = append(databases, page.Value...)
 	}
 
-	//Return DB lists
-	return *mysqlDbs.Value, nil
+	return databases, nil
 }
diff --git a/modules/azure/postgresql.go b/modules/azure/postgresql.go
index dec69edb..a6ddbe5b 100644
--- a/modules/azure/postgresql.go
+++ b/modules/azure/postgresql.go
@@ -3,37 +3,23 @@ package azure
 import (
 	"context"
 
-	"github.com/Azure/azure-sdk-for-go/services/postgresql/mgmt/2017-12-01/postgresql"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/postgresql/armpostgresql"
 	"github.com/gruntwork-io/terratest/modules/testing"
 	"github.com/stretchr/testify/require"
 )
 
 // GetPostgreSQLServerClientE is a helper function that will setup a postgresql server client.
-func GetPostgreSQLServerClientE(subscriptionID string) (*postgresql.ServersClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
+func GetPostgreSQLServerClientE(subscriptionID string) (*armpostgresql.ServersClient, error) {
+	clientFactory, err := getArmPostgreSQLClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Create a postgresql server client
-	postgresqlClient := postgresql.NewServersClient(subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
-	if err != nil {
-		return nil, err
-	}
-
-	// Attach authorizer to the client
-	postgresqlClient.Authorizer = *authorizer
-
-	return &postgresqlClient, nil
+	return clientFactory.NewServersClient(), nil
 }
 
 // GetPostgreSQLServer is a helper function that gets the server.
 // This function would fail the test if there is an error.
-func GetPostgreSQLServer(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) *postgresql.Server {
+func GetPostgreSQLServer(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) *armpostgresql.Server {
 	postgresqlServer, err := GetPostgreSQLServerE(t, subscriptionID, resGroupName, serverName)
 	require.NoError(t, err)
 
@@ -41,49 +27,34 @@ func GetPostgreSQLServer(t testing.TestingT, resGroupName string, serverName str
 }
 
 // GetPostgreSQLServerE is a helper function that gets the server.
-func GetPostgreSQLServerE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) (*postgresql.Server, error) {
+func GetPostgreSQLServerE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) (*armpostgresql.Server, error) {
 	// Create a postgresql Server client
 	postgresqlClient, err := GetPostgreSQLServerClientE(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	// Get the corresponding server client
-	postgresqlServer, err := postgresqlClient.Get(context.Background(), resGroupName, serverName)
+	// Get the corresponding server
+	resp, err := postgresqlClient.Get(context.Background(), resGroupName, serverName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	//Return server
-	return &postgresqlServer, nil
+	return &resp.Server, nil
 }
 
 // GetPostgreSQLDBClientE is a helper function that will setup a postgresql DB client.
-func GetPostgreSQLDBClientE(subscriptionID string) (*postgresql.DatabasesClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
+func GetPostgreSQLDBClientE(subscriptionID string) (*armpostgresql.DatabasesClient, error) {
+	clientFactory, err := getArmPostgreSQLClientFactory(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
-
-	// Create a postgresql db client
-	postgresqlDBClient := postgresql.NewDatabasesClient(subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
-	if err != nil {
-		return nil, err
-	}
-
-	// Attach authorizer to the client
-	postgresqlDBClient.Authorizer = *authorizer
-
-	return &postgresqlDBClient, nil
+	return clientFactory.NewDatabasesClient(), nil
 }
 
 // GetPostgreSQLDB is a helper function that gets the database.
 // This function would fail the test if there is an error.
-func GetPostgreSQLDB(t testing.TestingT, resGroupName string, serverName string, dbName string, subscriptionID string) *postgresql.Database {
+func GetPostgreSQLDB(t testing.TestingT, resGroupName string, serverName string, dbName string, subscriptionID string) *armpostgresql.Database {
 	database, err := GetPostgreSQLDBE(t, subscriptionID, resGroupName, serverName, dbName)
 	require.NoError(t, err)
 
@@ -91,25 +62,24 @@ func GetPostgreSQLDB(t testing.TestingT, resGroupName string, serverName string,
 }
 
 // GetPostgreSQLDBE is a helper function that gets the database.
-func GetPostgreSQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string, dbName string) (*postgresql.Database, error) {
+func GetPostgreSQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string, dbName string) (*armpostgresql.Database, error) {
 	// Create a postgresql db client
 	postgresqldbClient, err := GetPostgreSQLDBClientE(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	// Get the corresponding db client
-	postgresqlDb, err := postgresqldbClient.Get(context.Background(), resGroupName, serverName, dbName)
+	// Get the corresponding db
+	resp, err := postgresqldbClient.Get(context.Background(), resGroupName, serverName, dbName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	//Return DB
-	return &postgresqlDb, nil
+	return &resp.Database, nil
 }
 
 // ListPostgreSQLDB is a helper function that gets all databases per server.
-func ListPostgreSQLDB(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) []postgresql.Database {
+func ListPostgreSQLDB(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) []*armpostgresql.Database {
 	dblist, err := ListPostgreSQLDBE(t, subscriptionID, resGroupName, serverName)
 	require.NoError(t, err)
 
@@ -117,19 +87,23 @@ func ListPostgreSQLDB(t testing.TestingT, subscriptionID string, resGroupName st
 }
 
 // ListPostgreSQLDBE is a helper function that gets all databases per server.
-func ListPostgreSQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) ([]postgresql.Database, error) {
+func ListPostgreSQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) ([]*armpostgresql.Database, error) {
 	// Create a postgresql db client
 	postgresqldbClient, err := GetPostgreSQLDBClientE(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	// Get the corresponding db client
-	postgresqlDbs, err := postgresqldbClient.ListByServer(context.Background(), resGroupName, serverName)
-	if err != nil {
-		return nil, err
+	// Get the databases using pager
+	pager := postgresqldbClient.NewListByServerPager(resGroupName, serverName, nil)
+	var databases []*armpostgresql.Database
+	for pager.More() {
+		page, err := pager.NextPage(context.Background())
+		if err != nil {
+			return nil, err
+		}
+		databases = append(databases, page.Value...)
 	}
 
-	//Return DB lists
-	return *postgresqlDbs.Value, nil
+	return databases, nil
 }
diff --git a/modules/azure/sql.go b/modules/azure/sql.go
index 771c1080..c49582be 100644
--- a/modules/azure/sql.go
+++ b/modules/azure/sql.go
@@ -3,38 +3,19 @@ package azure
 import (
 	"context"
 
-	"github.com/Azure/azure-sdk-for-go/profiles/preview/sql/mgmt/sql"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/sql/armsql"
 	"github.com/gruntwork-io/terratest/modules/testing"
 	"github.com/stretchr/testify/require"
 )
 
 // GetSQLServerClient is a helper function that will setup a sql server client
-// TODO: remove in next version
-func GetSQLServerClient(subscriptionID string) (*sql.ServersClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
-	if err != nil {
-		return nil, err
-	}
-
-	// Create a sql server client
-	sqlClient := sql.NewServersClient(subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
-	if err != nil {
-		return nil, err
-	}
-
-	// Attach authorizer to the client
-	sqlClient.Authorizer = *authorizer
-
-	return &sqlClient, nil
+func GetSQLServerClient(subscriptionID string) (*armsql.ServersClient, error) {
+	return CreateSQLServerClient(subscriptionID)
 }
 
 // GetSQLServer is a helper function that gets the sql server object.
 // This function would fail the test if there is an error.
-func GetSQLServer(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) *sql.Server {
+func GetSQLServer(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) *armsql.Server {
 	sqlServer, err := GetSQLServerE(t, subscriptionID, resGroupName, serverName)
 	require.NoError(t, err)
 
@@ -42,49 +23,29 @@ func GetSQLServer(t testing.TestingT, resGroupName string, serverName string, su
 }
 
 // GetSQLServerE is a helper function that gets the sql server object.
-func GetSQLServerE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) (*sql.Server, error) {
-	// Create a SQl Server client
+func GetSQLServerE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) (*armsql.Server, error) {
+	// Create a SQL Server client
 	sqlClient, err := CreateSQLServerClient(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	//Get the corresponding server client
-	sqlServer, err := sqlClient.Get(context.Background(), resGroupName, serverName)
+	// Get the corresponding server
+	resp, err := sqlClient.Get(context.Background(), resGroupName, serverName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	//Return sql server
-	return &sqlServer, nil
+	return &resp.Server, nil
 }
 
-// GetDatabaseClient  is a helper function that will setup a sql DB client
-// TODO: remove in next version
-func GetDatabaseClient(subscriptionID string) (*sql.DatabasesClient, error) {
-	// Validate Azure subscription ID
-	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
-	if err != nil {
-		return nil, err
-	}
-
-	// Create a sql DB client
-	sqlDBClient := sql.NewDatabasesClient(subscriptionID)
-
-	// Create an authorizer
-	authorizer, err := NewAuthorizer()
-	if err != nil {
-		return nil, err
-	}
-
-	// Attach authorizer to the client
-	sqlDBClient.Authorizer = *authorizer
-
-	return &sqlDBClient, nil
+// GetDatabaseClient is a helper function that will setup a sql DB client
+func GetDatabaseClient(subscriptionID string) (*armsql.DatabasesClient, error) {
+	return CreateDatabaseClient(subscriptionID)
 }
 
 // ListSQLServerDatabases is a helper function that gets a list of databases on a sql server
-func ListSQLServerDatabases(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) *[]sql.Database {
+func ListSQLServerDatabases(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) []*armsql.Database {
 	dbList, err := ListSQLServerDatabasesE(t, resGroupName, serverName, subscriptionID)
 	require.NoError(t, err)
 
@@ -92,26 +53,30 @@ func ListSQLServerDatabases(t testing.TestingT, resGroupName string, serverName
 }
 
 // ListSQLServerDatabasesE is a helper function that gets a list of databases on a sql server
-func ListSQLServerDatabasesE(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) (*[]sql.Database, error) {
-	// Create a SQl db client
+func ListSQLServerDatabasesE(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) ([]*armsql.Database, error) {
+	// Create a SQL db client
 	sqlClient, err := CreateDatabaseClient(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	//Get the corresponding DB client
-	sqlDbs, err := sqlClient.ListByServer(context.Background(), resGroupName, serverName, "", "")
-	if err != nil {
-		return nil, err
+	// Get the databases using pager
+	pager := sqlClient.NewListByServerPager(resGroupName, serverName, nil)
+	var databases []*armsql.Database
+	for pager.More() {
+		page, err := pager.NextPage(context.Background())
+		if err != nil {
+			return nil, err
+		}
+		databases = append(databases, page.Value...)
 	}
 
-	// Return DB ID
-	return sqlDbs.Value, nil
+	return databases, nil
 }
 
 // GetSQLDatabase is a helper function that gets the sql db.
 // This function would fail the test if there is an error.
-func GetSQLDatabase(t testing.TestingT, resGroupName string, serverName string, dbName string, subscriptionID string) *sql.Database {
+func GetSQLDatabase(t testing.TestingT, resGroupName string, serverName string, dbName string, subscriptionID string) *armsql.Database {
 	database, err := GetSQLDatabaseE(t, subscriptionID, resGroupName, serverName, dbName)
 	require.NoError(t, err)
 
@@ -119,19 +84,18 @@ func GetSQLDatabase(t testing.TestingT, resGroupName string, serverName string,
 }
 
 // GetSQLDatabaseE is a helper function that gets the sql db.
-func GetSQLDatabaseE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string, dbName string) (*sql.Database, error) {
-	// Create a SQl db client
+func GetSQLDatabaseE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string, dbName string) (*armsql.Database, error) {
+	// Create a SQL db client
 	sqlClient, err := CreateDatabaseClient(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	//Get the corresponding DB client
-	sqlDb, err := sqlClient.Get(context.Background(), resGroupName, serverName, dbName, "")
+	// Get the corresponding DB
+	resp, err := sqlClient.Get(context.Background(), resGroupName, serverName, dbName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	// Return DB
-	return &sqlDb, nil
+	return &resp.Database, nil
 }
diff --git a/modules/azure/sql_managedinstance.go b/modules/azure/sql_managedinstance.go
index 43ea0f9f..9cfb7cf9 100644
--- a/modules/azure/sql_managedinstance.go
+++ b/modules/azure/sql_managedinstance.go
@@ -3,7 +3,7 @@ package azure
 import (
 	"context"
 
-	"github.com/Azure/azure-sdk-for-go/services/preview/sql/mgmt/v3.0/sql"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/sql/armsql"
 	"github.com/gruntwork-io/terratest/modules/testing"
 	"github.com/stretchr/testify/require"
 )
@@ -28,56 +28,54 @@ func SQLManagedInstanceExistsE(managedInstanceName string, resourceGroupName str
 	return true, nil
 }
 
-// GetManagedInstance is a helper function that gets the sql server object.
+// GetManagedInstance is a helper function that gets the sql managed instance object.
 // This function would fail the test if there is an error.
-func GetManagedInstance(t testing.TestingT, resGroupName string, managedInstanceName string, subscriptionID string) *sql.ManagedInstance {
+func GetManagedInstance(t testing.TestingT, resGroupName string, managedInstanceName string, subscriptionID string) *armsql.ManagedInstance {
 	managedInstance, err := GetManagedInstanceE(subscriptionID, resGroupName, managedInstanceName)
 	require.NoError(t, err)
 
 	return managedInstance
 }
 
-// GetManagedInstanceDatabase is a helper function that gets the sql server object.
+// GetManagedInstanceDatabase is a helper function that gets the sql managed database object.
 // This function would fail the test if there is an error.
-func GetManagedInstanceDatabase(t testing.TestingT, resGroupName string, managedInstanceName string, databaseName string, subscriptionID string) *sql.ManagedDatabase {
+func GetManagedInstanceDatabase(t testing.TestingT, resGroupName string, managedInstanceName string, databaseName string, subscriptionID string) *armsql.ManagedDatabase {
 	managedDatabase, err := GetManagedInstanceDatabaseE(t, subscriptionID, resGroupName, managedInstanceName, databaseName)
 	require.NoError(t, err)
 
 	return managedDatabase
 }
 
-// GetManagedInstanceE is a helper function that gets the sql server object.
-func GetManagedInstanceE(subscriptionID string, resGroupName string, managedInstanceName string) (*sql.ManagedInstance, error) {
-	// Create a SQl Server client
+// GetManagedInstanceE is a helper function that gets the sql managed instance object.
+func GetManagedInstanceE(subscriptionID string, resGroupName string, managedInstanceName string) (*armsql.ManagedInstance, error) {
+	// Create a SQL Managed Instance client
 	sqlmiClient, err := CreateSQLMangedInstanceClient(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	//Get the corresponding server client
-	sqlmi, err := sqlmiClient.Get(context.Background(), resGroupName, managedInstanceName)
+	// Get the corresponding managed instance
+	resp, err := sqlmiClient.Get(context.Background(), resGroupName, managedInstanceName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	//Return sql mi
-	return &sqlmi, nil
+	return &resp.ManagedInstance, nil
 }
 
-// GetManagedInstanceDatabaseE is a helper function that gets the sql server object.
-func GetManagedInstanceDatabaseE(t testing.TestingT, subscriptionID string, resGroupName string, managedInstanceName string, databaseName string) (*sql.ManagedDatabase, error) {
-	// Create a SQlMI db client
+// GetManagedInstanceDatabaseE is a helper function that gets the sql managed database object.
+func GetManagedInstanceDatabaseE(t testing.TestingT, subscriptionID string, resGroupName string, managedInstanceName string, databaseName string) (*armsql.ManagedDatabase, error) {
+	// Create a SQL MI db client
 	sqlmiDbClient, err := CreateSQLMangedDatabasesClient(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	//Get the corresponding  client
-	sqlmidb, err := sqlmiDbClient.Get(context.Background(), resGroupName, managedInstanceName, databaseName)
+	// Get the corresponding database
+	resp, err := sqlmiDbClient.Get(context.Background(), resGroupName, managedInstanceName, databaseName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	//Return sql mi db
-	return &sqlmidb, nil
+	return &resp.ManagedDatabase, nil
 }
diff --git a/modules/azure/synapse.go b/modules/azure/synapse.go
index 079c1cec..8f87e02c 100644
--- a/modules/azure/synapse.go
+++ b/modules/azure/synapse.go
@@ -3,23 +3,23 @@ package azure
 import (
 	"context"
 
-	"github.com/Azure/azure-sdk-for-go/services/synapse/mgmt/2020-12-01/synapse"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/synapse/armsynapse"
 	"github.com/gruntwork-io/terratest/modules/testing"
 	"github.com/stretchr/testify/require"
 )
 
 // GetSynapseWorkspace is a helper function that gets the synapse workspace.
 // This function would fail the test if there is an error.
-func GetSynapseWorkspace(t testing.TestingT, resGroupName string, workspaceName string, subscriptionID string) *synapse.Workspace {
+func GetSynapseWorkspace(t testing.TestingT, resGroupName string, workspaceName string, subscriptionID string) *armsynapse.Workspace {
 	Workspace, err := GetSynapseWorkspaceE(t, subscriptionID, resGroupName, workspaceName)
 	require.NoError(t, err)
 
 	return Workspace
 }
 
-// GetSynapseSqlPool is a helper function that gets the synapse workspace.
+// GetSynapseSqlPool is a helper function that gets the synapse sql pool.
 // This function would fail the test if there is an error.
-func GetSynapseSqlPool(t testing.TestingT, resGroupName string, workspaceName string, sqlPoolName string, subscriptionID string) *synapse.SQLPool {
+func GetSynapseSqlPool(t testing.TestingT, resGroupName string, workspaceName string, sqlPoolName string, subscriptionID string) *armsynapse.SQLPool {
 	SQLPool, err := GetSynapseSqlPoolE(t, subscriptionID, resGroupName, workspaceName, sqlPoolName)
 	require.NoError(t, err)
 
@@ -27,7 +27,7 @@ func GetSynapseSqlPool(t testing.TestingT, resGroupName string, workspaceName st
 }
 
 // GetSynapseWorkspaceE is a helper function that gets the workspace.
-func GetSynapseWorkspaceE(t testing.TestingT, subscriptionID string, resGroupName string, workspaceName string) (*synapse.Workspace, error) {
+func GetSynapseWorkspaceE(t testing.TestingT, subscriptionID string, resGroupName string, workspaceName string) (*armsynapse.Workspace, error) {
 	// Create a synapse client
 	synapseClient, err := CreateSynapseWorkspaceClientE(subscriptionID)
 	if err != nil {
@@ -35,29 +35,27 @@ func GetSynapseWorkspaceE(t testing.TestingT, subscriptionID string, resGroupNam
 	}
 
 	// Get the corresponding synapse workspace
-	synapseWorkspace, err := synapseClient.Get(context.Background(), resGroupName, workspaceName)
+	resp, err := synapseClient.Get(context.Background(), resGroupName, workspaceName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	//Return synapse workspace
-	return &synapseWorkspace, nil
+	return &resp.Workspace, nil
 }
 
 // GetSynapseSqlPoolE is a helper function that gets the synapse sql pool.
-func GetSynapseSqlPoolE(t testing.TestingT, subscriptionID string, resGroupName string, workspaceName string, sqlPoolName string) (*synapse.SQLPool, error) {
-	// Create a synapse client
+func GetSynapseSqlPoolE(t testing.TestingT, subscriptionID string, resGroupName string, workspaceName string, sqlPoolName string) (*armsynapse.SQLPool, error) {
+	// Create a synapse sql pool client
 	synapseSqlPoolClient, err := CreateSynapseSqlPoolClientE(subscriptionID)
 	if err != nil {
 		return nil, err
 	}
 
-	// Get the corresponding synapse workspace
-	synapseSqlPool, err := synapseSqlPoolClient.Get(context.Background(), resGroupName, workspaceName, sqlPoolName)
+	// Get the corresponding synapse sql pool
+	resp, err := synapseSqlPoolClient.Get(context.Background(), resGroupName, workspaceName, sqlPoolName, nil)
 	if err != nil {
 		return nil, err
 	}
 
-	//Return synapse workspace
-	return &synapseSqlPool, nil
+	return &resp.SQLPool, nil
 }



Test patch:
diff --git a/test/azure/terraform_azure_datafactory_example_test.go b/test/azure/terraform_azure_datafactory_example_test.go
index 86e392c8..eb9d75fc 100644
--- a/test/azure/terraform_azure_datafactory_example_test.go
+++ b/test/azure/terraform_azure_datafactory_example_test.go
@@ -47,6 +47,6 @@ func TestTerraformAzureDataFactoryExample(t *testing.T) {
 	//Get data factory details and assert them against the terraform output
 	actualDataFactory := azure.GetDataFactory(t, expectedResourceGroupName, expectedDataFactoryName, "")
 	assert.Equal(t, expectedDataFactoryName, *actualDataFactory.Name)
-	assert.Equal(t, expectedDataFactoryProvisioningState, *actualDataFactory.FactoryProperties.ProvisioningState)
+	assert.Equal(t, expectedDataFactoryProvisioningState, *actualDataFactory.Properties.ProvisioningState)
 
 }
diff --git a/test/azure/terraform_azure_mysqldb_example_test.go b/test/azure/terraform_azure_mysqldb_example_test.go
index 96fce2b2..0b8f5109 100644
--- a/test/azure/terraform_azure_mysqldb_example_test.go
+++ b/test/azure/terraform_azure_mysqldb_example_test.go
@@ -11,7 +11,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/Azure/azure-sdk-for-go/profiles/latest/mysql/mgmt/mysql"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/mysql/armmysql"
 	"github.com/gruntwork-io/terratest/modules/azure"
 	"github.com/gruntwork-io/terratest/modules/random"
 	"github.com/gruntwork-io/terratest/modules/terraform"
@@ -54,14 +54,14 @@ func TestTerraformAzureMySQLDBExample(t *testing.T) {
 	// website::tag::4:: Get mySQL server details and assert them against the terraform output
 	actualMYSQLServer := azure.GetMYSQLServer(t, expectedResourceGroupName, expectedMYSQLServerName, "")
 
-	assert.Equal(t, expectedServerSkuName, *actualMYSQLServer.Sku.Name)
-	assert.Equal(t, expectedServerStoragemMb, fmt.Sprint(*actualMYSQLServer.ServerProperties.StorageProfile.StorageMB))
+	assert.Equal(t, expectedServerSkuName, *actualMYSQLServer.SKU.Name)
+	assert.Equal(t, expectedServerStoragemMb, fmt.Sprint(*actualMYSQLServer.Properties.StorageProfile.StorageMB))
 
-	assert.Equal(t, mysql.ServerStateReady, actualMYSQLServer.ServerProperties.UserVisibleState)
+	assert.Equal(t, armmysql.ServerStateReady, *actualMYSQLServer.Properties.UserVisibleState)
 
 	// website::tag::5:: Get  mySQL server DB details and assert them against the terraform output
 	actualDatabase := azure.GetMYSQLDB(t, expectedResourceGroupName, expectedMYSQLServerName, expectedMYSQLDBName, "")
 
-	assert.Equal(t, expectedDatabaseCharSet, *actualDatabase.DatabaseProperties.Charset)
-	assert.Equal(t, expectedDatabaseCollation, *actualDatabase.DatabaseProperties.Collation)
+	assert.Equal(t, expectedDatabaseCharSet, *actualDatabase.Properties.Charset)
+	assert.Equal(t, expectedDatabaseCollation, *actualDatabase.Properties.Collation)
 }
diff --git a/test/azure/terraform_azure_sqldb_example_test.go b/test/azure/terraform_azure_sqldb_example_test.go
index dff89713..bb153e8d 100644
--- a/test/azure/terraform_azure_sqldb_example_test.go
+++ b/test/azure/terraform_azure_sqldb_example_test.go
@@ -10,7 +10,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/Azure/azure-sdk-for-go/services/sql/mgmt/2014-04-01/sql"
+	"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/sql/armsql"
 	"github.com/gruntwork-io/terratest/modules/azure"
 	"github.com/gruntwork-io/terratest/modules/random"
 	"github.com/gruntwork-io/terratest/modules/terraform"
@@ -52,12 +52,12 @@ func TestTerraformAzureSQLDBExample(t *testing.T) {
 	actualSQLServer := azure.GetSQLServer(t, expectedResourceGroupName, expectedSQLServerName, "")
 
 	assert.Equal(t, expectedSQLServerID, *actualSQLServer.ID)
-	assert.Equal(t, expectedSQLServerFullDomainName, *actualSQLServer.FullyQualifiedDomainName)
-	assert.Equal(t, sql.ServerStateReady, actualSQLServer.State)
+	assert.Equal(t, expectedSQLServerFullDomainName, *actualSQLServer.Properties.FullyQualifiedDomainName)
+	assert.Equal(t, armsql.ServerStateReady, *actualSQLServer.Properties.State)
 
 	// website::tag::5:: Get the SQL server DB details and assert them against the terraform output
 	actualSQLDatabase := azure.GetSQLDatabase(t, expectedResourceGroupName, expectedSQLServerName, expectedSQLDBName, "")
 
 	assert.Equal(t, expectedSQLDBID, *actualSQLDatabase.ID)
-	assert.Equal(t, expectedSQLDBStatus, *actualSQLDatabase.Status)
+	assert.Equal(t, expectedSQLDBStatus, string(*actualSQLDatabase.Properties.Status))
 }