diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentData.java b/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
index c3277bc..743e349 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
@@ -68,6 +68,27 @@
     }
 
     /**
+     * Creates a new intent data object.
+     *
+     * @param intent intent this metadata references
+     * @param state intent state
+     * @param version version of the intent for this key
+     * @param origin ID of the node where the data was originally created
+     */
+    public IntentData(Intent intent, IntentState state, Timestamp version, NodeId origin) {
+        checkNotNull(intent);
+        checkNotNull(state);
+        checkNotNull(version);
+        checkNotNull(origin);
+
+        this.intent = intent;
+        this.state = state;
+        this.request = state;
+        this.version = version;
+        this.origin = origin;
+    }
+
+    /**
      * Copy constructor.
      *
      * @param intentData intent data to copy
@@ -84,6 +105,18 @@
         errorCount = intentData.errorCount;
     }
 
+    /**
+     * Create a new instance based on the original instance with new installables.
+     *
+     * @param original original data
+     * @param installables new installable intents to set
+     */
+    public IntentData(IntentData original, List<Intent> installables) {
+        this(original);
+
+        this.installables = ImmutableList.copyOf(checkNotNull(installables));
+    }
+
     // kryo constructor
     protected IntentData() {
         intent = null;
@@ -131,15 +164,6 @@
     }
 
     /**
-     * Sets the origin, which is the node that created the intent.
-     *
-     * @param origin origin instance
-     */
-    public void setOrigin(NodeId origin) {
-        this.origin = origin;
-    }
-
-    /**
      * Returns the origin node that created this intent.
      *
      * @return origin node ID
@@ -158,20 +182,6 @@
     }
 
     /**
-     * Sets the version for this intent data.
-     * <p>
-     * The store should call this method only once when the IntentData is
-     * first passed into the pending map. Ideally, an IntentData is timestamped
-     * on the same thread that the called used to submit the intents.
-     * </p>
-     *
-     * @param version the version/timestamp for this intent data
-     */
-    public void setVersion(Timestamp version) {
-        this.version = version;
-    }
-
-    /**
      * Increments the error count for this intent.
      */
     public void incrementErrorCount() {
@@ -198,15 +208,6 @@
     }
 
     /**
-     * Sets the intent installables to the given list of intents.
-     *
-     * @param installables list of installables for this intent
-     */
-    public void setInstallables(List<Intent> installables) {
-        this.installables = ImmutableList.copyOf(installables);
-    }
-
-    /**
      * Returns the installables associated with this intent.
      *
      * @return list of installable intents
