diff --git a/src/sakia/data/connectors/bma.py b/src/sakia/data/connectors/bma.py
index 25e8ec205d51584af986985f53382a07732db7c9..2076a781d0da0578a126d276eeb99aabe919da86 100644
--- a/src/sakia/data/connectors/bma.py
+++ b/src/sakia/data/connectors/bma.py
@@ -282,7 +282,7 @@ class BmaConnector:
         replies = []
 
         if len(endpoints) > 0:
-            with aiohttp.ClientSession() as session:
+            async with aiohttp.ClientSession() as session:
                 for endpoint in endpoints:
                     self._logger.debug("Trying to connect to : " + str(endpoint))
                     reply = asyncio.ensure_future(request(next(endpoint.conn_handler(session,
diff --git a/src/sakia/gui/sub/transfer/model.py b/src/sakia/gui/sub/transfer/model.py
index 86b758590837d9161d2ead704c2c399b31c52ab6..ee19bcba550bcffc32aaaa35e941c51cfca9538e 100644
--- a/src/sakia/gui/sub/transfer/model.py
+++ b/src/sakia/gui/sub/transfer/model.py
@@ -99,7 +99,9 @@ class TransferModel(QObject):
                 if conn.pubkey == recipient:
                     self.app.sources_service.parse_transaction(recipient, transaction)
                     new_tx = self.app.transactions_service.parse_sent_transaction(recipient, transaction)
-                    self.app.new_transfer.emit(conn, new_tx)
+                    # Not all connections are concerned by chained tx
+                    if new_tx:
+                        self.app.new_transfer.emit(conn, new_tx)
             self.app.sources_refreshed.emit()
             self.app.db.commit()
         return result, transactions
diff --git a/tests/conftest.py b/tests/conftest.py
index 4a82164b4d090507e95ea4297088455f17cb33f7..0f0fdd73f905f52403c9edf4b69b507596c0e227 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -147,7 +147,7 @@ def simple_blockchain_forge(simple_forge, alice, bob):
     simple_forge.forge_block()
     simple_forge.set_member(alice.key.pubkey, True)
     simple_forge.set_member(bob.key.pubkey, True)
-    for i in range(0, 10):
+    for i in range(0, 100):
         new_user = mirage.User.create("test_currency", "user{0}".format(i),
                                        "salt{0}".format(i), "password{0}".format(i),
                                       simple_forge.blocks[-1].blockUID)
@@ -228,6 +228,18 @@ def application_with_one_connection(application, simple_blockchain_forge, bob):
     return application
 
 
+
+@pytest.fixture
+def application_with_two_connections(application_with_one_connection, simple_blockchain_forge, john):
+    connection = Connection(currency="test_currency",
+                      pubkey=john.key.pubkey, uid="",
+                      scrypt_N=mirage.User.SCRYPT_PARAMS.N,
+                      scrypt_r=mirage.User.SCRYPT_PARAMS.r,
+                      scrypt_p=mirage.User.SCRYPT_PARAMS.p,
+                      blockstamp=str(BlockUID.empty()))
+    application_with_one_connection.db.connections_repo.insert(connection)
+    return application_with_one_connection
+
 def unitttest_exception_handler(exceptions, loop, context):
     """
     An exception handler which exists the program if the exception
diff --git a/tests/functional/test_transfer_dialog.py b/tests/functional/test_transfer_dialog.py
index 29f2aa1ea74a843bc95ed7d14108a25eb36ec4c6..bc098c34576456b0216a2d1e56e581baf1674484 100644
--- a/tests/functional/test_transfer_dialog.py
+++ b/tests/functional/test_transfer_dialog.py
@@ -32,5 +32,32 @@ async def test_transfer(application_with_one_connection, fake_server_with_blockc
     application_with_one_connection.loop.call_later(10, close_dialog)
     transfer_dialog.view.show()
     await exec_test()
-    #close_dialog()
-    #await fake_server_with_blockchain.close()
+
+
+@pytest.mark.asyncio
+async def test_transfer_chained_tx(application_with_two_connections, fake_server_with_blockchain, bob, john):
+    transfer_dialog = TransferController.create(None, application_with_two_connections)
+
+    def close_dialog():
+        if transfer_dialog.view.isVisible():
+            transfer_dialog.view.hide()
+
+    async def exec_test():
+        QTest.mouseClick(transfer_dialog.view.radio_pubkey, Qt.LeftButton)
+        QTest.keyClicks(transfer_dialog.view.edit_pubkey, john.key.pubkey)
+        transfer_dialog.view.spinbox_amount.setValue(1000)
+        await asyncio.sleep(0.1)
+        assert not transfer_dialog.view.button_box.button(QDialogButtonBox.Ok).isEnabled()
+        await asyncio.sleep(0.1)
+        QTest.keyClicks(transfer_dialog.view.password_input.edit_secret_key, bob.salt)
+        QTest.keyClicks(transfer_dialog.view.password_input.edit_password, bob.password)
+        assert transfer_dialog.view.button_box.button(QDialogButtonBox.Ok).isEnabled()
+        QTest.mouseClick(transfer_dialog.view.button_box.button(QDialogButtonBox.Ok), Qt.LeftButton)
+        await asyncio.sleep(0.2)
+        assert isinstance(fake_server_with_blockchain.forge.pool[0], Transaction)
+        assert fake_server_with_blockchain.forge.pool[0].comment == "[CHAINED]"
+        assert isinstance(fake_server_with_blockchain.forge.pool[1], Transaction)
+
+        application_with_two_connections.loop.call_later(10, close_dialog)
+    transfer_dialog.view.show()
+    await exec_test()