code: @Override
      public boolean onEvent(EventMessage<?> event) {
          AuthorizationResultEvent resultEvent;
  
          if (!(event.getPayload() instanceof AuthorizationResultEvent)) {
              // not the right type of event... not 'handled'
              return false;
          }
  
          resultEvent = (AuthorizationResultEvent) event.getPayload();
  
          Transaction transaction = domainService.createTransaction(startTransactionInfo.getEvseId());
          NumberedTransactionId transactionId = new NumberedTransactionId(chargingStationId, protocolIdentifier, transaction.getId().intValue());
          IdentifyingToken identifyingToken = resultEvent.getIdentifyingToken();
          StartTransactionInfo extendedStartTransactionInfo = new StartTransactionInfo(startTransactionInfo.getEvseId(), startTransactionInfo.getMeterStart(), startTransactionInfo.getTimestamp(), identifyingToken, startTransactionInfo.getAttributes());
          
          domainService.startTransactionNoAuthorize(chargingStationId, transactionId, extendedStartTransactionInfo, addOnIdentity);
  
          IdTagInfo__ idTagInfo = new IdTagInfo__();
          idTagInfo.setStatus(convert(resultEvent.getAuthenticationStatus()));
  
          StarttransactionResponse response = new StarttransactionResponse();
          response.setTransactionId(transactionId.getNumber());
          response.setIdTagInfo(idTagInfo);
  
          writeResult(response);
  
          return true;
      }
docs: Handles the {@code AuthorizationResultEvent} (other events will directly result in 'false' return value). In the
  flow of handling a start transaction message the first step is to authorize the identification used to start
  the transaction. This method handles that event and uses the domain service to start the transaction and write
  a response on the web socket.
  
  @param event Authorizaton result event.
  @return true if the event has been handled, false if the event was the wrong type.