diff --git a/util/.util.go.swp b/util/.util.go.swp
new file mode 100644
index 0000000..da82acd
--- /dev/null
+++ b/util/.util.go.swp
Binary files differ
diff --git a/util/util.go b/util/util.go
index ad936ff..0ae4108 100644
--- a/util/util.go
+++ b/util/util.go
@@ -14,12 +14,26 @@
 
 package util
 
+
 import (
 	"github.com/google/uuid"
 	"net/http"
+	"net/url"
 	"time"
+	"github.com/apid/apid-core"
 )
 
+const (
+	configfwdProxyURL	=   "configfwdProxyURL"
+	configfwdProxyUser	=   "configfwdProxyUser"
+	configfwdProxyPasswd	=   "configfwdProxyPasswd"
+	configfwdProxyProtocol  =   "configfwdProxyProtocol"
+	configfwdProxyPort      =   "configfwdProxyPort"
+)
+
+var config apid.ConfigService
+
+
 func IsValidUUID(id string) bool {
 	_, err := uuid.Parse(id)
 	return err == nil
@@ -29,6 +43,41 @@
 	return uuid.New().String()
 }
 
+// Returns the http.Transport with Forward Proxy params set (if Configured).
+func Transport() *http.Transport {
+	var tr http.Transport
+	var pURL *url.URL
+	var err error
+	// Apigee Forward Proxy
+	fwdPrxy := config.GetString(configfwdProxyURL)
+	fwdPrxyPro := config.GetString(configfwdProxyProtocol)
+	fwdPrxyUser := config.GetString(configfwdProxyUser)
+	fwdPrxyPass := config.GetString(configfwdProxyPasswd)
+	fwdPrxyPort := config.GetString(configfwdProxyPort)
+
+	if fwdPrxy != "" && fwdPrxyPro != "" && fwdPrxyUser != "" && fwdPrxyPort != "" {
+		pURL, err = url.Parse(fwdPrxyPro + "//" + fwdPrxyUser + ":" + fwdPrxyPass + "@" + fwdPrxy + ":" + fwdPrxyPort)
+		if err != nil {
+			panic("Error parsing proxy URL")
+		}
+	} else if fwdPrxy != "" && fwdPrxyPro != "" && fwdPrxyPort != "" {
+		pURL, err = url.Parse(fwdPrxyPro + "//" + fwdPrxy + ":" + fwdPrxyPort)
+		if err != nil {
+			panic("Error parsing proxy URL")
+		}
+	}
+
+	if pURL != nil {
+		tr = http.Transport{
+			Proxy:           http.ProxyURL(pURL),
+		}
+	} else {
+		tr = http.Transport{
+		}
+	}
+	return &tr
+}
+
 // distributeEvents() receives elements from deliverChan, and send them to subscribers
 // Sending a `chan interface{}` to addSubscriber adds a new subscriber.
 // It closes the subscriber channel after sending the element.
