diff --git a/conf/type/__group/explorer/gshadow b/conf/type/__group/explorer/gshadow
index e3c2dd6c..5ab4ed80 100755
--- a/conf/type/__group/explorer/gshadow
+++ b/conf/type/__group/explorer/gshadow
@@ -23,6 +23,12 @@
 
 name=$__object_id
 os_version="$($__explorer/os_version)"
+os="$($__explorer/os)"
+
+if [ "$os" = "freebsd" ]; then
+   echo "FreeBSD does not have getent gshadow"
+   exit 0
+fi
 
 case "$os_version" in
    "Red Hat Enterprise Linux Server release "[45]*|"CentOS release "[45]*)
diff --git a/conf/type/__group/gencode-remote b/conf/type/__group/gencode-remote
index 2b4774ab..bb6797c2 100755
--- a/conf/type/__group/gencode-remote
+++ b/conf/type/__group/gencode-remote
@@ -24,6 +24,7 @@
 
 name="$__object_id"
 os_version="$(cat "$__global/explorer/os_version")"
+os="$(cat "$__global/explorer/os")"
 
 cd "$__object/parameter"
 if grep -q "^${name}:" "$__object/explorer/group"; then
@@ -35,7 +36,10 @@ if grep -q "^${name}:" "$__object/explorer/group"; then
 
       case "$property" in
          password)
-            current_value="$(awk -F: '{ print $2 }' < "$__object/explorer/gshadow")"
+            if [ "$os" = "freebsd" ]; then
+               echo "group/$name: FreeBSD doesn't support password modification" >&2
+               exit 1
+            fi
             case "$os_version" in
                "Red Hat Enterprise Linux Server release "[45]*|"CentOS release "[45]*)
                   # TODO: Use gpasswd?  Need to fix gshadow explorer first.
@@ -43,6 +47,7 @@ if grep -q "^${name}:" "$__object/explorer/group"; then
                   exit 1
                ;;
             esac
+            current_value="$(awk -F: '{ print $2 }' < "$__object/explorer/gshadow")"
          ;;
          gid)
             # set to -g to support older redhat/centos
@@ -57,15 +62,48 @@ if grep -q "^${name}:" "$__object/explorer/group"; then
    done
 
    if [ $# -gt 0 ]; then
-      echo groupmod "$@" "$name"
-   else
-      true
+      case $os in
+         freebsd)
+            echo pw group mod "$@" "$name"
+            ;;
+         *)
+            echo groupmod "$@" "$name"
+            ;;
+      esac
    fi
 else
    for property in $(ls .); do
       new_value="$(cat "$property")"
-      set -- "$@" "--$property" \"$new_value\"
+      if [ "$os" = "freebsd" ]; then
+         case $property in
+            gid)
+               proparg="-g"
+               ;;
+            password)
+               echo "group/$name: FreeBSD doesn't support password setting" >&2
+               exit 1
+               ;;
+            *)
+               # The type has been updated to support more properties than it knows how to handle for FreeBSD
+               # tell the user about this.
+               echo "Currently unknown property: $property" >&2
+               exit 1
+               ;;
+         esac
+      else
+         proparg="--$property"
+      fi
+
+      set -- "$@" "$proparg" \"$new_value\"
    done
 
-   echo groupadd "$@" "$name"
+   case $os in
+      freebsd)
+         echo pw group add "$@" "$name"
+         ;;
+      *)
+         echo groupadd "$@" "$name"
+         ;;
+   esac
 fi
+