diff --git a/.editorconfig b/.editorconfig
index 6e1faa73bc99322651d37b03aabb24a693f1f0e7..c181ad31d2557e198b98026b2f7a4d8a9055ef02 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -31,9 +31,14 @@ indent_size = 4
 [Makefile]
 indent_style = tab
 
-; The JSON files contain newlines inconsistently
-[*.json]
-insert_final_newline = ignore
-
 [*.{ps1,psm1}]
 indent_size = 4
+
+# Ignore paths
+[{LICENSE,REFERENCE.md}]
+charset = unset
+end_of_line = unset
+insert_final_newline = unset
+trim_trailing_whitespace = unset
+indent_style = unset
+indent_size = unset
diff --git a/.gitignore b/.gitignore
index c817477a0aea992fe70e44977a62078cc9310079..d108e8468e273169842708a71daed76f79705ae0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,6 +19,7 @@
 /spec/fixtures/modules/*
 /tmp/
 /vendor/
+/.vendor/
 /convert_report.txt
 /update_report.txt
 .DS_Store
@@ -26,6 +27,12 @@
 .envrc
 /inventory.yaml
 /spec/fixtures/litmus_inventory.yaml
+.resource_types
+.modules
+.task_cache.json
+.plan_cache.json
+.rerun.json
+bolt-debug.log
 *~
 \#*\#
 .\#*
diff --git a/.pdkignore b/.pdkignore
index 8bbed40cca2034410bafc4820c5887a849bdf48d..eff5820cb1491ab73281a6a140118813c169f8c7 100644
--- a/.pdkignore
+++ b/.pdkignore
@@ -19,6 +19,7 @@
 /spec/fixtures/modules/*
 /tmp/
 /vendor/
+/.vendor/
 /convert_report.txt
 /update_report.txt
 .DS_Store
@@ -26,6 +27,12 @@
 .envrc
 /inventory.yaml
 /spec/fixtures/litmus_inventory.yaml
+.resource_types
+.modules
+.task_cache.json
+.plan_cache.json
+.rerun.json
+bolt-debug.log
 *~
 \#*\#
 .\#*
diff --git a/.puppet-lint.rc b/.puppet-lint.rc
index cc96ece0513d69709b87af611173e2a6e4532f62..b0d8b004861bfb1b209c556727fc2500bd2b83c1 100644
--- a/.puppet-lint.rc
+++ b/.puppet-lint.rc
@@ -1 +1,4 @@
 --relative
+--no-80chars-check
+--no-lookup_in_parameter-check
+--ignore-paths=.vendor/**/*.pp,.bundle/**/*.pp,pkg/**/*.pp,spec/**/*.pp,tests/**/*.pp,types/**/*.pp,vendor/**/*.pp
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 902e5f8b8d95d3c0c2c4db3579ce41dd628eb230..655b72c0dfe38c824d8a39414d7b1d68fd6b5e32 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -1,10 +1,9 @@
 {
   "recommendations": [
     "puppet.puppet-vscode",
-    "rebornix.Ruby",
     "ms-vscode.powershell",
     "EditorConfig.EditorConfig",
-    "glenbuktenica.unicode-substitutions"
+    "glenbuktenica.unicode-substitutions",
     "Shopify.ruby-lsp"
   ]
 }
diff --git a/Gemfile b/Gemfile
index 7a9ef2e664e8fe5846f594d2c6018c05e8e02920..dc6cbe053f8f75161f8558a5ac5dd5e91f1ca40d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -20,11 +20,14 @@ group :development do
   gem "json", '= 2.6.1',                         require: false if Gem::Requirement.create(['>= 3.1.0', '< 3.1.3']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
   gem "json", '= 2.6.3',                         require: false if Gem::Requirement.create(['>= 3.2.0', '< 4.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
   gem "racc", '~> 1.4.0',                        require: false if Gem::Requirement.create(['>= 2.7.0', '< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
-  gem "deep_merge", '~> 1.0',                    require: false
+  gem "deep_merge", '~> 1.2.2',                  require: false
   gem "voxpupuli-puppet-lint-plugins", '~> 5.0', require: false
-  gem "facterdb", '~> 1.18',                     require: false
+  gem "facterdb", '~> 2.1',                      require: false if Gem::Requirement.create(['< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
+  gem "facterdb", '~> 3.0',                      require: false if Gem::Requirement.create(['>= 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
   gem "metadata-json-lint", '~> 4.0',            require: false
-  gem "rspec-puppet-facts", '~> 3.0',            require: false
+  gem "json-schema", '< 5.1.1',                  require: false
+  gem "rspec-puppet-facts", '~> 4.0',            require: false if Gem::Requirement.create(['< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
+  gem "rspec-puppet-facts", '~> 5.0',            require: false if Gem::Requirement.create(['>= 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
   gem "dependency_checker", '~> 1.0.0',          require: false
   gem "parallel_tests", '= 3.12.1',              require: false
   gem "pry", '~> 0.10',                          require: false
@@ -37,7 +40,8 @@ group :development do
 end
 group :development, :release_prep do
   gem "puppet-strings", '~> 4.0',         require: false
-  gem "puppetlabs_spec_helper", '~> 7.0', require: false
+  gem "puppetlabs_spec_helper", '~> 8.0', require: false
+  gem "puppet-blacksmith", '~> 7.0',      require: false
 end
 group :system_tests do
   gem "puppet_litmus", '~> 1.0',   require: false, platforms: [:ruby, :x64_mingw]
diff --git a/Rakefile b/Rakefile
index 77590fe6f84e2a49cabfb16175ff7ef3706dcd74..cdbb93f2f7b6089e25120ceac46a346a63ebc5ad 100644
--- a/Rakefile
+++ b/Rakefile
@@ -7,3 +7,8 @@ require 'puppet-syntax/tasks/puppet-syntax'
 require 'puppet-strings/tasks' if Gem.loaded_specs.key? 'puppet-strings'
 
 PuppetLint.configuration.send('disable_relative')
+PuppetLint.configuration.send('disable_80chars')
+PuppetLint.configuration.send('disable_lookup_in_parameter')
+PuppetLint.configuration.fail_on_warnings = false
+PuppetLint.configuration.ignore_paths = [".vendor/**/*.pp", ".bundle/**/*.pp", "pkg/**/*.pp", "spec/**/*.pp", "tests/**/*.pp", "types/**/*.pp", "vendor/**/*.pp"]
+
diff --git a/metadata.json b/metadata.json
index fcabc242aa60eb583891460565922319bd645647..47223bc99bc24f287da6e3f003451f802e6b7dcd 100644
--- a/metadata.json
+++ b/metadata.json
@@ -61,7 +61,7 @@
       "version_requirement": ">= 6.21.0 < 8.0.0"
     }
   ],
-  "pdk-version": "3.2.0",
+  "pdk-version": "3.4.0",
   "template-url": "https://gitlab.it.liu.se/puppet-infra/pdk-templates.git#liu",
-  "template-ref": "heads/liu-0-g4d4e981"
+  "template-ref": "heads/liu-0-g967906f"
 }