diff --git a/lms/static/js/spec/student_account/multiple_enterprise_spec.js b/lms/static/js/spec/student_account/multiple_enterprise_spec.js
index 0c7d8be5699d5b2351035ff31f2e6b1687e42482..a9c34fb4d770032c65073ae6f04278ce307acb18 100644
--- a/lms/static/js/spec/student_account/multiple_enterprise_spec.js
+++ b/lms/static/js/spec/student_account/multiple_enterprise_spec.js
@@ -9,7 +9,8 @@ define([
         describe('MultipleEnterpriseInterface', function() {
             var LEARNER_URL = '/enterprise/api/v1/enterprise-learner/?username=test-learner',
                 NEXT_URL = '/dashboard',
-                REDIRECT_URL = '/enterprise/select/active/?success_url=%2Fdashboard';
+                REDIRECT_URL = '/enterprise/select/active/?success_url=%2Fdashboard',
+                ENTERPRISE_ACTIVATION_URL = '/enterprise/select/active';
 
             beforeEach(function() {
                 // Mock the redirect call
@@ -39,6 +40,75 @@ define([
                 expect(MultipleEnterpriseInterface.redirect).toHaveBeenCalledWith(REDIRECT_URL);
             });
 
+            it('checks bypass of enterprise selection page in case of enterprise in URL', function() {
+                // Spy on Ajax requests
+                var requests = AjaxHelpers.requests(this);
+                spyOn(MultipleEnterpriseInterface, 'getEnterpriseFromUrl').and.returnValue('SomeEnterprise');
+                spyOn(MultipleEnterpriseInterface, 'checkEnterpriseExists').and.returnValue(true);
+
+                // Attempt to fetch a learner
+                MultipleEnterpriseInterface.check(NEXT_URL);
+
+                // Expect that the correct request was made to the server
+                AjaxHelpers.expectRequest(
+                    requests,
+                    'GET',
+                    LEARNER_URL,
+                    null
+                );
+
+                // Simulate a successful response from the server
+                AjaxHelpers.respondWithJson(requests, {count: 2});
+
+                AjaxHelpers.expectRequest(
+                    requests,
+                    'POST',
+                    ENTERPRISE_ACTIVATION_URL,
+                    $.param({
+                        enterprise: 'SomeEnterprise'
+                    })
+                );
+                AjaxHelpers.respondWithNoContent(requests);
+
+                // Verify that the user was redirected correctly
+                expect(MultipleEnterpriseInterface.redirect).toHaveBeenCalledWith(NEXT_URL);
+            });
+
+            it('checks enterprise selection page redirect in case of enterprise activation failure', function() {
+                // Spy on Ajax requests
+                var requests = AjaxHelpers.requests(this);
+                spyOn(MultipleEnterpriseInterface, 'getEnterpriseFromUrl').and.returnValue('SomeEnterprise');
+                spyOn(MultipleEnterpriseInterface, 'checkEnterpriseExists').and.returnValue(true);
+
+                // Attempt to fetch a learner
+                MultipleEnterpriseInterface.check(NEXT_URL);
+
+                // Expect that the correct request was made to the server
+                AjaxHelpers.expectRequest(
+                    requests,
+                    'GET',
+                    LEARNER_URL,
+                    null
+                );
+
+                // Simulate a successful response from the server
+                AjaxHelpers.respondWithJson(requests, {count: 2});
+
+                AjaxHelpers.expectRequest(
+                    requests,
+                    'POST',
+                    ENTERPRISE_ACTIVATION_URL,
+                    $.param({
+                        enterprise: 'SomeEnterprise'
+                    })
+                );
+                // Simulate an error response from the server
+                AjaxHelpers.respondWithError(requests);
+
+                // Verify that the user was redirected correctly
+                expect(MultipleEnterpriseInterface.redirect).toHaveBeenCalledWith(REDIRECT_URL);
+            });
+
             it('gets learner information and checks that enterprise selection page is bypassed', function() {
                 // Spy on Ajax requests
                 var requests = AjaxHelpers.requests(this);
diff --git a/lms/static/js/student_account/multiple_enterprise.js b/lms/static/js/student_account/multiple_enterprise.js
index 9dadd3d0a77d86a3fdae235137b44fb27b53d442..535713395d13c91f597536d88f299ffb487dbc86 100644
--- a/lms/static/js/student_account/multiple_enterprise.js
+++ b/lms/static/js/student_account/multiple_enterprise.js
@@ -5,7 +5,8 @@
 
             urls: {
                 learners: '/enterprise/api/v1/enterprise-learner/',
-                multipleEnterpriseUrl: '/enterprise/select/active/?success_url='
+                multipleEnterpriseUrl: '/enterprise/select/active/?success_url=',
+                enterpriseActivationUrl: '/enterprise/select/active'
             },
 
             headers: {
@@ -15,12 +16,17 @@
             /**
              * Fetch the learner data, then redirect the user to a enterprise selection page if multiple
              * enterprises were found.
-             * @param  {string} nextUrl The URL to redirect to after multiple enterprise selection.
+             * @param  {string} nextUrl The URL to redirect to after multiple enterprise selection or incase
+             * the selection page is bypassed e.g. when dealing with direct enrolment urls.
              */
             check: function(nextUrl) {
-                var redirectUrl = this.urls.multipleEnterpriseUrl + encodeURIComponent(nextUrl);
+                var view = this;
+                var selectionPageUrl = this.urls.multipleEnterpriseUrl + encodeURIComponent(nextUrl);
                 var username = Utils.userFromEdxUserCookie().username;
                 var next = nextUrl || '/';
+                var enterpriseInUrl = this.getEnterpriseFromUrl(nextUrl);
+                var userInEnterprise = false;
+                var userWithMultipleEnterprises = false;
                 $.ajax({
                     url: this.urls.learners + '?username=' + username,
                     type: 'GET',
@@ -28,22 +34,53 @@
                     headers: this.headers,
                     context: this
                 }).fail(function() {
-                    this.redirect(next);
+                    view.redirect(next);
                 }).done(function(response) {
-                    if (response.count > 1 && redirectUrl) {
-                        this.redirect(redirectUrl);
+                    userWithMultipleEnterprises = (response.count > 1);
+                    if (userWithMultipleEnterprises) {
+                        if (enterpriseInUrl) {
+                            userInEnterprise = view.checkEnterpriseExists(response, enterpriseInUrl);
+                            if (userInEnterprise) {
+                                view.activate(enterpriseInUrl).fail(function() {
+                                    view.redirect(selectionPageUrl);
+                                }).done(function() {
+                                    view.redirect(next);
+                                });
+                            }
+                        }
+                        view.redirect(selectionPageUrl);
                     } else {
-                        this.redirect(next);
+                        view.redirect(next);
                     }
                 });
             },
 
-            /**
-             * Redirect to a URL.
-             * @param  {string} url The URL to redirect to.
-             */
             redirect: function(url) {
                 window.location.href = url;
+            },
+
+            activate: function(enterprise) {
+                return $.ajax({
+                    url: this.urls.enterpriseActivationUrl,
+                    method: 'POST',
+                    headers: {'X-CSRFToken': $.cookie('csrftoken')},
+                    data: {enterprise: enterprise}
+                });
+            },
+
+            getEnterpriseFromUrl: function(url) {
+                var regex;
+                regex = RegExp('/enterprise/.*/course/.*/enroll');
+                if (typeof url !== 'string' || !regex.test(url)) {
+                    return void(0);
+                }
+                return url.split('/')[2];
+            },
+
+            checkEnterpriseExists: function(response, enterprise) {
+                return response.results.some(function(item) {
+                    return item.enterprise_customer.uuid === enterprise;
+                });
             }
         };