diff --git a/parsers/manifest_parser.go b/parsers/manifest_parser.go
index c275731..16036b2 100644
--- a/parsers/manifest_parser.go
+++ b/parsers/manifest_parser.go
@@ -513,21 +513,23 @@
 	var actionFilePath string
 	var zipFileName string
 	exec := new(whisk.Exec)
+	f := wskenv.InterpolateStringWithEnvVar(action.Function)
+	interpolatedActionFunction := f.(string)
 
 	// check if action function is pointing to an URL
 	// we do not support if function is pointing to remote directory
 	// therefore error out if there is a combination of http/https ending in a directory
-	if strings.HasPrefix(action.Function, HTTP) || strings.HasPrefix(action.Function, HTTPS) {
-		if len(path.Ext(action.Function)) == 0 {
+	if strings.HasPrefix(interpolatedActionFunction, HTTP) || strings.HasPrefix(interpolatedActionFunction, HTTPS) {
+		if len(path.Ext(interpolatedActionFunction)) == 0 {
 			err := wski18n.T(wski18n.ID_ERR_ACTION_FUNCTION_REMOTE_DIR_NOT_SUPPORTED_X_action_X_url_X,
 				map[string]interface{}{
 					wski18n.KEY_ACTION: action.Name,
-					wski18n.KEY_URL:    action.Function})
+					wski18n.KEY_URL:    interpolatedActionFunction})
 			return actionFilePath, nil, wskderrors.NewYAMLFileFormatError(manifestFilePath, err)
 		}
-		actionFilePath = action.Function
+		actionFilePath = interpolatedActionFunction
 	} else {
-		actionFilePath = strings.TrimRight(manifestFilePath, manifestFileName) + action.Function
+		actionFilePath = strings.TrimRight(manifestFilePath, manifestFileName) + interpolatedActionFunction
 	}
 
 	if utils.IsDirectory(actionFilePath) {
diff --git a/parsers/manifest_parser_test.go b/parsers/manifest_parser_test.go
index 087edb1..1ff08f3 100644
--- a/parsers/manifest_parser_test.go
+++ b/parsers/manifest_parser_test.go
@@ -53,9 +53,10 @@
 	TEST_MSG_ACTION_DOCKER_IMAGE_MISMATCH           = "Docker action image had a value mismatch."
 	TEST_MSG_ACTION_CODE_MISSING                    = "Action code is missing."
 	TEST_MSG_INVALID_ACTION_ANNOTATION              = "Action annotations are invalid"
+	TEST_MSG_ACTION_FUNCTION_PATH_MISSING           = "Action function path missing"
 
 	// local error messages
-	TEST_ERROR_MANIFEST_PARSE_FAILURE     = "Manifest [%s]: Failed to parse."
+	TEST_ERROR_MANIFEST_PARSE_FAILURE     = "Manifest [%s]: Failed to parse. Error: %s"
 	TEST_ERROR_MANIFEST_READ_FAILURE      = "Manifest [%s]: Failed to ReadFile()."
 	TEST_ERROR_MANIFEST_DATA_UNMARSHALL   = "Manifest [%s]: Failed to Unmarshall manifest."
 	TEST_ERROR_COMPOSE_ACTION_FAILURE     = "Manifest [%s]: Failed to compose actions."
@@ -77,7 +78,7 @@
 	p := NewYAMLParser()
 	m, err := p.ParseManifest(manifestFile)
 	if err != nil {
-		assert.Fail(t, fmt.Sprintf(TEST_ERROR_MANIFEST_PARSE_FAILURE, manifestFile))
+		assert.Fail(t, fmt.Sprintf(TEST_ERROR_MANIFEST_PARSE_FAILURE, manifestFile, err.Error()))
 	}
 	return p, m, err
 }
@@ -936,6 +937,25 @@
 	}
 }
 
+func TestComposeActionsForEnvVariableInFunction(t *testing.T) {
+	os.Setenv("OPENWHISK_FUNCTION_FILE", "../src/integration/helloworld/actions/hello.js")
+	os.Setenv("OPENWHISK_FUNCTION_PYTHON", "../src/integration/helloworld/actions/hello")
+	os.Setenv("OPENWHISK_FUNCTION_GITHUB", "raw.githubusercontent.com/apache/incubator-openwhisk-wskdeploy/master/tests/src/integration/helloworld/actions/hello")
+
+	file := "../tests/dat/manifest_data_compose_actions_for_function_with_env_variable.yaml"
+	p, m, _ := testLoadParseManifest(t, file)
+
+	actions, err := p.ComposeActionsFromAllPackages(m, m.Filepath, whisk.KeyValue{})
+	assert.Nil(t, err, fmt.Sprintf(TEST_ERROR_COMPOSE_ACTION_FAILURE, file))
+
+	for _, action := range actions {
+		assert.NotNil(t, action.Action.Code, fmt.Sprintf(TEST_MSG_ACTION_FUNCTION_PATH_MISSING))
+	}
+	os.Unsetenv("OPENWHISK_FUNCTION_FILE")
+	os.Unsetenv("OPENWHISK_FUNCTION_PYTHON")
+	os.Unsetenv("OPENWHISK_FUNCTION_GITHUB")
+}
+
 // Test 14: validate manifest_parser.ComposeActions() method
 func TestComposeActionsForLimits(t *testing.T) {
 
diff --git a/tests/dat/manifest_data_compose_actions_for_function_with_env_variable.yaml b/tests/dat/manifest_data_compose_actions_for_function_with_env_variable.yaml
new file mode 100644
index 0000000..5756bf0
--- /dev/null
+++ b/tests/dat/manifest_data_compose_actions_for_function_with_env_variable.yaml
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more contributor
+# license agreements; and to You under the Apache License, Version 2.0.
+#
+
+packages:
+    helloworld:
+        actions:
+            hello1:
+                function: ${OPENWHISK_FUNCTION_FILE}
+                runtime: nodejs:6
+            hello2:
+                function: $OPENWHISK_FUNCTION_FILE
+                runtime: nodejs:6
+            hello3:
+                function: ${OPENWHISK_FUNCTION_PYTHON}.py
+            hello4:
+                function: https://${OPENWHISK_FUNCTION_GITHUB}.js
