diff --git a/Makefile b/Makefile
index 8e5270b67d..e74d2927b0 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 .DEFAULT_GOAL := build
-RELEASE_VERSION := $(or ${RELEASE_VERSION},"v0.13.8")
+RELEASE_VERSION := $(or ${RELEASE_VERSION},"v0.14.0")
 
 ifeq ($(CI),true)
 DOCKER_TTY_ARG=
diff --git a/docs/src/external/metalctl/docs/metalctl_completion_zsh.md b/docs/src/external/metalctl/docs/metalctl_completion_zsh.md
index a6d2247cd5..530b92259f 100644
--- a/docs/src/external/metalctl/docs/metalctl_completion_zsh.md
+++ b/docs/src/external/metalctl/docs/metalctl_completion_zsh.md
@@ -13,7 +13,7 @@ to enable it.  You can execute the following once:
 
 To load completions in your current shell session:
 
-	source <(metalctl completion zsh); compdef _metalctl metalctl
+	source <(metalctl completion zsh)
 
 To load completions for every new session, execute once:
 
diff --git a/docs/src/external/metalctl/docs/metalctl_filesystemlayout_apply.md b/docs/src/external/metalctl/docs/metalctl_filesystemlayout_apply.md
index df89290ad3..da26fc2961 100644
--- a/docs/src/external/metalctl/docs/metalctl_filesystemlayout_apply.md
+++ b/docs/src/external/metalctl/docs/metalctl_filesystemlayout_apply.md
@@ -9,17 +9,22 @@ metalctl filesystemlayout apply [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl filesystemlayout describe filesystemlayout-1 -o yaml > filesystemlayout.yaml
-                      $ vi filesystemlayout.yaml
-                      $ # either via stdin
-                      $ cat filesystemlayout.yaml | metalctl filesystemlayout apply -f -
-                      $ # or via file
-                      $ metalctl filesystemlayout apply -f filesystemlayout.yaml
-                      	
-  -h, --help          help for apply
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl filesystemlayout describe filesystemlayout-1 -o yaml > filesystemlayout.yaml
+                                $ vi filesystemlayout.yaml
+                                $ # either via stdin
+                                $ cat filesystemlayout.yaml | metalctl filesystemlayout apply -f -
+                                $ # or via file
+                                $ metalctl filesystemlayout apply -f filesystemlayout.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for apply
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_filesystemlayout_create.md b/docs/src/external/metalctl/docs/metalctl_filesystemlayout_create.md
index 8a5971fe01..bc82cb8f65 100644
--- a/docs/src/external/metalctl/docs/metalctl_filesystemlayout_create.md
+++ b/docs/src/external/metalctl/docs/metalctl_filesystemlayout_create.md
@@ -9,17 +9,22 @@ metalctl filesystemlayout create [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl filesystemlayout describe filesystemlayout-1 -o yaml > filesystemlayout.yaml
-                      $ vi filesystemlayout.yaml
-                      $ # either via stdin
-                      $ cat filesystemlayout.yaml | metalctl filesystemlayout create -f -
-                      $ # or via file
-                      $ metalctl filesystemlayout create -f filesystemlayout.yaml
-                      	
-  -h, --help          help for create
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl filesystemlayout describe filesystemlayout-1 -o yaml > filesystemlayout.yaml
+                                $ vi filesystemlayout.yaml
+                                $ # either via stdin
+                                $ cat filesystemlayout.yaml | metalctl filesystemlayout create -f -
+                                $ # or via file
+                                $ metalctl filesystemlayout create -f filesystemlayout.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for create
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_filesystemlayout_delete.md b/docs/src/external/metalctl/docs/metalctl_filesystemlayout_delete.md
index 173bbfa81e..6de8cd767a 100644
--- a/docs/src/external/metalctl/docs/metalctl_filesystemlayout_delete.md
+++ b/docs/src/external/metalctl/docs/metalctl_filesystemlayout_delete.md
@@ -9,7 +9,22 @@ metalctl filesystemlayout delete <id> [flags]
 ## Options
 
 ```
-  -h, --help   help for delete
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl filesystemlayout describe filesystemlayout-1 -o yaml > filesystemlayout.yaml
+                                $ vi filesystemlayout.yaml
+                                $ # either via stdin
+                                $ cat filesystemlayout.yaml | metalctl filesystemlayout delete <id> -f -
+                                $ # or via file
+                                $ metalctl filesystemlayout delete <id> -f filesystemlayout.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for delete
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_filesystemlayout_update.md b/docs/src/external/metalctl/docs/metalctl_filesystemlayout_update.md
index 45d33087f2..d589ff75bd 100644
--- a/docs/src/external/metalctl/docs/metalctl_filesystemlayout_update.md
+++ b/docs/src/external/metalctl/docs/metalctl_filesystemlayout_update.md
@@ -9,17 +9,22 @@ metalctl filesystemlayout update [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl filesystemlayout describe filesystemlayout-1 -o yaml > filesystemlayout.yaml
-                      $ vi filesystemlayout.yaml
-                      $ # either via stdin
-                      $ cat filesystemlayout.yaml | metalctl filesystemlayout update -f -
-                      $ # or via file
-                      $ metalctl filesystemlayout update -f filesystemlayout.yaml
-                      	
-  -h, --help          help for update
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl filesystemlayout describe filesystemlayout-1 -o yaml > filesystemlayout.yaml
+                                $ vi filesystemlayout.yaml
+                                $ # either via stdin
+                                $ cat filesystemlayout.yaml | metalctl filesystemlayout update -f -
+                                $ # or via file
+                                $ metalctl filesystemlayout update -f filesystemlayout.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for update
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_firewall_create.md b/docs/src/external/metalctl/docs/metalctl_firewall_create.md
index ff7357a3ba..c7a483a935 100644
--- a/docs/src/external/metalctl/docs/metalctl_firewall_create.md
+++ b/docs/src/external/metalctl/docs/metalctl_firewall_create.md
@@ -9,6 +9,7 @@ metalctl firewall create [flags]
 ## Options
 
 ```
+      --bulk-output               when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
   -d, --description string        Description of the firewall to create. [optional]
   -f, --file string               filename of the create or update request in yaml format, or - for stdin.
                                   
@@ -19,6 +20,8 @@ metalctl firewall create [flags]
                                   $ cat firewall.yaml | metalctl firewall create -f -
                                   $ # or via file
                                   $ metalctl firewall create -f firewall.yaml
+                                  
+                                  the file can also contain multiple documents and perform a bulk operation.
                                   	
       --filesystemlayout string   Filesystemlayout to use during machine installation. [optional]
   -h, --help                      help for create
@@ -38,10 +41,12 @@ metalctl firewall create [flags]
   -S, --partition string          partition/datacenter where the firewall is created. [required, except for reserved machines]
   -P, --project string            Project where the firewall should belong to. [required]
   -s, --size string               Size of the firewall. [required, except for reserved machines]
+      --skip-security-prompts     skips security prompt for bulk operations
   -p, --sshpublickey string       SSH public key for access via ssh and console. [optional]
                                   Can be either the public key as string, or pointing to the public key file to use e.g.: "@~/.ssh/id_rsa.pub".
                                   If ~/.ssh/[id_ed25519.pub | id_rsa.pub | id_dsa.pub] is present it will be picked as default, matching the first one in this order.
       --tags strings              tags to add to the firewall, use it like: --tags "tag1,tag2" or --tags "tag3".
+      --timestamps                when used with --file (bulk operation): prints timestamps in-between the operations
       --userdata string           cloud-init.io compatible userdata. [optional]
                                   Can be either the userdata as string, or pointing to the userdata file to use e.g.: "@/tmp/userdata.cfg".
 ```
diff --git a/docs/src/external/metalctl/docs/metalctl_image_apply.md b/docs/src/external/metalctl/docs/metalctl_image_apply.md
index 201ecf4ee4..7c43d3394b 100644
--- a/docs/src/external/metalctl/docs/metalctl_image_apply.md
+++ b/docs/src/external/metalctl/docs/metalctl_image_apply.md
@@ -9,17 +9,22 @@ metalctl image apply [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl image describe image-1 -o yaml > image.yaml
-                      $ vi image.yaml
-                      $ # either via stdin
-                      $ cat image.yaml | metalctl image apply -f -
-                      $ # or via file
-                      $ metalctl image apply -f image.yaml
-                      	
-  -h, --help          help for apply
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl image describe image-1 -o yaml > image.yaml
+                                $ vi image.yaml
+                                $ # either via stdin
+                                $ cat image.yaml | metalctl image apply -f -
+                                $ # or via file
+                                $ metalctl image apply -f image.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for apply
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_image_create.md b/docs/src/external/metalctl/docs/metalctl_image_create.md
index 8f52e2f796..afb766778c 100644
--- a/docs/src/external/metalctl/docs/metalctl_image_create.md
+++ b/docs/src/external/metalctl/docs/metalctl_image_create.md
@@ -9,22 +9,27 @@ metalctl image create [flags]
 ## Options
 
 ```
-  -d, --description string   Description of the image.
-      --features strings     features of the image, can be one of machine|firewall
-  -f, --file string          filename of the create or update request in yaml format, or - for stdin.
-                             
-                             Example:
-                             $ metalctl image describe image-1 -o yaml > image.yaml
-                             $ vi image.yaml
-                             $ # either via stdin
-                             $ cat image.yaml | metalctl image create -f -
-                             $ # or via file
-                             $ metalctl image create -f image.yaml
-                             	
-  -h, --help                 help for create
-      --id string            ID of the image.
-  -n, --name string          Name of the image.
-      --url string           url of the image.
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -d, --description string      Description of the image.
+      --features strings        features of the image, can be one of machine|firewall
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl image describe image-1 -o yaml > image.yaml
+                                $ vi image.yaml
+                                $ # either via stdin
+                                $ cat image.yaml | metalctl image create -f -
+                                $ # or via file
+                                $ metalctl image create -f image.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for create
+      --id string               ID of the image.
+  -n, --name string             Name of the image.
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
+      --url string              url of the image.
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_image_delete.md b/docs/src/external/metalctl/docs/metalctl_image_delete.md
index f051908517..bac9df5681 100644
--- a/docs/src/external/metalctl/docs/metalctl_image_delete.md
+++ b/docs/src/external/metalctl/docs/metalctl_image_delete.md
@@ -9,7 +9,22 @@ metalctl image delete <id> [flags]
 ## Options
 
 ```
-  -h, --help   help for delete
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl image describe image-1 -o yaml > image.yaml
+                                $ vi image.yaml
+                                $ # either via stdin
+                                $ cat image.yaml | metalctl image delete <id> -f -
+                                $ # or via file
+                                $ metalctl image delete <id> -f image.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for delete
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_image_update.md b/docs/src/external/metalctl/docs/metalctl_image_update.md
index f875c3efc2..19ce58a9de 100644
--- a/docs/src/external/metalctl/docs/metalctl_image_update.md
+++ b/docs/src/external/metalctl/docs/metalctl_image_update.md
@@ -9,17 +9,22 @@ metalctl image update [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl image describe image-1 -o yaml > image.yaml
-                      $ vi image.yaml
-                      $ # either via stdin
-                      $ cat image.yaml | metalctl image update -f -
-                      $ # or via file
-                      $ metalctl image update -f image.yaml
-                      	
-  -h, --help          help for update
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl image describe image-1 -o yaml > image.yaml
+                                $ vi image.yaml
+                                $ # either via stdin
+                                $ cat image.yaml | metalctl image update -f -
+                                $ # or via file
+                                $ metalctl image update -f image.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for update
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_machine_apply.md b/docs/src/external/metalctl/docs/metalctl_machine_apply.md
index aaf93cb427..f1bb263ea2 100644
--- a/docs/src/external/metalctl/docs/metalctl_machine_apply.md
+++ b/docs/src/external/metalctl/docs/metalctl_machine_apply.md
@@ -9,17 +9,22 @@ metalctl machine apply [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl machine describe machine-1 -o yaml > machine.yaml
-                      $ vi machine.yaml
-                      $ # either via stdin
-                      $ cat machine.yaml | metalctl machine apply -f -
-                      $ # or via file
-                      $ metalctl machine apply -f machine.yaml
-                      	
-  -h, --help          help for apply
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl machine describe machine-1 -o yaml > machine.yaml
+                                $ vi machine.yaml
+                                $ # either via stdin
+                                $ cat machine.yaml | metalctl machine apply -f -
+                                $ # or via file
+                                $ metalctl machine apply -f machine.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for apply
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_machine_create.md b/docs/src/external/metalctl/docs/metalctl_machine_create.md
index 69b2baf969..b48c4d55b1 100644
--- a/docs/src/external/metalctl/docs/metalctl_machine_create.md
+++ b/docs/src/external/metalctl/docs/metalctl_machine_create.md
@@ -49,6 +49,7 @@ Once created the machine installation can not be modified anymore.
 ## Options
 
 ```
+      --bulk-output               when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
   -d, --description string        Description of the machine to create. [optional]
   -f, --file string               filename of the create or update request in yaml format, or - for stdin.
                                   
@@ -59,6 +60,8 @@ Once created the machine installation can not be modified anymore.
                                   $ cat machine.yaml | metalctl machine create -f -
                                   $ # or via file
                                   $ metalctl machine create -f machine.yaml
+                                  
+                                  the file can also contain multiple documents and perform a bulk operation.
                                   	
       --filesystemlayout string   Filesystemlayout to use during machine installation. [optional]
   -h, --help                      help for create
@@ -77,10 +80,12 @@ Once created the machine installation can not be modified anymore.
   -S, --partition string          partition/datacenter where the machine is created. [required, except for reserved machines]
   -P, --project string            Project where the machine should belong to. [required]
   -s, --size string               Size of the machine. [required, except for reserved machines]
+      --skip-security-prompts     skips security prompt for bulk operations
   -p, --sshpublickey string       SSH public key for access via ssh and console. [optional]
                                   Can be either the public key as string, or pointing to the public key file to use e.g.: "@~/.ssh/id_rsa.pub".
                                   If ~/.ssh/[id_ed25519.pub | id_rsa.pub | id_dsa.pub] is present it will be picked as default, matching the first one in this order.
       --tags strings              tags to add to the machine, use it like: --tags "tag1,tag2" or --tags "tag3".
+      --timestamps                when used with --file (bulk operation): prints timestamps in-between the operations
       --userdata string           cloud-init.io compatible userdata. [optional]
                                   Can be either the userdata as string, or pointing to the userdata file to use e.g.: "@/tmp/userdata.cfg".
 ```
diff --git a/docs/src/external/metalctl/docs/metalctl_machine_delete.md b/docs/src/external/metalctl/docs/metalctl_machine_delete.md
index a2f5f6a85b..5377075e24 100644
--- a/docs/src/external/metalctl/docs/metalctl_machine_delete.md
+++ b/docs/src/external/metalctl/docs/metalctl_machine_delete.md
@@ -13,8 +13,23 @@ metalctl machine delete <id> [flags]
 ## Options
 
 ```
-  -h, --help                   help for delete
-      --remove-from-database   remove given machine from the database, is only required for maintenance reasons [optional] (admin only).
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl machine describe machine-1 -o yaml > machine.yaml
+                                $ vi machine.yaml
+                                $ # either via stdin
+                                $ cat machine.yaml | metalctl machine delete <id> -f -
+                                $ # or via file
+                                $ metalctl machine delete <id> -f machine.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for delete
+      --remove-from-database    remove given machine from the database, is only required for maintenance reasons [optional] (admin only).
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_machine_ipmi.md b/docs/src/external/metalctl/docs/metalctl_machine_ipmi.md
index 572e48699a..ec0f285f1d 100644
--- a/docs/src/external/metalctl/docs/metalctl_machine_ipmi.md
+++ b/docs/src/external/metalctl/docs/metalctl_machine_ipmi.md
@@ -36,6 +36,7 @@ metalctl machine ipmi [<machine ID>] [flags]
       --project string                        allocation project to filter [optional]
       --rack string                           rack to filter [optional]
       --size string                           size to filter [optional]
+      --sort-by strings                       sort by (comma separated) column(s), sort direction can be changed by appending :asc or :desc behind the column identifier. possible values: age|bios|bmc|event|id|liveliness|partition|project|rack|size|when
       --state string                          state to filter [optional]
       --tags strings                          tags to filter, use it like: --tags "tag1,tag2" or --tags "tag3".
 ```
diff --git a/docs/src/external/metalctl/docs/metalctl_machine_issues.md b/docs/src/external/metalctl/docs/metalctl_machine_issues.md
index 9bdfb854f5..925603bd2f 100644
--- a/docs/src/external/metalctl/docs/metalctl_machine_issues.md
+++ b/docs/src/external/metalctl/docs/metalctl_machine_issues.md
@@ -39,6 +39,7 @@ metalctl machine issues [<machine ID>] [flags]
       --rack string                           rack to filter [optional]
       --severity string                       issue severity to include [optional]
       --size string                           size to filter [optional]
+      --sort-by strings                       sort by (comma separated) column(s), sort direction can be changed by appending :asc or :desc behind the column identifier. possible values: age|bios|bmc|event|id|liveliness|partition|project|rack|size|when
       --state string                          state to filter [optional]
       --tags strings                          tags to filter, use it like: --tags "tag1,tag2" or --tags "tag3".
 ```
diff --git a/docs/src/external/metalctl/docs/metalctl_machine_update.md b/docs/src/external/metalctl/docs/metalctl_machine_update.md
index 9e031bb86c..ed2fca4031 100644
--- a/docs/src/external/metalctl/docs/metalctl_machine_update.md
+++ b/docs/src/external/metalctl/docs/metalctl_machine_update.md
@@ -9,20 +9,25 @@ metalctl machine update [flags]
 ## Options
 
 ```
-      --add-tags strings      tags to be added to the machine [optional]
-      --description string    the description of the machine [optional]
-  -f, --file string           filename of the create or update request in yaml format, or - for stdin.
-                              
-                              Example:
-                              $ metalctl machine describe machine-1 -o yaml > machine.yaml
-                              $ vi machine.yaml
-                              $ # either via stdin
-                              $ cat machine.yaml | metalctl machine update -f -
-                              $ # or via file
-                              $ metalctl machine update -f machine.yaml
-                              	
-  -h, --help                  help for update
-      --remove-tags strings   tags to be removed from the machine [optional]
+      --add-tags strings        tags to be added to the machine [optional]
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+      --description string      the description of the machine [optional]
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl machine describe machine-1 -o yaml > machine.yaml
+                                $ vi machine.yaml
+                                $ # either via stdin
+                                $ cat machine.yaml | metalctl machine update -f -
+                                $ # or via file
+                                $ metalctl machine update -f machine.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for update
+      --remove-tags strings     tags to be removed from the machine [optional]
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_network_apply.md b/docs/src/external/metalctl/docs/metalctl_network_apply.md
index ac1f82d9e9..daac16c2c8 100644
--- a/docs/src/external/metalctl/docs/metalctl_network_apply.md
+++ b/docs/src/external/metalctl/docs/metalctl_network_apply.md
@@ -9,17 +9,22 @@ metalctl network apply [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl network describe network-1 -o yaml > network.yaml
-                      $ vi network.yaml
-                      $ # either via stdin
-                      $ cat network.yaml | metalctl network apply -f -
-                      $ # or via file
-                      $ metalctl network apply -f network.yaml
-                      	
-  -h, --help          help for apply
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl network describe network-1 -o yaml > network.yaml
+                                $ vi network.yaml
+                                $ # either via stdin
+                                $ cat network.yaml | metalctl network apply -f -
+                                $ # or via file
+                                $ metalctl network apply -f network.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for apply
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_network_create.md b/docs/src/external/metalctl/docs/metalctl_network_create.md
index 7bef10dd7f..6eadea422c 100644
--- a/docs/src/external/metalctl/docs/metalctl_network_create.md
+++ b/docs/src/external/metalctl/docs/metalctl_network_create.md
@@ -9,6 +9,7 @@ metalctl network create [flags]
 ## Options
 
 ```
+      --bulk-output                    when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
   -d, --description string             description of the network to create. [optional]
       --destination-prefixes strings   destination prefixes in this network.
   -f, --file string                    filename of the create or update request in yaml format, or - for stdin.
@@ -20,6 +21,8 @@ metalctl network create [flags]
                                        $ cat network.yaml | metalctl network create -f -
                                        $ # or via file
                                        $ metalctl network create -f network.yaml
+                                       
+                                       the file can also contain multiple documents and perform a bulk operation.
                                        	
   -h, --help                           help for create
       --id string                      id of the network to create. [optional]
@@ -30,6 +33,8 @@ metalctl network create [flags]
       --prefixes strings               prefixes in this network.
       --privatesuper                   set private super flag of network, if set to true, this network is used to start machines there.
       --project string                 project of the network to create. [optional]
+      --skip-security-prompts          skips security prompt for bulk operations
+      --timestamps                     when used with --file (bulk operation): prints timestamps in-between the operations
       --underlay                       set underlay flag of network, if set to true, this is used to transport underlay network traffic
       --vrf int                        vrf of this network
       --vrfshared                      vrf shared allows multiple networks to share a vrf
diff --git a/docs/src/external/metalctl/docs/metalctl_network_delete.md b/docs/src/external/metalctl/docs/metalctl_network_delete.md
index 881c919db9..276ef1b416 100644
--- a/docs/src/external/metalctl/docs/metalctl_network_delete.md
+++ b/docs/src/external/metalctl/docs/metalctl_network_delete.md
@@ -9,7 +9,22 @@ metalctl network delete <id> [flags]
 ## Options
 
 ```
-  -h, --help   help for delete
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl network describe network-1 -o yaml > network.yaml
+                                $ vi network.yaml
+                                $ # either via stdin
+                                $ cat network.yaml | metalctl network delete <id> -f -
+                                $ # or via file
+                                $ metalctl network delete <id> -f network.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for delete
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_network_ip_apply.md b/docs/src/external/metalctl/docs/metalctl_network_ip_apply.md
index 460dca6b30..552bcb38ef 100644
--- a/docs/src/external/metalctl/docs/metalctl_network_ip_apply.md
+++ b/docs/src/external/metalctl/docs/metalctl_network_ip_apply.md
@@ -9,17 +9,22 @@ metalctl network ip apply [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl ip describe ip-1 -o yaml > ip.yaml
-                      $ vi ip.yaml
-                      $ # either via stdin
-                      $ cat ip.yaml | metalctl ip apply -f -
-                      $ # or via file
-                      $ metalctl ip apply -f ip.yaml
-                      	
-  -h, --help          help for apply
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl ip describe ip-1 -o yaml > ip.yaml
+                                $ vi ip.yaml
+                                $ # either via stdin
+                                $ cat ip.yaml | metalctl ip apply -f -
+                                $ # or via file
+                                $ metalctl ip apply -f ip.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for apply
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_network_ip_create.md b/docs/src/external/metalctl/docs/metalctl_network_ip_create.md
index 693822b29f..6a08bab5db 100644
--- a/docs/src/external/metalctl/docs/metalctl_network_ip_create.md
+++ b/docs/src/external/metalctl/docs/metalctl_network_ip_create.md
@@ -9,24 +9,29 @@ metalctl network ip create [flags]
 ## Options
 
 ```
-  -d, --description string   description of the IP to allocate. [optional]
-  -f, --file string          filename of the create or update request in yaml format, or - for stdin.
-                             
-                             Example:
-                             $ metalctl ip describe ip-1 -o yaml > ip.yaml
-                             $ vi ip.yaml
-                             $ # either via stdin
-                             $ cat ip.yaml | metalctl ip create -f -
-                             $ # or via file
-                             $ metalctl ip create -f ip.yaml
-                             	
-  -h, --help                 help for create
-      --ipaddress string     a specific ip address to allocate. [optional]
-  -n, --name string          name of the IP to allocate. [optional]
-      --network string       network from where the IP should be allocated.
-      --project string       project for which the IP should be allocated.
-      --tags strings         tags to attach to the IP.
-      --type string          type of the IP to allocate: ephemeral|static [optional] (default "ephemeral")
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -d, --description string      description of the IP to allocate. [optional]
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl ip describe ip-1 -o yaml > ip.yaml
+                                $ vi ip.yaml
+                                $ # either via stdin
+                                $ cat ip.yaml | metalctl ip create -f -
+                                $ # or via file
+                                $ metalctl ip create -f ip.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for create
+      --ipaddress string        a specific ip address to allocate. [optional]
+  -n, --name string             name of the IP to allocate. [optional]
+      --network string          network from where the IP should be allocated.
+      --project string          project for which the IP should be allocated.
+      --skip-security-prompts   skips security prompt for bulk operations
+      --tags strings            tags to attach to the IP.
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
+      --type string             type of the IP to allocate: ephemeral|static [optional] (default "ephemeral")
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_network_ip_delete.md b/docs/src/external/metalctl/docs/metalctl_network_ip_delete.md
index 950ad05037..fcf19dd007 100644
--- a/docs/src/external/metalctl/docs/metalctl_network_ip_delete.md
+++ b/docs/src/external/metalctl/docs/metalctl_network_ip_delete.md
@@ -9,7 +9,22 @@ metalctl network ip delete <id> [flags]
 ## Options
 
 ```
-  -h, --help   help for delete
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl ip describe ip-1 -o yaml > ip.yaml
+                                $ vi ip.yaml
+                                $ # either via stdin
+                                $ cat ip.yaml | metalctl ip delete <id> -f -
+                                $ # or via file
+                                $ metalctl ip delete <id> -f ip.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for delete
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_network_ip_update.md b/docs/src/external/metalctl/docs/metalctl_network_ip_update.md
index 0475d6cc90..ee0cebfb34 100644
--- a/docs/src/external/metalctl/docs/metalctl_network_ip_update.md
+++ b/docs/src/external/metalctl/docs/metalctl_network_ip_update.md
@@ -9,17 +9,22 @@ metalctl network ip update [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl ip describe ip-1 -o yaml > ip.yaml
-                      $ vi ip.yaml
-                      $ # either via stdin
-                      $ cat ip.yaml | metalctl ip update -f -
-                      $ # or via file
-                      $ metalctl ip update -f ip.yaml
-                      	
-  -h, --help          help for update
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl ip describe ip-1 -o yaml > ip.yaml
+                                $ vi ip.yaml
+                                $ # either via stdin
+                                $ cat ip.yaml | metalctl ip update -f -
+                                $ # or via file
+                                $ metalctl ip update -f ip.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for update
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_network_update.md b/docs/src/external/metalctl/docs/metalctl_network_update.md
index 40b847a3b2..da66542566 100644
--- a/docs/src/external/metalctl/docs/metalctl_network_update.md
+++ b/docs/src/external/metalctl/docs/metalctl_network_update.md
@@ -11,6 +11,7 @@ metalctl network update [flags]
 ```
       --add-destinationprefixes strings      destination prefixes to be added to the network [optional]
       --add-prefixes strings                 prefixes to be added to the network [optional]
+      --bulk-output                          when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
       --description string                   the description of the network [optional]
   -f, --file string                          filename of the create or update request in yaml format, or - for stdin.
                                              
@@ -21,6 +22,8 @@ metalctl network update [flags]
                                              $ cat network.yaml | metalctl network update -f -
                                              $ # or via file
                                              $ metalctl network update -f network.yaml
+                                             
+                                             the file can also contain multiple documents and perform a bulk operation.
                                              	
   -h, --help                                 help for update
       --labels strings                       the labels of the network, must be in the form of key=value, use it like: --labels "key1=value1,key2=value2". [optional]
@@ -28,6 +31,8 @@ metalctl network update [flags]
       --remove-destinationprefixes strings   destination prefixes to be removed from the network [optional]
       --remove-prefixes strings              prefixes to be removed from the network [optional]
       --shared                               marks a network as shared or not [optional]
+      --skip-security-prompts                skips security prompt for bulk operations
+      --timestamps                           when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_partition_apply.md b/docs/src/external/metalctl/docs/metalctl_partition_apply.md
index 8fe645e1df..313e1e0158 100644
--- a/docs/src/external/metalctl/docs/metalctl_partition_apply.md
+++ b/docs/src/external/metalctl/docs/metalctl_partition_apply.md
@@ -9,17 +9,22 @@ metalctl partition apply [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl partition describe partition-1 -o yaml > partition.yaml
-                      $ vi partition.yaml
-                      $ # either via stdin
-                      $ cat partition.yaml | metalctl partition apply -f -
-                      $ # or via file
-                      $ metalctl partition apply -f partition.yaml
-                      	
-  -h, --help          help for apply
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl partition describe partition-1 -o yaml > partition.yaml
+                                $ vi partition.yaml
+                                $ # either via stdin
+                                $ cat partition.yaml | metalctl partition apply -f -
+                                $ # or via file
+                                $ metalctl partition apply -f partition.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for apply
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_partition_create.md b/docs/src/external/metalctl/docs/metalctl_partition_create.md
index afd89f43ab..343b26b66d 100644
--- a/docs/src/external/metalctl/docs/metalctl_partition_create.md
+++ b/docs/src/external/metalctl/docs/metalctl_partition_create.md
@@ -9,24 +9,29 @@ metalctl partition create [flags]
 ## Options
 
 ```
-      --cmdline string       kernel commandline for the metal-hammer in the partition. [required]
-  -d, --description string   Description of the partition. [required]
-  -f, --file string          filename of the create or update request in yaml format, or - for stdin.
-                             
-                             Example:
-                             $ metalctl partition describe partition-1 -o yaml > partition.yaml
-                             $ vi partition.yaml
-                             $ # either via stdin
-                             $ cat partition.yaml | metalctl partition create -f -
-                             $ # or via file
-                             $ metalctl partition create -f partition.yaml
-                             	
-  -h, --help                 help for create
-      --id string            ID of the partition. [required]
-      --imageurl string      initrd for the metal-hammer in the partition. [required]
-      --kernelurl string     kernel url for the metal-hammer in the partition. [required]
-      --mgmtserver string    management server address in the partition. [required]
-  -n, --name string          Name of the partition. [optional]
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+      --cmdline string          kernel commandline for the metal-hammer in the partition. [required]
+  -d, --description string      Description of the partition. [required]
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl partition describe partition-1 -o yaml > partition.yaml
+                                $ vi partition.yaml
+                                $ # either via stdin
+                                $ cat partition.yaml | metalctl partition create -f -
+                                $ # or via file
+                                $ metalctl partition create -f partition.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for create
+      --id string               ID of the partition. [required]
+      --imageurl string         initrd for the metal-hammer in the partition. [required]
+      --kernelurl string        kernel url for the metal-hammer in the partition. [required]
+      --mgmtserver string       management server address in the partition. [required]
+  -n, --name string             Name of the partition. [optional]
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_partition_delete.md b/docs/src/external/metalctl/docs/metalctl_partition_delete.md
index 93390a3856..9331feda65 100644
--- a/docs/src/external/metalctl/docs/metalctl_partition_delete.md
+++ b/docs/src/external/metalctl/docs/metalctl_partition_delete.md
@@ -9,7 +9,22 @@ metalctl partition delete <id> [flags]
 ## Options
 
 ```
-  -h, --help   help for delete
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl partition describe partition-1 -o yaml > partition.yaml
+                                $ vi partition.yaml
+                                $ # either via stdin
+                                $ cat partition.yaml | metalctl partition delete <id> -f -
+                                $ # or via file
+                                $ metalctl partition delete <id> -f partition.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for delete
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_partition_update.md b/docs/src/external/metalctl/docs/metalctl_partition_update.md
index 0e19244d9d..c7b474b40f 100644
--- a/docs/src/external/metalctl/docs/metalctl_partition_update.md
+++ b/docs/src/external/metalctl/docs/metalctl_partition_update.md
@@ -9,17 +9,22 @@ metalctl partition update [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl partition describe partition-1 -o yaml > partition.yaml
-                      $ vi partition.yaml
-                      $ # either via stdin
-                      $ cat partition.yaml | metalctl partition update -f -
-                      $ # or via file
-                      $ metalctl partition update -f partition.yaml
-                      	
-  -h, --help          help for update
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl partition describe partition-1 -o yaml > partition.yaml
+                                $ vi partition.yaml
+                                $ # either via stdin
+                                $ cat partition.yaml | metalctl partition update -f -
+                                $ # or via file
+                                $ metalctl partition update -f partition.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for update
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_project_apply.md b/docs/src/external/metalctl/docs/metalctl_project_apply.md
index dabdb55e35..e578838198 100644
--- a/docs/src/external/metalctl/docs/metalctl_project_apply.md
+++ b/docs/src/external/metalctl/docs/metalctl_project_apply.md
@@ -9,17 +9,22 @@ metalctl project apply [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl project describe project-1 -o yaml > project.yaml
-                      $ vi project.yaml
-                      $ # either via stdin
-                      $ cat project.yaml | metalctl project apply -f -
-                      $ # or via file
-                      $ metalctl project apply -f project.yaml
-                      	
-  -h, --help          help for apply
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl project describe project-1 -o yaml > project.yaml
+                                $ vi project.yaml
+                                $ # either via stdin
+                                $ cat project.yaml | metalctl project apply -f -
+                                $ # or via file
+                                $ metalctl project apply -f project.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for apply
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_project_create.md b/docs/src/external/metalctl/docs/metalctl_project_create.md
index ebdec15373..bb212a12d5 100644
--- a/docs/src/external/metalctl/docs/metalctl_project_create.md
+++ b/docs/src/external/metalctl/docs/metalctl_project_create.md
@@ -9,25 +9,30 @@ metalctl project create [flags]
 ## Options
 
 ```
-      --annotation strings    add initial annotation, must be in the form of key=value, can be given multiple times to add multiple annotations, e.g. --annotation key=value --annotation foo=bar
-      --cluster-quota int32   cluster quota
-      --description string    description of the project.
-  -f, --file string           filename of the create or update request in yaml format, or - for stdin.
-                              
-                              Example:
-                              $ metalctl project describe project-1 -o yaml > project.yaml
-                              $ vi project.yaml
-                              $ # either via stdin
-                              $ cat project.yaml | metalctl project create -f -
-                              $ # or via file
-                              $ metalctl project create -f project.yaml
-                              	
-  -h, --help                  help for create
-      --ip-quota int32        ip quota
-      --label strings         add initial label, can be given multiple times to add multiple labels, e.g. --label=foo --label=bar
-      --machine-quota int32   machine quota
-      --name string           name of the project, max 10 characters.
-      --tenant string         create project for given tenant
+      --annotation strings      add initial annotation, must be in the form of key=value, can be given multiple times to add multiple annotations, e.g. --annotation key=value --annotation foo=bar
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+      --cluster-quota int32     cluster quota
+      --description string      description of the project.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl project describe project-1 -o yaml > project.yaml
+                                $ vi project.yaml
+                                $ # either via stdin
+                                $ cat project.yaml | metalctl project create -f -
+                                $ # or via file
+                                $ metalctl project create -f project.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for create
+      --ip-quota int32          ip quota
+      --label strings           add initial label, can be given multiple times to add multiple labels, e.g. --label=foo --label=bar
+      --machine-quota int32     machine quota
+      --name string             name of the project, max 10 characters.
+      --skip-security-prompts   skips security prompt for bulk operations
+      --tenant string           create project for given tenant
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_project_delete.md b/docs/src/external/metalctl/docs/metalctl_project_delete.md
index 5eb83e3ef9..559ce96b59 100644
--- a/docs/src/external/metalctl/docs/metalctl_project_delete.md
+++ b/docs/src/external/metalctl/docs/metalctl_project_delete.md
@@ -9,7 +9,22 @@ metalctl project delete <id> [flags]
 ## Options
 
 ```
-  -h, --help   help for delete
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl project describe project-1 -o yaml > project.yaml
+                                $ vi project.yaml
+                                $ # either via stdin
+                                $ cat project.yaml | metalctl project delete <id> -f -
+                                $ # or via file
+                                $ metalctl project delete <id> -f project.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for delete
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_project_update.md b/docs/src/external/metalctl/docs/metalctl_project_update.md
index e8eb0e1043..dc77f7b2fe 100644
--- a/docs/src/external/metalctl/docs/metalctl_project_update.md
+++ b/docs/src/external/metalctl/docs/metalctl_project_update.md
@@ -9,17 +9,22 @@ metalctl project update [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl project describe project-1 -o yaml > project.yaml
-                      $ vi project.yaml
-                      $ # either via stdin
-                      $ cat project.yaml | metalctl project update -f -
-                      $ # or via file
-                      $ metalctl project update -f project.yaml
-                      	
-  -h, --help          help for update
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl project describe project-1 -o yaml > project.yaml
+                                $ vi project.yaml
+                                $ # either via stdin
+                                $ cat project.yaml | metalctl project update -f -
+                                $ # or via file
+                                $ metalctl project update -f project.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for update
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_size_apply.md b/docs/src/external/metalctl/docs/metalctl_size_apply.md
index e7c7e52e10..fe1860ab75 100644
--- a/docs/src/external/metalctl/docs/metalctl_size_apply.md
+++ b/docs/src/external/metalctl/docs/metalctl_size_apply.md
@@ -9,17 +9,22 @@ metalctl size apply [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl size describe size-1 -o yaml > size.yaml
-                      $ vi size.yaml
-                      $ # either via stdin
-                      $ cat size.yaml | metalctl size apply -f -
-                      $ # or via file
-                      $ metalctl size apply -f size.yaml
-                      	
-  -h, --help          help for apply
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl size describe size-1 -o yaml > size.yaml
+                                $ vi size.yaml
+                                $ # either via stdin
+                                $ cat size.yaml | metalctl size apply -f -
+                                $ # or via file
+                                $ metalctl size apply -f size.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for apply
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_size_create.md b/docs/src/external/metalctl/docs/metalctl_size_create.md
index dc27f3b980..c77e5387cc 100644
--- a/docs/src/external/metalctl/docs/metalctl_size_create.md
+++ b/docs/src/external/metalctl/docs/metalctl_size_create.md
@@ -9,23 +9,28 @@ metalctl size create [flags]
 ## Options
 
 ```
-  -d, --description string   Description of the size. [required]
-  -f, --file string          filename of the create or update request in yaml format, or - for stdin.
-                             
-                             Example:
-                             $ metalctl size describe size-1 -o yaml > size.yaml
-                             $ vi size.yaml
-                             $ # either via stdin
-                             $ cat size.yaml | metalctl size create -f -
-                             $ # or via file
-                             $ metalctl size create -f size.yaml
-                             	
-  -h, --help                 help for create
-      --id string            ID of the size. [required]
-      --max int              min value of given size constraint type. [required]
-      --min int              min value of given size constraint type. [required]
-  -n, --name string          Name of the size. [optional]
-      --type string          type of constraints. [required]
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -d, --description string      Description of the size. [required]
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl size describe size-1 -o yaml > size.yaml
+                                $ vi size.yaml
+                                $ # either via stdin
+                                $ cat size.yaml | metalctl size create -f -
+                                $ # or via file
+                                $ metalctl size create -f size.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for create
+      --id string               ID of the size. [required]
+      --max int                 min value of given size constraint type. [required]
+      --min int                 min value of given size constraint type. [required]
+  -n, --name string             Name of the size. [optional]
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
+      --type string             type of constraints. [required]
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_size_delete.md b/docs/src/external/metalctl/docs/metalctl_size_delete.md
index 828ae7e6c2..caa120fe7c 100644
--- a/docs/src/external/metalctl/docs/metalctl_size_delete.md
+++ b/docs/src/external/metalctl/docs/metalctl_size_delete.md
@@ -9,7 +9,22 @@ metalctl size delete <id> [flags]
 ## Options
 
 ```
-  -h, --help   help for delete
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl size describe size-1 -o yaml > size.yaml
+                                $ vi size.yaml
+                                $ # either via stdin
+                                $ cat size.yaml | metalctl size delete <id> -f -
+                                $ # or via file
+                                $ metalctl size delete <id> -f size.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for delete
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_apply.md b/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_apply.md
index 708f8d8262..64f7eafefe 100644
--- a/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_apply.md
+++ b/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_apply.md
@@ -9,17 +9,22 @@ metalctl size imageconstraint apply [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl imageconstraint describe imageconstraint-1 -o yaml > imageconstraint.yaml
-                      $ vi imageconstraint.yaml
-                      $ # either via stdin
-                      $ cat imageconstraint.yaml | metalctl imageconstraint apply -f -
-                      $ # or via file
-                      $ metalctl imageconstraint apply -f imageconstraint.yaml
-                      	
-  -h, --help          help for apply
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl imageconstraint describe imageconstraint-1 -o yaml > imageconstraint.yaml
+                                $ vi imageconstraint.yaml
+                                $ # either via stdin
+                                $ cat imageconstraint.yaml | metalctl imageconstraint apply -f -
+                                $ # or via file
+                                $ metalctl imageconstraint apply -f imageconstraint.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for apply
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_create.md b/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_create.md
index 1e28912274..b4d728a9f6 100644
--- a/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_create.md
+++ b/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_create.md
@@ -9,17 +9,22 @@ metalctl size imageconstraint create [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl imageconstraint describe imageconstraint-1 -o yaml > imageconstraint.yaml
-                      $ vi imageconstraint.yaml
-                      $ # either via stdin
-                      $ cat imageconstraint.yaml | metalctl imageconstraint create -f -
-                      $ # or via file
-                      $ metalctl imageconstraint create -f imageconstraint.yaml
-                      	
-  -h, --help          help for create
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl imageconstraint describe imageconstraint-1 -o yaml > imageconstraint.yaml
+                                $ vi imageconstraint.yaml
+                                $ # either via stdin
+                                $ cat imageconstraint.yaml | metalctl imageconstraint create -f -
+                                $ # or via file
+                                $ metalctl imageconstraint create -f imageconstraint.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for create
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_delete.md b/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_delete.md
index 7d36915cf4..f27bb841ac 100644
--- a/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_delete.md
+++ b/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_delete.md
@@ -9,7 +9,22 @@ metalctl size imageconstraint delete <id> [flags]
 ## Options
 
 ```
-  -h, --help   help for delete
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl imageconstraint describe imageconstraint-1 -o yaml > imageconstraint.yaml
+                                $ vi imageconstraint.yaml
+                                $ # either via stdin
+                                $ cat imageconstraint.yaml | metalctl imageconstraint delete <id> -f -
+                                $ # or via file
+                                $ metalctl imageconstraint delete <id> -f imageconstraint.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for delete
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_update.md b/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_update.md
index e43978295e..3293f45674 100644
--- a/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_update.md
+++ b/docs/src/external/metalctl/docs/metalctl_size_imageconstraint_update.md
@@ -9,17 +9,22 @@ metalctl size imageconstraint update [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl imageconstraint describe imageconstraint-1 -o yaml > imageconstraint.yaml
-                      $ vi imageconstraint.yaml
-                      $ # either via stdin
-                      $ cat imageconstraint.yaml | metalctl imageconstraint update -f -
-                      $ # or via file
-                      $ metalctl imageconstraint update -f imageconstraint.yaml
-                      	
-  -h, --help          help for update
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl imageconstraint describe imageconstraint-1 -o yaml > imageconstraint.yaml
+                                $ vi imageconstraint.yaml
+                                $ # either via stdin
+                                $ cat imageconstraint.yaml | metalctl imageconstraint update -f -
+                                $ # or via file
+                                $ metalctl imageconstraint update -f imageconstraint.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for update
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_size_update.md b/docs/src/external/metalctl/docs/metalctl_size_update.md
index fa80666c2a..f0dc2b2908 100644
--- a/docs/src/external/metalctl/docs/metalctl_size_update.md
+++ b/docs/src/external/metalctl/docs/metalctl_size_update.md
@@ -9,17 +9,22 @@ metalctl size update [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl size describe size-1 -o yaml > size.yaml
-                      $ vi size.yaml
-                      $ # either via stdin
-                      $ cat size.yaml | metalctl size update -f -
-                      $ # or via file
-                      $ metalctl size update -f size.yaml
-                      	
-  -h, --help          help for update
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl size describe size-1 -o yaml > size.yaml
+                                $ vi size.yaml
+                                $ # either via stdin
+                                $ cat size.yaml | metalctl size update -f -
+                                $ # or via file
+                                $ metalctl size update -f size.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for update
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_switch_delete.md b/docs/src/external/metalctl/docs/metalctl_switch_delete.md
index b00868e910..5b6663e1fc 100644
--- a/docs/src/external/metalctl/docs/metalctl_switch_delete.md
+++ b/docs/src/external/metalctl/docs/metalctl_switch_delete.md
@@ -9,7 +9,22 @@ metalctl switch delete <id> [flags]
 ## Options
 
 ```
-  -h, --help   help for delete
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl switch describe switch-1 -o yaml > switch.yaml
+                                $ vi switch.yaml
+                                $ # either via stdin
+                                $ cat switch.yaml | metalctl switch delete <id> -f -
+                                $ # or via file
+                                $ metalctl switch delete <id> -f switch.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for delete
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands
diff --git a/docs/src/external/metalctl/docs/metalctl_switch_update.md b/docs/src/external/metalctl/docs/metalctl_switch_update.md
index 0e2e5e3987..a6c67e76d0 100644
--- a/docs/src/external/metalctl/docs/metalctl_switch_update.md
+++ b/docs/src/external/metalctl/docs/metalctl_switch_update.md
@@ -9,17 +9,22 @@ metalctl switch update [flags]
 ## Options
 
 ```
-  -f, --file string   filename of the create or update request in yaml format, or - for stdin.
-                      
-                      Example:
-                      $ metalctl switch describe switch-1 -o yaml > switch.yaml
-                      $ vi switch.yaml
-                      $ # either via stdin
-                      $ cat switch.yaml | metalctl switch update -f -
-                      $ # or via file
-                      $ metalctl switch update -f switch.yaml
-                      	
-  -h, --help          help for update
+      --bulk-output             when used with --file (bulk operation): prints results at the end as a list. default is printing results intermediately during the operation, which causes single entities to be printed in a row.
+  -f, --file string             filename of the create or update request in yaml format, or - for stdin.
+                                
+                                Example:
+                                $ metalctl switch describe switch-1 -o yaml > switch.yaml
+                                $ vi switch.yaml
+                                $ # either via stdin
+                                $ cat switch.yaml | metalctl switch update -f -
+                                $ # or via file
+                                $ metalctl switch update -f switch.yaml
+                                
+                                the file can also contain multiple documents and perform a bulk operation.
+                                	
+  -h, --help                    help for update
+      --skip-security-prompts   skips security prompt for bulk operations
+      --timestamps              when used with --file (bulk operation): prints timestamps in-between the operations
 ```
 
 ## Options inherited from parent commands