public function syncDialog()
    {
        $this->logger->info('Initialize SYNC');
        $this->messageNumber = 1;
        $this->systemId = 0;
        $this->dialogId = 0;

        $identification = new HKIDN(3, $this->bankCode, $this->username, 0);
        $prepare        = new HKVVB(4, HKVVB::DEFAULT_BPD_VERSION, HKVVB::DEFAULT_UPD_VERSION, HKVVB::LANG_DEFAULT);
        $sync           = new HKSYN(5);

        $syncMsg = new Message(
            $this->bankCode,
            $this->username,
            $this->pin,
            $this->systemId,
            $this->dialogId,
            $this->messageNumber,
            array($identification, $prepare, $sync)
        );

        $this->logger->debug('Sending SYNC message: ' . (string) $syncMsg);
        $response = $this->sendMessage($syncMsg);

        $this->logger->debug('Got SYNC response: ' . $response->rawResponse);

        // save BPD (Bank Parameter Daten)
        $this->systemId = $response->getSystemId();
        $this->dialogId = $response->getDialogId();
        $this->bankName = $response->getBankName();

        // max version for segment HKSAL (Saldo abfragen)
        $this->hksalVersion = $response->getHksalMaxVersion();
        $this->supportedTanMechanisms = $response->getSupportedTanMechanisms();

        // max version for segment HKKAZ (Kontoumsätze anfordern / Zeitraum)
        $this->hkkazVersion = $response->getHkkazMaxVersion();

        $this->logger->info('Received system id: ' . $response->getSystemId());
        $this->logger->info('Received dialog id: ' . $response->getDialogId());
        $this->logger->info('Supported TAN mechanisms: ' . implode(', ', $this->supportedTanMechanisms));

        $this->endDialog();

        return $response->rawResponse;
    }