diff --git a/commands/flags.go b/commands/flags.go
index d9761d2..9f24f0a 100644
--- a/commands/flags.go
+++ b/commands/flags.go
@@ -84,6 +84,7 @@
 		apihostSet    string
 		apiversionSet string
 		namespaceSet  string
+		output        string
 	}
 
 	action ActionFlags
diff --git a/commands/property.go b/commands/property.go
index 84230bf..a66f7f0 100644
--- a/commands/property.go
+++ b/commands/property.go
@@ -23,7 +23,7 @@
 	"os"
 
 	"github.com/fatih/color"
-	"github.com/mitchellh/go-homedir"
+	homedir "github.com/mitchellh/go-homedir"
 	"github.com/spf13/cobra"
 
 	"github.com/apache/incubator-openwhisk-cli/wski18n"
@@ -53,6 +53,18 @@
 const DefaultNamespace string = "_"
 const DefaultPropsFile string = "~/.wskprops"
 
+const (
+	propDisplayCert       = "client cert"
+	propDisplayKey        = "Client key"
+	propDisplayAuth       = "whisk auth"
+	propDisplayAPIHost    = "whisk API host"
+	propDisplayAPIVersion = "whisk API version"
+	propDisplayNamespace  = "whisk namespace"
+	propDisplayCLIVersion = "whisk CLI version"
+	propDisplayAPIBuild   = "whisk API build"
+	propDisplayAPIBuildNo = "whisk API build number"
+)
+
 var propertyCmd = &cobra.Command{
 	Use:   "property",
 	Short: wski18n.T("work with whisk properties"),
@@ -287,6 +299,22 @@
 	PreRunE:       SetupClientConfig,
 	RunE: func(cmd *cobra.Command, args []string) error {
 
+		var outputFormat string = "std"
+		if Flags.property.output != "std" {
+			switch Flags.property.output {
+			case "raw":
+				outputFormat = "raw"
+				break
+			//case "json": For future implementation
+			//case "yaml": For future implementation
+			default:
+				errStr := fmt.Sprintf(
+					wski18n.T("Supported output format are std|raw"))
+				werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), nil, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return werr
+			}
+		}
+
 		// If no property is explicitly specified, default to all properties
 		if !(Flags.property.all || Flags.property.cert ||
 			Flags.property.key || Flags.property.auth ||
@@ -295,33 +323,44 @@
 			Flags.property.apihost || Flags.property.apibuildno) {
 			Flags.property.all = true
 		}
+		if Flags.property.all {
+			// Currently with all only standard output format is supported.
+			if outputFormat != "std" {
+				errStr := fmt.Sprintf(
+					wski18n.T("--output|-o raw only supported with specific property type"))
+				werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), nil, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE)
+				return werr
+			}
 
-		if Flags.property.all || Flags.property.cert {
-			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("client cert"), boldString(Properties.Cert))
-		}
-
-		if Flags.property.all || Flags.property.key {
-			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("Client key"), boldString(Properties.Key))
-		}
-
-		if Flags.property.all || Flags.property.auth {
-			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk auth"), boldString(Properties.Auth))
-		}
-
-		if Flags.property.all || Flags.property.apihost {
-			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk API host"), boldString(Properties.APIHost))
-		}
-
-		if Flags.property.all || Flags.property.apiversion {
-			fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T("whisk API version"), boldString(Properties.APIVersion))
-		}
-
-		if Flags.property.all || Flags.property.namespace {
-			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk namespace"), boldString(Properties.Namespace))
-		}
-
-		if Flags.property.all || Flags.property.cliversion {
-			fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T("whisk CLI version"), boldString(Properties.CLIVersion))
+			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T(propDisplayCert), boldString(Properties.Cert))
+			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T(propDisplayKey), boldString(Properties.Key))
+			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T(propDisplayAuth), boldString(Properties.Auth))
+			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T(propDisplayAPIHost), boldString(Properties.APIHost))
+			fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T(propDisplayAPIVersion), boldString(Properties.APIVersion))
+			fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T(propDisplayNamespace), boldString(Properties.Namespace))
+			fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T(propDisplayCLIVersion), boldString(Properties.CLIVersion))
+		} else {
+			if Flags.property.cert {
+				printProperty(Properties.Cert, propDisplayCert, outputFormat)
+			}
+			if Flags.property.key {
+				printProperty(Properties.Key, propDisplayKey, outputFormat)
+			}
+			if Flags.property.cliversion {
+				printProperty(Properties.CLIVersion, propDisplayCLIVersion, outputFormat, "%s\t%s\n")
+			}
+			if Flags.property.apihost {
+				printProperty(Properties.APIHost, propDisplayAPIHost, outputFormat)
+			}
+			if Flags.property.auth {
+				printProperty(Properties.Auth, propDisplayAuth, outputFormat)
+			}
+			if Flags.property.apiversion {
+				printProperty(Properties.APIVersion, propDisplayAPIVersion, outputFormat, "%s\t%s\n")
+			}
+			if Flags.property.namespace {
+				printProperty(Properties.Namespace, propDisplayNamespace, outputFormat)
+			}
 		}
 
 		if Flags.property.all || Flags.property.apibuild || Flags.property.apibuildno {
@@ -332,11 +371,15 @@
 				info.Build = wski18n.T("Unknown")
 				info.BuildNo = wski18n.T("Unknown")
 			}
-			if Flags.property.all || Flags.property.apibuild {
-				fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T("whisk API build"), boldString(info.Build))
+			if Flags.property.all {
+				fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T(propDisplayAPIBuild), boldString(info.Build))
+				fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T(propDisplayAPIBuildNo), boldString(info.BuildNo))
 			}
-			if Flags.property.all || Flags.property.apibuildno {
-				fmt.Fprintf(color.Output, "%s\t%s\n", wski18n.T("whisk API build number"), boldString(info.BuildNo))
+			if Flags.property.apibuild && !Flags.property.all {
+				printProperty(info.Build, propDisplayAPIBuild, outputFormat)
+			}
+			if Flags.property.apibuildno && !Flags.property.all {
+				printProperty(info.BuildNo, propDisplayAPIBuildNo, outputFormat, "%s\t%s\n")
 			}
 			if err != nil {
 				errStr := fmt.Sprintf(
@@ -346,7 +389,6 @@
 				return werr
 			}
 		}
-
 		return nil
 	},
 }
@@ -359,30 +401,31 @@
 	)
 
 	// need to set property flags as booleans instead of strings... perhaps with boolApihost...
-	propertyGetCmd.Flags().BoolVar(&Flags.property.cert, "cert", false, wski18n.T("client cert"))
-	propertyGetCmd.Flags().BoolVar(&Flags.property.key, "key", false, wski18n.T("client key"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.cert, "cert", false, wski18n.T(propDisplayCert))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.key, "key", false, wski18n.T(propDisplayKey))
 	propertyGetCmd.Flags().BoolVar(&Flags.property.auth, "auth", false, wski18n.T("authorization key"))
-	propertyGetCmd.Flags().BoolVar(&Flags.property.apihost, "apihost", false, wski18n.T("whisk API host"))
-	propertyGetCmd.Flags().BoolVar(&Flags.property.apiversion, "apiversion", false, wski18n.T("whisk API version"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.apihost, "apihost", false, wski18n.T(propDisplayAPIHost))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.apiversion, "apiversion", false, wski18n.T(propDisplayAPIVersion))
 	propertyGetCmd.Flags().BoolVar(&Flags.property.apibuild, "apibuild", false, wski18n.T("whisk API build version"))
-	propertyGetCmd.Flags().BoolVar(&Flags.property.apibuildno, "apibuildno", false, wski18n.T("whisk API build number"))
-	propertyGetCmd.Flags().BoolVar(&Flags.property.cliversion, "cliversion", false, wski18n.T("whisk CLI version"))
-	propertyGetCmd.Flags().BoolVar(&Flags.property.namespace, "namespace", false, wski18n.T("whisk namespace"))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.apibuildno, "apibuildno", false, wski18n.T(propDisplayAPIBuildNo))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.cliversion, "cliversion", false, wski18n.T(propDisplayCLIVersion))
+	propertyGetCmd.Flags().BoolVar(&Flags.property.namespace, "namespace", false, wski18n.T(propDisplayNamespace))
 	propertyGetCmd.Flags().BoolVar(&Flags.property.all, "all", false, wski18n.T("all properties"))
+	propertyGetCmd.Flags().StringVarP(&Flags.property.output, "output", "o", "std", wski18n.T("Output format in std|raw"))
 
 	propertySetCmd.Flags().StringVarP(&Flags.Global.Auth, "auth", "u", "", wski18n.T("authorization `KEY`"))
-	propertySetCmd.Flags().StringVar(&Flags.Global.Cert, "cert", "", wski18n.T("client cert"))
-	propertySetCmd.Flags().StringVar(&Flags.Global.Key, "key", "", wski18n.T("client key"))
+	propertySetCmd.Flags().StringVar(&Flags.Global.Cert, "cert", "", wski18n.T(propDisplayCert))
+	propertySetCmd.Flags().StringVar(&Flags.Global.Key, "key", "", wski18n.T(propDisplayKey))
 	propertySetCmd.Flags().StringVar(&Flags.property.apihostSet, "apihost", "", wski18n.T("whisk API `HOST`"))
 	propertySetCmd.Flags().StringVar(&Flags.property.apiversionSet, "apiversion", "", wski18n.T("whisk API `VERSION`"))
 	propertySetCmd.Flags().StringVar(&Flags.property.namespaceSet, "namespace", "", wski18n.T("whisk `NAMESPACE`"))
 
-	propertyUnsetCmd.Flags().BoolVar(&Flags.property.cert, "cert", false, wski18n.T("client cert"))
-	propertyUnsetCmd.Flags().BoolVar(&Flags.property.key, "key", false, wski18n.T("client key"))
+	propertyUnsetCmd.Flags().BoolVar(&Flags.property.cert, "cert", false, wski18n.T(propDisplayCert))
+	propertyUnsetCmd.Flags().BoolVar(&Flags.property.key, "key", false, wski18n.T(propDisplayKey))
 	propertyUnsetCmd.Flags().BoolVar(&Flags.property.auth, "auth", false, wski18n.T("authorization key"))
-	propertyUnsetCmd.Flags().BoolVar(&Flags.property.apihost, "apihost", false, wski18n.T("whisk API host"))
-	propertyUnsetCmd.Flags().BoolVar(&Flags.property.apiversion, "apiversion", false, wski18n.T("whisk API version"))
-	propertyUnsetCmd.Flags().BoolVar(&Flags.property.namespace, "namespace", false, wski18n.T("whisk namespace"))
+	propertyUnsetCmd.Flags().BoolVar(&Flags.property.apihost, "apihost", false, wski18n.T(propDisplayAPIHost))
+	propertyUnsetCmd.Flags().BoolVar(&Flags.property.apiversion, "apiversion", false, wski18n.T(propDisplayAPIVersion))
+	propertyUnsetCmd.Flags().BoolVar(&Flags.property.namespace, "namespace", false, wski18n.T(propDisplayNamespace))
 
 }
 
@@ -558,3 +601,21 @@
 
 	return nil
 }
+
+func printProperty(propertyName string, displayText string, formatType string, format ...string) {
+	switch formatType {
+	case "std":
+		if len(format) > 0 {
+			fmt.Fprintf(color.Output, format[0], wski18n.T(displayText), boldString(propertyName))
+			break
+		}
+		fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T(displayText), boldString(propertyName))
+		break
+	case "raw":
+		fmt.Fprintf(color.Output, "%s\n", boldString(propertyName))
+		break
+	default:
+		// In case of any other type for now print in std format.
+		fmt.Fprintf(color.Output, "%s\t\t%s\n", wski18n.T(displayText), boldString(propertyName))
+	}
+}
diff --git a/tests/src/integration/command_test.go b/tests/src/integration/command_test.go
index d4808f1..92e33aa 100644
--- a/tests/src/integration/command_test.go
+++ b/tests/src/integration/command_test.go
@@ -20,10 +20,11 @@
 package tests
 
 import (
-	"github.com/apache/incubator-openwhisk-cli/tests/src/integration/common"
-	"github.com/stretchr/testify/assert"
 	"os"
 	"testing"
+
+	"github.com/apache/incubator-openwhisk-cli/tests/src/integration/common"
+	"github.com/stretchr/testify/assert"
 )
 
 var wsk *common.Wsk = common.NewWsk()
@@ -65,17 +66,17 @@
 	stdout, err := wsk.RunCommand("property", "get", "--cliversion")
 	assert.Equal(t, nil, err, "The command property get --cliversion failed to run.")
 	output := common.RemoveRedundentSpaces(string(stdout))
-	assert.NotContains(t, output, "whisk CLI version not set",
-		"The output of the command property get --cliversion contains \"whisk CLI version not set\".")
-	assert.Contains(t, output, "whisk CLI version",
-		"The output of the command property get --cliversion does not contain \"whisk CLI version\".")
+	assert.NotContains(t, output, common.PropDisplayCLIVersion+" not set",
+		"The output of the command property get --cliversion contains "+common.PropDisplayCLIVersion+" not set")
+	assert.Contains(t, output, common.PropDisplayCLIVersion,
+		"The output of the command property get --cliversion does not contain "+common.PropDisplayCLIVersion)
 }
 
 func TestShowAPIVersion(t *testing.T) {
 	stdout, err := wsk.RunCommand("property", "get", "--apiversion")
 	assert.Equal(t, nil, err, "The command property get --apiversion failed to run.")
-	assert.Contains(t, string(stdout), "whisk API version",
-		"The output of the command property get --apiversion does not contain \"whisk API version\".")
+	assert.Contains(t, string(stdout), common.PropDisplayAPIVersion,
+		"The output of the command property get --apiversion does not contain "+common.PropDisplayCLIVersion)
 }
 
 // Test case to verify the default namespace _.
@@ -88,8 +89,8 @@
 
 	stdout, err := wsk.RunCommand("property", "get", "-i", "--namespace")
 	assert.Equal(t, nil, err, "The command property get -i --namespace failed to run.")
-	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk namespace _",
-		"The output of the command does not contain \"whisk namespace _\".")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), common.PropDisplayNamespace+" _",
+		"The output of the command does not contain "+common.PropDisplayCLIVersion+" _")
 	common.DeleteFile(tmpProp)
 }
 
@@ -114,18 +115,18 @@
 
 	stdout, err = wsk.RunCommand("property", "get", "--auth")
 	assert.Equal(t, nil, err, "The command property get --auth failed to run.")
-	assert.Equal(t, "whisk auth", common.RemoveRedundentSpaces(string(stdout)),
-		"The output of the command does not equal to \"whisk auth\".")
+	assert.Equal(t, common.PropDisplayAuth, common.RemoveRedundentSpaces(string(stdout)),
+		"The output of the command does not equal to "+common.PropDisplayAuth)
 
 	stdout, err = wsk.RunCommand("property", "get", "--apihost")
 	assert.Equal(t, nil, err, "The command property get --apihost failed to run.")
-	assert.Equal(t, "whisk API host", common.RemoveRedundentSpaces(string(stdout)),
-		"The output of the command does not equal to \"whisk API host\".")
+	assert.Equal(t, common.PropDisplayAPIHost, common.RemoveRedundentSpaces(string(stdout)),
+		"The output of the command does not equal to "+common.PropDisplayAPIHost)
 
 	stdout, err = wsk.RunCommand("property", "get", "--namespace")
 	assert.Equal(t, nil, err, "The command property get --namespace failed to run.")
-	assert.Equal(t, "whisk namespace _", common.RemoveRedundentSpaces(string(stdout)),
-		"The output of the command does not equal to \"whisk namespace _\".")
+	assert.Equal(t, common.PropDisplayNamespace+" _", common.RemoveRedundentSpaces(string(stdout)),
+		"The output of the command does not equal to "+common.PropDisplayNamespace+" _")
 
 	common.DeleteFile(tmpProp)
 }
diff --git a/tests/src/integration/common/utils.go b/tests/src/integration/common/utils.go
index 0d98af4..58aedd6 100644
--- a/tests/src/integration/common/utils.go
+++ b/tests/src/integration/common/utils.go
@@ -26,6 +26,18 @@
 	"unicode"
 )
 
+const (
+	PropDisplayCert       = "client cert"
+	PropDisplayKey        = "Client key"
+	PropDisplayAuth       = "whisk auth"
+	PropDisplayAPIHost    = "whisk API host"
+	PropDisplayAPIVersion = "whisk API version"
+	PropDisplayNamespace  = "whisk namespace"
+	PropDisplayCLIVersion = "whisk CLI version"
+	PropDisplayAPIBuild   = "whisk API build"
+	PropDisplayAPIBuildNo = "whisk API build number"
+)
+
 func checkError(err error) {
 	if err != nil {
 		fmt.Println(err.Error())
diff --git a/tests/src/integration/integration_test.go b/tests/src/integration/integration_test.go
index a486099..78038b6 100644
--- a/tests/src/integration/integration_test.go
+++ b/tests/src/integration/integration_test.go
@@ -21,11 +21,12 @@
 
 import (
 	"fmt"
-	"github.com/apache/incubator-openwhisk-cli/tests/src/integration/common"
-	"github.com/stretchr/testify/assert"
 	"os"
 	"strings"
 	"testing"
+
+	"github.com/apache/incubator-openwhisk-cli/tests/src/integration/common"
+	"github.com/stretchr/testify/assert"
 )
 
 var invalidArgs []common.InvalidArg
@@ -370,12 +371,12 @@
 	stdout, err = wsk.RunCommand("property", "get", "-i", "--apibuild")
 	assert.Equal(t, nil, err, "The command property get -i --apibuild failed to run.")
 	println(common.RemoveRedundentSpaces(string(stdout)))
-	assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build Unknown",
-		"The output of the command property get --apibuild does not contain \"whisk API build Unknown\".")
+	assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), common.PropDisplayAPIBuild+" Unknown",
+		"The output of the command property get --apibuild does not contain "+common.PropDisplayAPIBuild+" Unknown")
 	assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "Unable to obtain API build information",
 		"The output of the command property get --apibuild does not contain \"Unable to obtain API build information\".")
-	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build 20",
-		"The output of the command property get --apibuild does not contain \"whisk API build 20\".")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), common.PropDisplayAPIBuild+" 20",
+		"The output of the command property get --apibuild does not contain"+common.PropDisplayAPIBuild+" 20")
 	common.DeleteFile(tmpProp)
 }
 
@@ -390,8 +391,8 @@
 	assert.Equal(t, nil, err, "The command property set --apihost failed to run.")
 	stdout, err := wsk.RunCommand("property", "get", "-i", "--apibuild")
 	assert.NotEqual(t, nil, err, "The command property get -i --apibuild does not raise any error.")
-	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build Unknown",
-		"The output of the command property get --apibuild does not contain \"whisk API build Unknown\".")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), common.PropDisplayAPIBuild+" Unknown",
+		"The output of the command property get --apibuild does not contain"+common.PropDisplayAPIBuild+" Unknown")
 	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "Unable to obtain API build information",
 		"The output of the command property get --apibuild does not contain \"Unable to obtain API build information\".")
 }
@@ -409,12 +410,12 @@
 	stdout, err = wsk.RunCommand("property", "get", "-i", "--apibuild")
 	println(common.RemoveRedundentSpaces(string(stdout)))
 	//assert.Equal(t, nil, err, "The command property get -i --apibuild failed to run.")
-	assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build Unknown",
-		"The output of the command property get --apibuild does not contain \"whisk API build Unknown\".")
+	assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), common.PropDisplayAPIBuild+" Unknown",
+		"The output of the command property get --apibuild does not contain "+common.PropDisplayAPIBuild+" Unknown")
 	assert.NotContains(t, common.RemoveRedundentSpaces(string(stdout)), "Unable to obtain API build information",
 		"The output of the command property get --apibuild does not contain \"Unable to obtain API build information\".")
-	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), "whisk API build 20",
-		"The output of the command property get --apibuild does not contain \"whisk API build 20\".")
+	assert.Contains(t, common.RemoveRedundentSpaces(string(stdout)), common.PropDisplayAPIBuild+" 20",
+		"The output of the command property get --apibuild does not contain "+common.PropDisplayAPIBuild+" 20")
 	common.DeleteFile(tmpProp)
 }
 
diff --git a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala
index 6185c18..66106b4 100644
--- a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala
+++ b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala
@@ -86,7 +86,7 @@
 
   it should "show cli build version" in {
     val stdout = wsk.cli(Seq("property", "get", "--cliversion")).stdout
-    stdout should include regex ("""(?i)whisk CLI version\s+201.*""")
+    stdout should include regex ("""(?i)whisk CLI version\s+20.*""")
   }
 
   it should "show api version" in {
diff --git a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskConfigTests.scala b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskConfigTests.scala
index a7e55be..91613d6 100644
--- a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskConfigTests.scala
+++ b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskConfigTests.scala
@@ -126,7 +126,7 @@
       val rr = wsk.cli(Seq("property", "get", "--apibuild", "--apibuildno", "-i"), env = env)
       rr.stderr should not include ("https:///api/v1: http: no Host in request URL")
       rr.stdout should not include regex("Cannot determine API build")
-      rr.stdout should include regex ("""(?i)whisk API build\s+201.*""")
+      rr.stdout should include regex ("""(?i)whisk API build\s+20.*""")
       rr.stdout should include regex ("""(?i)whisk API build number\s+.*""")
     } finally {
       tmpProps.delete()
@@ -259,7 +259,7 @@
       val env = Map("WSK_CONFIG_FILE" -> tmpwskprops.getAbsolutePath())
       wsk.cli(Seq("property", "set", "-i") ++ wskprops.overrides, env = env)
       val stdout = wsk.cli(Seq("property", "get", "--apibuild", "-i"), env = env).stdout
-      stdout should include regex ("""(?i)whisk API build\s+201.*""")
+      stdout should include regex ("""(?i)whisk API build\s+20.*""")
     } finally {
       tmpwskprops.delete()
     }
