diff --git a/lti_consumer/lti_xblock.py b/lti_consumer/lti_xblock.py
index 86620af6933a85b8954e4faf79e6c141ce72446e..077c27b6f78757a17a2e769acb53997b49f0f50c 100644
--- a/lti_consumer/lti_xblock.py
+++ b/lti_consumer/lti_xblock.py
@@ -1293,7 +1293,7 @@ class LtiConsumerXBlock(StudioEditableXBlockMixin, XBlock):
         except LtiError:
             return Response(status=401)  # Unauthorized in this case.  401 is right
 
-        user = self.runtime.get_real_user(anon_id)
+        user = self.runtime.service(self, 'user').get_user_by_anonymous_id(anon_id)
         if not user:  # that means we can't save to database, as we do not have real user id.
             msg = _("[LTI]: Real user not found against anon_id: {}").format(anon_id)
             log.info(msg)
diff --git a/lti_consumer/outcomes.py b/lti_consumer/outcomes.py
index d715ff245b2a6529dcd2d5a62a1da1f0ae580bb2..b05ae0db0bfbb19be8e44557828919ae7de154b7 100644
--- a/lti_consumer/outcomes.py
+++ b/lti_consumer/outcomes.py
@@ -6,8 +6,8 @@ https://www.imsglobal.org/specs/ltiomv1p0
 """
 
 import logging
-import urllib.parse
 from xml.sax.saxutils import escape
+from urllib.parse import unquote
 
 from lxml import etree
 from xblockutils.resources import ResourceLoader
@@ -183,7 +183,8 @@ class OutcomeService:
             log.debug("[LTI]: %s", error_message)
             return response_xml_template.format(**failure_values)
 
-        real_user = self.xblock.runtime.get_real_user(urllib.parse.unquote(sourced_id.split(':')[-1]))
+        anon_id = unquote(sourced_id.split(':')[-1])
+        real_user = self.xblock.runtime.service(self, 'user').get_user_by_anonymous_id(anon_id)
         if not real_user:  # that means we can't save to database, as we do not have real user id.
             failure_values['imsx_messageIdentifier'] = escape(imsx_message_identifier)
             failure_values['imsx_description'] = "User not found."
diff --git a/lti_consumer/tests/unit/test_lti_xblock.py b/lti_consumer/tests/unit/test_lti_xblock.py
index 2d3561e262fcf0469c7138544af803c04337282f..7b105cb6eefa33a32a74ffb922e66b25dded3cec 100644
--- a/lti_consumer/tests/unit/test_lti_xblock.py
+++ b/lti_consumer/tests/unit/test_lti_xblock.py
@@ -998,7 +998,11 @@ class TestResultServiceHandler(TestLtiConsumerXBlock):
         Test 404 response returned when a user cannot be found
         """
         mock_parse_suffix.return_value = FAKE_USER_ID
-        self.xblock.runtime.get_real_user.return_value = None
+        self.xblock.runtime.service = Mock(
+            return_value=Mock(
+                get_user_by_anonymous_id=Mock(return_value=None)
+            )
+        )
         response = self.xblock.result_service_handler(make_request('', 'GET'))
 
         self.assertEqual(response.status_code, 404)
diff --git a/lti_consumer/tests/unit/test_outcomes.py b/lti_consumer/tests/unit/test_outcomes.py
index d97d926f826436af4518df60645c79f69da9084a..dcc1e5de3462402cd9d3baeb493c00517007fa19 100644
--- a/lti_consumer/tests/unit/test_outcomes.py
+++ b/lti_consumer/tests/unit/test_outcomes.py
@@ -416,7 +416,11 @@ class TestOutcomeService(TestLtiConsumerXBlock):
         Test user not found returns failure response
         """
         request = make_request('')
-        self.xblock.runtime.get_real_user.return_value = None
+        self.xblock.runtime.service = Mock(
+            return_value=Mock(
+                get_user_by_anonymous_id=Mock(return_value=None)
+            )
+        )
         response = self.outcome_servce.handle_request(request)
 
         self.assertIn('failure', response)