diff --git a/functions/fw_builder.pp b/functions/fw_builder.pp
index 68f283bc1c6576f9dc68de100c7af7a72c53b6c9..81ddf574d82c42b71f9f353ba4f79b71b1e608ba 100644
--- a/functions/fw_builder.pp
+++ b/functions/fw_builder.pp
@@ -129,6 +129,16 @@ function fw_builder::fw_builder() {
     content => to_yaml({fw_ipsets => $ipsets});
   }
 
+  # emit warning if the key is deinfed and it's empty
+  #
+  ['public', 'trust'].each() |$zone| {
+    if $zone in $fw_conf and empty($fw_conf[$zone]) {
+      echo { "WARNING FW Builder zone ${zone}":
+        message => "key '${zone}' is defined but it\'s empty";
+      }
+    }
+  }
+
   # this section will setup / create all the fwb rules
   #
   ['public', 'trust'].each() |$zone| {
diff --git a/functions/fw_builder_public_ips.pp b/functions/fw_builder_public_ips.pp
index fbae5b5532a2119a1836846126eb39ba0f5f71f9..2d6004266c3c675497ff1e6c3b645acb1ef0a545 100644
--- a/functions/fw_builder_public_ips.pp
+++ b/functions/fw_builder_public_ips.pp
@@ -24,23 +24,18 @@ function fw_builder::fw_builder_public_ips(
   Optional[Array] $facts_ipsets
 ) >> Array {
 
-  if $facts_fw_conf =~ Undef or $facts_ipsets =~ Undef {
   # when puppet runs for the first time these facts are not available
+  if $facts_fw_conf =~ Undef or $facts_ipsets =~ Undef {
     $public_ipsets = []
-  } elsif $facts_fw_conf['public'] =~ String {
   # if public is empty it's seen as empty string
+  } elsif $facts_fw_conf['public'] =~ String or  $facts_fw_conf['public'] =~ Undef {
     $public_ipsets = []
   } else {
+    # if public is present and contains some value
     if 'public' in $facts_fw_conf {
-      # this check is not needed, but it will be necessary if the
-      # code of fw_builder changes and "public" can be absent
 
       $facts_fw_conf_public = $facts_fw_conf['public']
 
-      if $facts_fw_conf_public.length == 0 {
-        fail('public is declared but it is empty. Please either delete it or add proper values')
-      }
-
       # create a list of lists with all the ipsets in public
       $unflattened_public_ipsets = $facts_fw_conf_public.map |$app_key, $app_value| {
         if 'ipset' in keys($facts_fw_conf_public[$app_key]) {