Set     Requirements = Target.HasDocker
 {endsnip}
 
+{subsubsection: Set accounting group}
+Set accounting group based on username and preferred group.
+Assumes that the "groups" user map has been loaded.
+
+{snip: set_accounting_group.xfm}
+Name SetAccountingGroup
+# convert AccountingGroup into a preferred group, then map
+# the user into an Accounting group honoring their preference
+Rename  AccountingGroup PreferredGroup
+Default PreferredGroup  undefined
+EvalSet AccountingGroup mapUser("groups", Owner, PreferredGroup)
+{endsnip}
+
 {subsubsection: Simulate batlab execute nodes}
 Converts a set of STARTD ads from a single machine, into multiple startd ads, each with a different architecture and operating system.
+Invoke with
+*: DOMAIN=x.y.z set the default domain for generated machine names
+*: SharedFileSystem=true simulate a shared file system.
+
 
 {snip: to_multi_platform.xfm}
 # Transform a each STARTD ad into multiple ads, each with a differnt OS and Arch
-# invoker can change behavior of this transform by setting
-#   DOMAIN=x.y.z           # set the default domain for machine names
-#   SharedFileSystem=true  # have machines pretend to have a shared filesystem domain
-
 NAME Simulate multiple STARTD platforms
 REQUIREMENTS MyType == "Machine"