diff --git a/docs/examples/qr_move.rst b/docs/examples/qr_move.rst
index df2b3d6d7..c7de92256 100644
--- a/docs/examples/qr_move.rst
+++ b/docs/examples/qr_move.rst
@@ -187,18 +187,17 @@ to see the requirements for the ``evt.EVT_C_MOVE`` handler.
             yield 0xC000, None
             return
 
-        # Check move_aet is known
         # get_known_aet() is here to represent a user-implemented method of
-        #   getting known AEs
+        #   getting known AEs, for this example it returns a dict with the
+        #   AE titles as keys
         known_aet_dict = get_known_aet()
-        if move_aet not in known_aet_dict:
+        try:
+            (addr, port) = known_aet_dict[event.move_destination]
+        except KeyError:
             # Unknown destination AE
             yield (None, None)
             return
 
-        # Assuming known_ae_dict is {b'STORE_SCP       ' : ('127.0.0.1', 11113)}
-        (addr, port) = known_ae_dict[move_ae]
-
         # Yield the IP address and listen port of the destination AE
         yield (addr, port)
 
@@ -220,7 +219,7 @@ to see the requirements for the ``evt.EVT_C_MOVE`` handler.
         # Skip the other QR levels...
 
         # Yield the total number of C-STORE sub-operations required
-        yield len(instances)
+        yield len(matching)
 
         # Yield the matching instances
         for instance in matching:
diff --git a/pynetdicom/_handlers.py b/pynetdicom/_handlers.py
index 4e4a4c44c..6cbea52cf 100644
--- a/pynetdicom/_handlers.py
+++ b/pynetdicom/_handlers.py
@@ -2431,8 +2431,9 @@ def doc_handle_move(event):
           that is running the service that received the C-MOVE request.
         * ``context`` : the presentation context the request was sent under
           as a ``presentation.PresentationContextTuple``.
-        * ``description`` : a description of the event that occurred as str.
-        * ``name`` : the name of the event that occurred as str.
+        * ``description`` : a description of the event that occurred as
+          ``str``.
+        * ``name`` : the name of the event that occurred as ``str``.
         * ``request`` : the received
           :py:class:`C-MOVE request <pynetdicom.dimse_primitives.C_MOVE>`
         * ``timestamp`` : the
@@ -2447,9 +2448,11 @@ def doc_handle_move(event):
           a deferred read when decoding data, if the decode fails the returned
           ``Dataset`` will only raise an exception at the time of use.
         * ``is_cancelled`` : returns ``True`` if a
-          C-CANCEL request has been received, False otherwise. If a C-CANCEL
-          is received then the handler should yield a ``(0xFE00, None)``
-          status/dataset pair and return.
+          C-CANCEL request has been received, ``False`` otherwise. If a
+          C-CANCEL is received then the handler should yield a ``(0xFE00,
+          None)`` status/dataset pair and return.
+        * ``move_destination`` : returns the request's (0000,0600) *Move
+          Destination* AE title as a length 16 ``bytes``.
 
     Yields
     ------
diff --git a/pynetdicom/events.py b/pynetdicom/events.py
index e6fe66118..4b35f225b 100644
--- a/pynetdicom/events.py
+++ b/pynetdicom/events.py
@@ -253,8 +253,9 @@ class Event(object):
         Returns
         -------
         list of pydicom.tag.Tag
-            The *Attribute Identifier List* tags, may be an empty list if no
-            *Attribute Identifier List* was included in the C-GET request.
+            The (0000,1005) *Attribute Identifier List* tags, may be an empty
+            list if no *Attribute Identifier List* was included in the C-GET
+            request.
 
         Raises
         ------
@@ -549,6 +550,29 @@ class Event(object):
         )
         return self._get_dataset("ModificationList", msg)
 
+    @property
+    def move_destination(self):
+        """Return a C-MOVE request's `Move Destination` as bytes.
+
+        Returns
+        -------
+        bytes
+            The request's (0000,0600) *Move Destination* value as length 16
+            bytes (including trailing spaces as padding if required).
+
+        Raises
+        ------
+        AttributeError
+            If the corresponding event is not a C-MOVE request.
+        """
+        try:
+            return self.request.MoveDestination
+        except AttributeError:
+            raise AttributeError(
+                "The corresponding event is not a C-MOVE request and has no "
+                "'Move Destination' parameter"
+            )
+
     @property
     def name(self):
         """Return the name of the event as a str."""

not executable example in qr_move.rst
In the SCP part of the C-MOVE example it is unclear where the variable move_aet is defined. Is this event.move_aet ? The name also changes to move_ae later.

The name of the variable known_aet_dict also changes to known_ae_dict a few lines below.
diff --git a/pynetdicom/tests/test_events.py b/pynetdicom/tests/test_events.py
index 35bcb31e4..aee4f2d63 100644
--- a/pynetdicom/tests/test_events.py
+++ b/pynetdicom/tests/test_events.py
@@ -123,6 +123,13 @@ class TestEvent(object):
         with pytest.raises(AttributeError, match=msg):
             event.identifier
 
+        msg = (
+            r"The corresponding event is not a C-MOVE request "
+            r"and has no 'Move Destination' parameter"
+        )
+        with pytest.raises(AttributeError, match=msg):
+            event.move_destination
+
         msg = (
             r"The corresponding event is not an N-ACTION request and has no "
             r"'Action Information' parameter"
diff --git a/pynetdicom/tests/test_service_qr.py b/pynetdicom/tests/test_service_qr.py
index 655f690bd..089513ca7 100644
--- a/pynetdicom/tests/test_service_qr.py
+++ b/pynetdicom/tests/test_service_qr.py
@@ -4233,6 +4233,51 @@ class TestQRMoveServiceClass(object):
 
         scp.shutdown()
 
+    def test_scp_handler_move_dest(self):
+        """Test hander event's context attribute"""
+        attrs = {}
+        def handle(event):
+            attrs['request'] = event.request
+            attrs['identifier'] = event.identifier
+            attrs['assoc'] = event.assoc
+            attrs['context'] = event.context
+            attrs['destination'] = event.move_destination
+
+            yield self.destination
+            yield 1
+            yield 0xFF00, self.ds
+
+        def handle_store(event):
+            return 0x0000
+
+        handlers = [(evt.EVT_C_MOVE, handle), (evt.EVT_C_STORE, handle_store)]
+
+        self.ae = ae = AE()
+        ae.add_supported_context(PatientRootQueryRetrieveInformationModelMove)
+        ae.add_supported_context(CTImageStorage, scu_role=False, scp_role=True)
+        ae.add_requested_context(PatientRootQueryRetrieveInformationModelMove)
+        ae.add_requested_context(CTImageStorage)
+        scp = ae.start_server(('', 11112), block=False, evt_handlers=handlers)
+
+        ae.acse_timeout = 5
+        ae.dimse_timeout = 5
+        assoc = ae.associate('localhost', 11112)
+        assert assoc.is_established
+        result = assoc.send_c_move(self.query, b'TESTMOVE', query_model='P')
+        status, identifier = next(result)
+        assert status.Status == 0xFF00
+        assert identifier is None
+        status, identifier = next(result)
+        assert status.Status == 0x0000
+        assert identifier is None
+        pytest.raises(StopIteration, next, result)
+        assoc.release()
+        assert assoc.is_released
+
+        assert attrs['destination'] == b'TESTMOVE        '
+
+        scp.shutdown()
+
     def test_scp_cancelled(self):
         """Test is_cancelled works as expected."""
         cancel_results = []

pip install -e .
parse_log_pytest
requirements.txt
pytest pytest-cov
apt-get update apt-get install -y gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
coverage==7.8.0
exceptiongroup==1.2.2
iniconfig==2.1.0
packaging==24.2
pluggy==1.5.0
pydicom==2.4.4
-e git+https://github.com/pydicom/pynetdicom.git@fd33b8819f46d4c06dfae9dab73b2e291d4c78f2#egg=pynetdicom
pytest==8.3.5
pytest-cov==6.0.0
tomli==2.2.1

name: pynetdicom
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==7.8.0
      - exceptiongroup==1.2.2
      - iniconfig==2.1.0
      - packaging==24.2
      - pluggy==1.5.0
      - pydicom==2.4.4
      - pytest==8.3.5
      - pytest-cov==6.0.0
      - tomli==2.2.1
prefix: /opt/conda/envs/pynetdicom

pynetdicom/tests/test_events.py::TestEvent::test_raises
pynetdicom/tests/test_events.py::TestEvent::test_action_information pynetdicom/tests/test_events.py::TestEvent::test_attribute_list pynetdicom/tests/test_events.py::TestEvent::test_event_information pynetdicom/tests/test_events.py::TestEvent::test_modification_list pynetdicom/tests/test_events.py::TestEvent::test_empty_dataset pynetdicom/tests/test_events.py::TestEvent::test_empty_attr_identifiers pynetdicom/tests/test_events.py::TestEvent::test_attr_identifiers pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_bad_req_identifier pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_handler_status_dataset pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_handler_status_dataset_multi pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_handler_status_int pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_handler_status_unknown pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_handler_status_invalid pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_handler_status_none pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_handler_exception_prior pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_handler_exception_default pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_handler_exception_during pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_handler_bad_identifier pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_pending_cancel pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_pending_success pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_pending_failure pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_multi_pending_cancel pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_multi_pending_success pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_multi_pending_failure pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_scp_handler_context pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_scp_handler_assoc pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_scp_handler_request pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_scp_handler_identifier pynetdicom/tests/test_service_qr.py::TestQRFindServiceClass::test_scp_cancelled pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_bad_req_identifier pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_bad_subops pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_status_dataset pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_status_dataset_multi pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_status_int pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_status_unknown pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_status_invalid pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_status_none pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_exception_default pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_exception_prior pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_exception_before pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_exception_after_subops pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_exception_during pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_bad_dataset pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_invalid_dataset pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_store_handler_exception pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_scp_basic pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_scp_store_failure pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_scp_store_warning pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_pending_success pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_pending_warning pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_pending_failure pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_multi_pending_success pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_multi_pending_warning pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_multi_pending_failure pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_failure pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_success pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_success_user pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_cancel pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_warning pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_context pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_request pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_assoc pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_get_handler_identifier pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_store_handler_context pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_store_handler_request pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_store_handler_assoc pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_store_handler_dataset pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_store_handler_bad pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_contexts pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_scp_cancelled pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_subop_message_id pynetdicom/tests/test_service_qr.py::TestQRGetServiceClass::test_subop_message_id_rollover pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_bad_req_identifier pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_bad_yield_destination pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_bad_yield_subops pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_bad_destination pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_bad_subops pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_bad_aet pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_status_dataset pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_status_dataset_multi pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_status_int pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_status_unknown pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_status_invalid pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_status_none pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_exception_default pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_exception_prior pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_exception_destination pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_exception_subops pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_exception_ops pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_exception_during pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_bad_dataset pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_invalid_dataset pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_scp_basic pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_scp_store_failure pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_handler_warning pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_scp_store_warning pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_pending_success pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_pending_warning pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_pending_failure pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_multi_pending_success pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_multi_pending_warning pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_multi_pending_failure pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_failure pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_success pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_cancel pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_move_warning pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_no_associate pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_scp_handler_context pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_scp_handler_assoc pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_scp_handler_request pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_scp_handler_identifier pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_scp_handler_move_dest pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_scp_cancelled pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_subop_message_id pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_subop_message_id_rollover pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_success_no_warn pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_success_warn pynetdicom/tests/test_service_qr.py::TestQRMoveServiceClass::test_success_fail pynetdicom/tests/test_service_qr.py::TestQRCompositeInstanceWithoutBulk::test_pixel_data pynetdicom/tests/test_service_qr.py::TestQRCompositeInstanceWithoutBulk::test_waveform_sequence
pynetdicom/tests/test_events.py::test_intervention_namedtuple pynetdicom/tests/test_events.py::test_notification_namedtuple pynetdicom/tests/test_events.py::test_intervention_global pynetdicom/tests/test_events.py::test_notification_global pynetdicom/tests/test_events.py::TestEvent::test_init pynetdicom/tests/test_events.py::TestEvent::test_is_cancelled_non pynetdicom/tests/test_events.py::TestEvent::test_is_cancelled pynetdicom/tests/test_events.py::TestEvent::test_assign_existing pynetdicom/tests/test_events.py::test_default_handlers[_async_ops_handler] pynetdicom/tests/test_events.py::test_default_handlers[_sop_common_handler] pynetdicom/tests/test_events.py::test_default_handlers[_sop_extended_handler] pynetdicom/tests/test_events.py::test_default_handlers[_user_identity_handler] pynetdicom/tests/test_events.py::test_default_handlers[_c_echo_handler] pynetdicom/tests/test_events.py::test_default_handlers[_c_get_handler] pynetdicom/tests/test_events.py::test_default_handlers[_c_find_handler] pynetdicom/tests/test_events.py::test_default_handlers[_c_move_handler] pynetdicom/tests/test_events.py::test_default_handlers[_c_store_handler] pynetdicom/tests/test_events.py::test_default_handlers[_n_action_handler] pynetdicom/tests/test_events.py::test_default_handlers[_n_create_handler] pynetdicom/tests/test_events.py::test_default_handlers[_n_delete_handler] pynetdicom/tests/test_events.py::test_default_handlers[_n_event_report_handler] pynetdicom/tests/test_events.py::test_default_handlers[_n_get_handler] pynetdicom/tests/test_events.py::test_default_handlers[_n_set_handler] pynetdicom/tests/test_service_qr.py::test_unknown_sop_class pynetdicom/tests/test_service_qr.py::TestBasicWorklistServiceClass::test_bad_abstract_syntax_raises
docs/examples/qr_move.rst pynetdicom/events.py pynetdicom/_handlers.py
docs/examples/qr_move.rst pynetdicom/events.py pynetdicom/_handlers.py