code: @Override
      public Object execute(final Object arg) throws DevFailed {
          errorReportMap.clear();
          String tmpReplyName = "";
          boolean hasFailed = false;
          final List<DevError[]> errors = new ArrayList<DevError[]>();
          int size = 0;
          final DeviceData argin = new DeviceData();
          InsertExtractUtils.insert(argin, config.getInTangoType(), arg);
          final GroupCmdReplyList tmpReplyList = group.command_inout(name, argin, true);
  
          for (final Object tmpReply : tmpReplyList) {
              tmpReplyName = ((GroupReply) tmpReply).dev_name();
              LOGGER.debug("getting answer for {}", tmpReplyName);
              try {
                  ((GroupCmdReply) tmpReply).get_data();
              } catch (final DevFailed e) {
                  LOGGER.error("command failed on {}/{} - {}",
                          new Object[] { tmpReplyName, name, DevFailedUtils.toString(e) });
                  hasFailed = true;
                  errors.add(e.errors);
                  size = +e.errors.length;
                  errorReportMap.put(tmpReplyName, dateFormat.format(new Date()) + " : " + name + " result "
                          + DevFailedUtils.toString(e));
  
              }
          }
  
          if (hasFailed) {
              final DevError[] totalErrors = new DevError[errors.size() * size + 1];
              totalErrors[0] = new DevError("CONNECTION_ERROR", ErrSeverity.ERR, "cannot execute command ", this
                      .getClass().getCanonicalName() + ".executeCommand(" + name + ")");
              int i = 1;
              for (final DevError[] devErrors : errors) {
                  for (final DevError devError : devErrors) {
                      totalErrors[i++] = devError;
                  }
              }
              throw new DevFailed(totalErrors);
          }
          return null;
      }
docs: execute all commands and read back all errors