diff --git a/functionaltests/resources/v2/wf_v2.yaml b/functionaltests/resources/v2/wf_v2.yaml
index e32862eb..71256f98 100644
--- a/functionaltests/resources/v2/wf_v2.yaml
+++ b/functionaltests/resources/v2/wf_v2.yaml
@@ -7,9 +7,15 @@ wf:
   tasks:
     hello:
       action: std.echo output="Hello"
-      wait-before: 5
+      wait-before: 1
       publish:
-        result: <% task(hello).result %>
+        result: <% task().result %>
+      on-success: bye
+
+    bye:
+      action: std.echo output="Bye"
+      publish:
+        result: <% $.result + ', ' + task().result %>
 
 wf1:
   type: reverse
diff --git a/mistralclient/api/v2/action_executions.py b/mistralclient/api/v2/action_executions.py
index 8dd4c77f..da276a3d 100644
--- a/mistralclient/api/v2/action_executions.py
+++ b/mistralclient/api/v2/action_executions.py
@@ -13,9 +13,12 @@
 #    limitations under the License.
 
 import json
+import six
 
 from mistralclient.api import base
 
+urlparse = six.moves.urllib.parse
+
 
 class ActionExecution(base.Resource):
     resource_name = 'ActionExecution'
@@ -66,15 +69,20 @@ class ActionExecutionManager(base.ResourceManager):
     def list(self, task_execution_id=None, limit=None):
         url = '/action_executions'
 
-        qparams = {}
-
         if task_execution_id:
             url = '/tasks/%s/action_executions' % task_execution_id
 
+        url += "%s"
+
+        qparams = {}
+
         if limit:
             qparams['limit'] = limit
 
-        return self._list(url, response_key='action_executions')
+        query_string = ("?%s" % urlparse.urlencode(list(qparams.items()))
+                        if qparams else "")
+
+        return self._list(url % query_string, response_key='action_executions')
 
     def get(self, id):
         self._ensure_not_empty(id=id)
diff --git a/mistralclient/commands/v2/action_executions.py b/mistralclient/commands/v2/action_executions.py
index a6ef9f85..ccffccba 100644
--- a/mistralclient/commands/v2/action_executions.py
+++ b/mistralclient/commands/v2/action_executions.py
@@ -154,6 +154,7 @@ class Create(command.ShowOne):
             action_input = utils.load_json(parsed_args.input)
 
         mistral_client = self.app.client_manager.workflow_engine
+
         action_ex = mistral_client.action_executions.create(
             parsed_args.name,
             action_input,
@@ -196,10 +197,14 @@ class List(base.MistralLister):
     def _get_resources(self, parsed_args):
         if parsed_args.limit is None:
             parsed_args.limit = base.DEFAULT_LIMIT
-            LOG.info("limit is set to %s by default. Set "
-                     "the limit explicitly using \'--limit\', if required. "
-                     "Use \'--limit\' -1 to fetch the full result set.",
-                     base.DEFAULT_LIMIT)
+
+            LOG.info(
+                "limit is set to %s by default. Set "
+                "the limit explicitly using \'--limit\', if required. "
+                "Use \'--limit\' -1 to fetch the full result set.",
+                base.DEFAULT_LIMIT
+            )
+
         mistral_client = self.app.client_manager.workflow_engine
 
         return mistral_client.action_executions.list(
diff --git a/mistralclient/commands/v2/executions.py b/mistralclient/commands/v2/executions.py
index 930b9fbe..e3ad0e0e 100644
--- a/mistralclient/commands/v2/executions.py
+++ b/mistralclient/commands/v2/executions.py
@@ -126,10 +126,14 @@ class List(base.MistralLister):
     def _get_resources(self, parsed_args):
         if parsed_args.limit is None:
             parsed_args.limit = base.DEFAULT_LIMIT
-            LOG.info("limit is set to %s by default. Set "
-                     "the limit explicitly using \'--limit\', if required. "
-                     "Use \'--limit\' -1 to fetch the full result set.",
-                     base.DEFAULT_LIMIT)
+
+            LOG.info(
+                "limit is set to %s by default. Set "
+                "the limit explicitly using \'--limit\', if required. "
+                "Use \'--limit\' -1 to fetch the full result set.",
+                base.DEFAULT_LIMIT
+            )
+
         mistral_client = self.app.client_manager.workflow_engine
 
         return mistral_client.executions.list(
diff --git a/mistralclient/commands/v2/tasks.py b/mistralclient/commands/v2/tasks.py
index 5cbf92e1..3609e57b 100644
--- a/mistralclient/commands/v2/tasks.py
+++ b/mistralclient/commands/v2/tasks.py
@@ -97,10 +97,14 @@ class List(base.MistralLister):
     def _get_resources(self, parsed_args):
         if parsed_args.limit is None:
             parsed_args.limit = base.DEFAULT_LIMIT
-            LOG.info("limit is set to %s by default. Set "
-                     "the limit explicitly using \'--limit\', if required. "
-                     "Use \'--limit\' -1 to fetch the full result set.",
-                     base.DEFAULT_LIMIT)
+
+            LOG.info(
+                "limit is set to %s by default. Set "
+                "the limit explicitly using \'--limit\', if required. "
+                "Use \'--limit\' -1 to fetch the full result set.",
+                base.DEFAULT_LIMIT
+            )
+
         mistral_client = self.app.client_manager.workflow_engine
 
         return mistral_client.tasks.list(
diff --git a/mistralclient/tests/functional/cli/v2/cli_tests_v2.py b/mistralclient/tests/functional/cli/v2/cli_tests_v2.py
index 18a384a2..4a03323a 100644
--- a/mistralclient/tests/functional/cli/v2/cli_tests_v2.py
+++ b/mistralclient/tests/functional/cli/v2/cli_tests_v2.py
@@ -1347,14 +1347,35 @@ class ActionExecutionCLITests(base_v2.MistralClientTestBase):
         )
 
         wf_name = self.get_field_value(act_ex, 'Workflow name')
-        status = self.get_field_value(act_ex, 'State')
+        state = self.get_field_value(act_ex, 'State')
 
         self.assertEqual(
             act_ex_from_list['ID'],
             self.get_field_value(act_ex, 'ID')
         )
         self.assertEqual(self.direct_wf['Name'], wf_name)
-        self.assertEqual('SUCCESS', status)
+        self.assertEqual('SUCCESS', state)
+
+    def test_act_execution_list_with_limit(self):
+        self.wait_execution_success(self.direct_ex_id)
+
+        act_execs = self.mistral_admin('action-execution-list')
+
+        # The workflow execution started in setUp()
+        # generates 2 action executions.
+        self.assertGreater(len(act_execs), 1)
+
+        act_execs = self.mistral_admin(
+            'action-execution-list',
+            params="--limit 1"
+        )
+
+        self.assertEqual(len(act_execs), 1)
+
+        act_ex = act_execs[0]
+
+        self.assertEqual(self.direct_wf['Name'], act_ex['Workflow name'])
+        self.assertEqual('SUCCESS', act_ex['State'])
 
     def test_act_execution_create_delete(self):
         action_ex = self.mistral_admin(
diff --git a/mistralclient/tests/unit/v2/test_action_executions.py b/mistralclient/tests/unit/v2/test_action_executions.py
index f47a9887..a3ff25e5 100644
--- a/mistralclient/tests/unit/v2/test_action_executions.py
+++ b/mistralclient/tests/unit/v2/test_action_executions.py
@@ -24,7 +24,6 @@ ACTION_EXEC = {
     'state': 'RUNNING',
 }
 
-
 URL_TEMPLATE = '/action_executions'
 URL_TEMPLATE_ID = '/action_executions/%s'
 
@@ -94,6 +93,21 @@ class TestActionExecutions(base.BaseClientV2Test):
 
         self.assertEqual(expected, action_execution.to_dict())
 
+    def test_list_with_limit(self):
+        self.requests_mock.get(
+            self.TEST_URL + URL_TEMPLATE,
+            json={'action_executions': [ACTION_EXEC]}
+        )
+
+        action_execution_list = self.action_executions.list(limit=1)
+
+        self.assertEqual(1, len(action_execution_list))
+
+        last_request = self.requests_mock.last_request
+
+        # Make sure that limit is passed to the server correctly.
+        self.assertEqual(['1'], last_request.qs['limit'])
+
     def test_get(self):
         url = self.TEST_URL + URL_TEMPLATE_ID % ACTION_EXEC['id']
         self.requests_mock.get(url, json=ACTION_EXEC)