diff --git a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java
index 2baefe0..1d2c9db 100644
--- a/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java
+++ b/core/src/main/java/org/apache/brooklyn/core/workflow/WorkflowPolicy.java
@@ -29,6 +29,8 @@
 import org.apache.brooklyn.core.feed.Poller;
 import org.apache.brooklyn.core.policy.AbstractPolicy;
 import org.apache.brooklyn.core.sensor.AbstractAddTriggerableSensor;
+import org.apache.brooklyn.core.workflow.WorkflowExecutionContext.WorkflowContextType;
+import org.apache.brooklyn.core.workflow.WorkflowSensor.WorkflowPollCallable;
 import org.apache.brooklyn.util.collections.MutableSet;
 import org.apache.brooklyn.util.core.predicates.DslPredicates;
 import org.apache.brooklyn.util.exceptions.Exceptions;
@@ -62,6 +64,7 @@
     public static final ConfigKey<String> UNIQUE_TAG_DASH = WorkflowSensor.UNIQUE_TAG_DASH;
 
     protected transient Poller<Object> poller;
+    protected transient WorkflowPollCallable pollCallable;
 
     // ? - do we need to have an option not to run when added?
 
@@ -143,8 +146,8 @@
                 .condition(new ConditionSupplierFromAdjunct());
 
         Set<PollConfig> pollConfigs = MutableSet.of(pc);
-        poller.schedulePoll(this, pollConfigs, new WorkflowSensor.WorkflowPollCallable(WorkflowExecutionContext.WorkflowContextType.POLICY,
-                getDisplayName() + " (policy)", config().getBag(), this), new PolicyNoOpPollHandler());
+        pollCallable = new WorkflowPollCallable(WorkflowContextType.POLICY, getDisplayName() + " (policy)", config().getBag(), this);
+        poller.schedulePoll(this, pollConfigs, pollCallable, new PolicyNoOpPollHandler());
 
         if (!isSuspended()) resume();
     }
@@ -163,5 +166,13 @@
         if (needsStarting) poller.start();
     }
 
+    // we could add an API for this, so arbitrary policies can be re-run from the UI
+    public Object runOnceNow() {
+        try {
+            return pollCallable.call();
+        } catch (Exception e) {
+            throw Exceptions.propagate(e);
+        }
+    }
 }
 
