diff --git a/CHANGES.rst b/CHANGES.rst
index ea20b1f0a..befdb874b 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -10,6 +10,10 @@ https://zope.readthedocs.io/en/2.13/CHANGES.html
 4.5.2 (unreleased)
 ------------------
 
+- Provide a more senseful ``OFS.SimpleItem.Item_w__name__.id``
+  to avoid bugs by use of deprecated direct ``id`` access
+  (as e.g. (`#903 <https://github.com/zopefoundation/Zope/issues/903>`_).
+
 - Update dependencies to the latest releases that still support Python 2.
 
 - Update to ``zope.interface > 5.1.0`` to fix a memory leak.
diff --git a/src/OFS/SimpleItem.py b/src/OFS/SimpleItem.py
index d5b5d6ec8..186b7f1b3 100644
--- a/src/OFS/SimpleItem.py
+++ b/src/OFS/SimpleItem.py
@@ -446,6 +446,10 @@ class Item_w__name__(Item):
         """
         return self.__name__
 
+    # Alias (deprecated) `id` to `getId()` (but avoid recursion)
+    id = ComputedAttribute(
+        lambda self: self.getId() if "__name__" in self.__dict__ else "")
+
     def title_or_id(self):
         """Return the title if it is not blank and the id otherwise.
         """

diff --git a/src/OFS/tests/testSimpleItem.py b/src/OFS/tests/testSimpleItem.py
index de08de620..c1038c917 100644
--- a/src/OFS/tests/testSimpleItem.py
+++ b/src/OFS/tests/testSimpleItem.py
@@ -79,6 +79,17 @@ class TestItem_w__name__(unittest.TestCase):
 
         verifyClass(IItemWithName, Item_w__name__)
 
+    def test_id(self):
+        from OFS.SimpleItem import Item_w__name__
+        itm = Item_w__name__()
+        # fall back to inherited `id`
+        self.assertEqual(itm.id, "")
+        itm.id = "id"
+        self.assertEqual(itm.id, "id")
+        del itm.id
+        itm._setId("name")
+        self.assertEqual(itm.id, "name")
+
 
 class TestSimpleItem(unittest.TestCase):
 

(Export/)Import broken for "OFS.SimpleItem.Item_w__name__" instances
## BUG/PROBLEM REPORT
If an instance of `OFS.SimpleItem.Item_w__name__` (e.g. an `OFS.Image.File` instance) is exported, a subsequent import fails with `BadRequest: ('Empty or invalid id specified', '')`.

The reason: for `Item_w__name__` instances, `id` must not be used (it is always `''`); for those instances `getId()` must be used to access the object's id.
`OFS.ObjectManager.ObjectManager._importObjectFromFile` violates this restriction.

### What version of Python and Zope/Addons I am using:
current Zope 4.x (likely Zope 5.x as well)

src/OFS/tests/testSimpleItem.py::TestItem_w__name__::test_id
src/OFS/tests/testSimpleItem.py::TestItem::test_conforms_to_IItem src/OFS/tests/testSimpleItem.py::TestItem::test_conforms_to_IManageable src/OFS/tests/testSimpleItem.py::TestItem::test_raise_StandardErrorMessage_TaintedString_errorValue src/OFS/tests/testSimpleItem.py::TestItem::test_raise_StandardErrorMessage_str_errorValue src/OFS/tests/testSimpleItem.py::TestItem_w__name__::test_interfaces src/OFS/tests/testSimpleItem.py::TestSimpleItem::test_interfaces src/OFS/tests/testSimpleItem.py::TestSimpleItem::test_standard_error_message_is_called src/OFS/tests/testSimpleItem.py::TestSimpleItem::test_title_and_id_nonascii src/OFS/tests/testSimpleItem.py::TestSimpleItem::test_title_or_id_nonascii