Made enabled into product member variable to reduce calls.
diff --git a/api/src/main/java/io/mifos/portfolio/api/v1/domain/Product.java b/api/src/main/java/io/mifos/portfolio/api/v1/domain/Product.java
index 0e7274d..84d7fa4 100644
--- a/api/src/main/java/io/mifos/portfolio/api/v1/domain/Product.java
+++ b/api/src/main/java/io/mifos/portfolio/api/v1/domain/Product.java
@@ -68,6 +68,7 @@
   private String createdBy;
   private String lastModifiedOn;
   private String lastModifiedBy;
+  private boolean enabled;
 
   public Product() {
   }
@@ -200,6 +201,14 @@
     this.lastModifiedBy = lastModifiedBy;
   }
 
+  public boolean isEnabled() {
+    return enabled;
+  }
+
+  public void setEnabled(boolean enabled) {
+    this.enabled = enabled;
+  }
+
   @Override
   public boolean equals(Object o) {
     if (this == o) return true;
@@ -227,22 +236,23 @@
   @Override
   public String toString() {
     return "Product{" +
-            "identifier='" + identifier + '\'' +
-            ", name='" + name + '\'' +
-            ", termRange=" + termRange +
-            ", balanceRange=" + balanceRange +
-            ", interestRange=" + interestRange +
-            ", interestBasis=" + interestBasis +
-            ", patternPackage='" + patternPackage + '\'' +
-            ", description='" + description + '\'' +
-            ", currencyCode='" + currencyCode + '\'' +
-            ", minorCurrencyUnitDigits=" + minorCurrencyUnitDigits +
-            ", accountAssignments=" + accountAssignments +
-            ", parameters='" + parameters + '\'' +
-            ", createdOn='" + createdOn + '\'' +
-            ", createdBy='" + createdBy + '\'' +
-            ", lastModifiedOn='" + lastModifiedOn + '\'' +
-            ", lastModifiedBy='" + lastModifiedBy + '\'' +
-            '}';
+        "identifier='" + identifier + '\'' +
+        ", name='" + name + '\'' +
+        ", termRange=" + termRange +
+        ", balanceRange=" + balanceRange +
+        ", interestRange=" + interestRange +
+        ", interestBasis=" + interestBasis +
+        ", patternPackage='" + patternPackage + '\'' +
+        ", description='" + description + '\'' +
+        ", currencyCode='" + currencyCode + '\'' +
+        ", minorCurrencyUnitDigits=" + minorCurrencyUnitDigits +
+        ", accountAssignments=" + accountAssignments +
+        ", parameters='" + parameters + '\'' +
+        ", createdOn='" + createdOn + '\'' +
+        ", createdBy='" + createdBy + '\'' +
+        ", lastModifiedOn='" + lastModifiedOn + '\'' +
+        ", lastModifiedBy='" + lastModifiedBy + '\'' +
+        ", enabled='" + enabled + '\'' +
+        '}';
   }
 }
diff --git a/component-test/src/main/java/io/mifos/portfolio/TestProducts.java b/component-test/src/main/java/io/mifos/portfolio/TestProducts.java
index 876d07a..cb52a9d 100644
--- a/component-test/src/main/java/io/mifos/portfolio/TestProducts.java
+++ b/component-test/src/main/java/io/mifos/portfolio/TestProducts.java
@@ -50,6 +50,7 @@
     final Product productAsSaved = portfolioManager.getProduct(product.getIdentifier());
 
     Assert.assertEquals(product, productAsSaved);
+    Assert.assertFalse(productAsSaved.isEnabled());
 
     Assert.assertFalse(portfolioManager.getProductEnabled(product.getIdentifier()));
 
@@ -76,6 +77,9 @@
     portfolioManager.enableProduct(product.getIdentifier(), true);
     Assert.assertTrue(this.eventRecorder.wait(EventConstants.PUT_PRODUCT_ENABLE, product.getIdentifier()));
 
+    final Product productAfterEnable = portfolioManager.getProduct(product.getIdentifier());
+
+    Assert.assertTrue(productAfterEnable.isEnabled());
     Assert.assertTrue(portfolioManager.getProductEnabled(product.getIdentifier()));
 
     {
@@ -300,6 +304,13 @@
     portfolioManager.deleteProduct("habberdash");
   }
 
+  @Test(expected = IllegalArgumentException.class)
+  public void shouldFailToCreateProductDirectlyAsEnabled() throws InterruptedException {
+    final Product product = Fixture.createAdjustedProduct(x -> {});
+    product.setEnabled(true);
+    portfolioManager.createProduct(product);
+  }
+
   @Test
   public void shouldDeleteProduct() throws InterruptedException {
     final Product product = createAndEnableProduct();
diff --git a/service/src/main/java/io/mifos/portfolio/service/internal/mapper/ProductMapper.java b/service/src/main/java/io/mifos/portfolio/service/internal/mapper/ProductMapper.java
index 4e470b3..fa9977a 100644
--- a/service/src/main/java/io/mifos/portfolio/service/internal/mapper/ProductMapper.java
+++ b/service/src/main/java/io/mifos/portfolio/service/internal/mapper/ProductMapper.java
@@ -57,6 +57,7 @@
     product.setCreatedOn(DateConverter.toIsoString(productEntity.getCreatedOn()));
     product.setLastModifiedBy(productEntity.getLastModifiedBy());
     product.setLastModifiedOn(DateConverter.toIsoString(productEntity.getLastModifiedOn()));
+    product.setEnabled(productEntity.getEnabled());
 
     return product;
   }
diff --git a/service/src/main/java/io/mifos/portfolio/service/rest/ProductRestController.java b/service/src/main/java/io/mifos/portfolio/service/rest/ProductRestController.java
index ece7c71..27cad2f 100644
--- a/service/src/main/java/io/mifos/portfolio/service/rest/ProductRestController.java
+++ b/service/src/main/java/io/mifos/portfolio/service/rest/ProductRestController.java
@@ -109,7 +109,10 @@
       throw ServiceException.badRequest("CreatedOn must be 'null' upon initial creation.");
 
     if (instance.getLastModifiedOn() != null)
-      throw ServiceException.badRequest("LastModifiedOn must 'null' be upon initial creation.");
+      throw ServiceException.badRequest("LastModifiedOn must be 'null' be upon initial creation.");
+
+    if (instance.isEnabled())
+      throw ServiceException.badRequest("Enabled must be 'false' be upon initial creation.");
 
     this.commandGateway.process(new CreateProductCommand(instance));
     return new ResponseEntity<>(HttpStatus.ACCEPTED);
@@ -146,6 +149,9 @@
     if (caseService.existsByProductIdentifier(productIdentifier))
       throw ServiceException.conflict("Cases exist for product with the identifier '" + productIdentifier + "'. Product cannot be changed.");
 
+    if (instance.isEnabled())
+      throw ServiceException.badRequest("Enabled must be 'false' be during editing.");
+
     commandGateway.process(new ChangeProductCommand(instance));
 
     return ResponseEntity.accepted().build();