diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0f876b9..7175a5d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
 
 ## [Unreleased]
 
+- model: fix edge case for Edm.DateTimeOffset.from_json() without offset - Petr Hanak
+
 ## [1.10.0]
 
 ### Added
diff --git a/pyodata/v2/model.py b/pyodata/v2/model.py
index 065f93e..4f15c84 100644
--- a/pyodata/v2/model.py
+++ b/pyodata/v2/model.py
@@ -529,6 +529,12 @@ class EdmDateTimeOffsetTypTraits(EdmPrefixedTypTraits):
         return f'/Date({ticks}{offset_in_minutes:+05})/'
 
     def from_json(self, value):
+        # special edge case:
+        # datetimeoffset'yyyy-mm-ddThh:mm[:ss]' = defaults to UTC, when offset value is not provided in responde data by service but the metadata is EdmDateTimeOffset
+        # intentionally just for from_json, generation of to_json should always provide timezone info
+        if re.match(r"^/Date\((?P<milliseconds_since_epoch>-?\d+)\)/$", value):
+            value = value.replace(')', '+0000)')
+
         matches = re.match(r"^/Date\((?P<milliseconds_since_epoch>-?\d+)(?P<offset_in_minutes>[+-]\d+)\)/$", value)
         try:
             milliseconds_since_epoch = matches.group('milliseconds_since_epoch')

diff --git a/tests/test_model_v2.py b/tests/test_model_v2.py
index 5bdef48..258dde7 100644
--- a/tests/test_model_v2.py
+++ b/tests/test_model_v2.py
@@ -690,6 +690,9 @@ def test_traits_datetimeoffset(type_date_time_offset):
 def test_traits_datetimeoffset_to_literal(type_date_time_offset):
     """Test Edm.DateTimeOffset trait: Python -> literal"""
 
+    testdate = datetime(1, 1, 1, 0, 0, 0, 0, tzinfo=timezone.utc)
+    assert type_date_time_offset.traits.to_literal(testdate) == "datetimeoffset'0001-01-01T00:00:00+00:00'"
+
     testdate = datetime(2005, 1, 28, 18, 30, 44, 123456, tzinfo=timezone(timedelta(hours=3, minutes=40)))
     assert type_date_time_offset.traits.to_literal(testdate) == "datetimeoffset'2005-01-28T18:30:44.123456+03:40'"
 
@@ -746,7 +749,7 @@ def test_traits_datetimeoffset_from_invalid_literal(type_date_time_offset):
     assert str(e_info.value).startswith('Cannot decode datetimeoffset from value xyz')
 
 
-def test_traits_datetimeoffset_from_odata(type_date_time_offset):
+def test_traits_datetimeoffset_from_json(type_date_time_offset):
     """Test Edm.DateTimeOffset trait: OData -> Python"""
 
     # parsing full representation
@@ -768,6 +771,14 @@ def test_traits_datetimeoffset_from_odata(type_date_time_offset):
     assert testdate.microsecond == 0
     assert testdate.tzinfo == timezone(-timedelta(minutes=5))
 
+    # parsing special edge case with no offset provided, defaults to UTC
+    testdate = type_date_time_offset.traits.from_json("/Date(217567986000)/")
+    assert testdate.year == 1976
+    assert testdate.minute == 33
+    assert testdate.second == 6
+    assert testdate.microsecond == 0
+    assert testdate.tzinfo == timezone.utc
+
     # parsing below lowest value with workaround
     pyodata.v2.model.FIX_SCREWED_UP_MINIMAL_DATETIME_VALUE = True
     testdate = type_date_time_offset.traits.from_json("/Date(-62135596800001+0001)/")

Malformed value for primitive Edm.DateTimeOffset type
We are using pyodata v1.7.1 the whole time and I'm tried to update to the latest v1.10.0 version. But now I get this error when querying data from the odata service:

```
Traceback (most recent call last):
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/pyodata/v2/model.py", line 534, in from_json
    milliseconds_since_epoch = matches.group('milliseconds_since_epoch')
AttributeError: 'NoneType' object has no attribute 'group'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/prefect/engine.py", line 1192, in orchestrate_task_run
    result = await run_sync(task.fn, *args, **kwargs)
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/prefect/utilities/asyncutils.py", line 57, in run_sync_in_worker_thread
    return await anyio.to_thread.run_sync(call, cancellable=True)
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/anyio/to_thread.py", line 31, in run_sync
    return await get_asynclib().run_sync_in_worker_thread(
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 937, in run_sync_in_worker_thread
    return await future
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 867, in run
    result = context.run(func, *args)
  File "/workspace/odatavenv/flow_utilities/prefect/tasks/odata.py", line 60, in fetch_odata
    for cnt, batch in enumerate(batches, start=1):
  File "/workspace/odatavenv/flow_utilities/api/odata.py", line 114, in query_all
    yield list(self.query(skip, top))
  File "/workspace/odatavenv/flow_utilities/api/odata.py", line 98, in query
    response = self._entity_service().skip(skip).top(top).execute()
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/pyodata/v2/service.py", line 349, in execute
    return self._call_handler(response)
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/pyodata/v2/service.py", line 362, in _call_handler
    return self._handler(response)
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/pyodata/v2/service.py", line 1509, in get_entities_handler
    entity = EntityProxy(self._service, self._entity_set, self._entity_set.entity_type, props)
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/pyodata/v2/service.py", line 814, in __init__
    self._cache[type_proprty.name] = type_proprty.from_json(proprties[type_proprty.name])
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/pyodata/v2/model.py", line 872, in from_json
    return self.typ.traits.from_json(value)
  File "/workspace/tmp/venv/odatavenv/lib/python3.10/site-packages/pyodata/v2/model.py", line 537, in from_json
    raise PyODataModelError(
pyodata.exceptions.PyODataModelError: Malformed value /Date(1599659339088)/ for primitive Edm.DateTimeOffset type. Expected format is /Date(<ticks>±<offset>)/
```

Maybe this is related to our instance because they are uncompatible dates (see https://github.com/SAP/python-pyodata/issues/143). 
tests/test_model_v2.py::test_traits_datetimeoffset_from_json
tests/test_model_v2.py::test_edmx tests/test_model_v2.py::test_schema_entity_type_nullable tests/test_model_v2.py::test_schema_entity_type_fixed_length[Name-False-Name tests/test_model_v2.py::test_schema_entity_type_fixed_length[ID-True-Customer tests/test_model_v2.py::test_schema_entity_type_fixed_length[City-False-City tests/test_model_v2.py::test_schema_entity_sets tests/test_model_v2.py::test_edmx_associations tests/test_model_v2.py::test_edmx_navigation_properties tests/test_model_v2.py::test_edmx_function_imports tests/test_model_v2.py::test_edmx_complex_types tests/test_model_v2.py::test_edmx_complex_type_prop_vh tests/test_model_v2.py::test_traits tests/test_model_v2.py::test_parse_datetime_literal[2001-02-03T04:05:06.000007-expected0] tests/test_model_v2.py::test_parse_datetime_literal[2001-02-03T04:05:06-expected1] tests/test_model_v2.py::test_parse_datetime_literal[2001-02-03T04:05-expected2] tests/test_model_v2.py::test_parse_datetime_literal_faulty[2001-02-03T04:05:61] tests/test_model_v2.py::test_parse_datetime_literal_faulty[2001-02-03T04:61] tests/test_model_v2.py::test_parse_datetime_literal_faulty[2001-02-03T24:05] tests/test_model_v2.py::test_parse_datetime_literal_faulty[2001-02-32T04:05] tests/test_model_v2.py::test_parse_datetime_literal_faulty[2001-13-03T04:05] tests/test_model_v2.py::test_parse_datetime_literal_faulty[2001-00-03T04:05] tests/test_model_v2.py::test_parse_datetime_literal_faulty[01-02-03T04:05] tests/test_model_v2.py::test_parse_datetime_literal_faulty[2001-02-03T04:05.AAA] tests/test_model_v2.py::test_parse_datetime_literal_faulty[] tests/test_model_v2.py::test_traits_datetime tests/test_model_v2.py::test_traits_datetime_with_offset_from_json tests/test_model_v2.py::test_traits_datetime_with_offset_to_json[python_datetime0-/Date(217567986123)/-With tests/test_model_v2.py::test_traits_datetime_with_offset_to_json[python_datetime1-/Date(217567986000)/-No tests/test_model_v2.py::test_traits_datetimeoffset tests/test_model_v2.py::test_traits_datetimeoffset_to_literal tests/test_model_v2.py::test_traits_invalid_datetimeoffset_to_literal tests/test_model_v2.py::test_traits_datetimeoffset_to_json[python_datetime0-/Date(217567986123+0000)/-UTC] tests/test_model_v2.py::test_traits_datetimeoffset_to_json[python_datetime1-/Date(217567986000+0840)/-+14 tests/test_model_v2.py::test_traits_datetimeoffset_to_json[python_datetime2-/Date(217567986000-0720)/--12 tests/test_model_v2.py::test_traits_datetimeoffset_from_literal[datetimeoffset'1976-11-23T03:33:06.654321+12:11'-expected0-Full tests/test_model_v2.py::test_traits_datetimeoffset_from_literal[datetimeoffset'1976-11-23T03:33:06+12:11'-expected1-No tests/test_model_v2.py::test_traits_datetimeoffset_from_literal[datetimeoffset'1976-11-23T03:33:06-01:00'-expected2-Negative tests/test_model_v2.py::test_traits_datetimeoffset_from_literal[datetimeoffset'1976-11-23t03:33:06-01:00'-expected3-lowercase tests/test_model_v2.py::test_traits_datetimeoffset_from_literal[datetimeoffset'1976-11-23T03:33:06+00:00'-expected4-+00:00 tests/test_model_v2.py::test_traits_datetimeoffset_from_literal[datetimeoffset'1976-11-23T03:33:06-00:00'-expected5--00:00 tests/test_model_v2.py::test_traits_datetimeoffset_from_literal[datetimeoffset'1976-11-23t03:33:06Z'-expected6-Z tests/test_model_v2.py::test_traits_datetimeoffset_from_literal[datetimeoffset'1976-11-23t03:33:06+12:00'-expected7-On tests/test_model_v2.py::test_traits_datetimeoffset_from_literal[datetimeoffset'1976-11-23t03:33:06-12:00'-expected8-Minimum tests/test_model_v2.py::test_traits_datetimeoffset_from_literal[datetimeoffset'1976-11-23t03:33:06+14:00'-expected9-Maximum tests/test_model_v2.py::test_traits_datetimeoffset_from_invalid_literal tests/test_model_v2.py::test_traits_collections tests/test_model_v2.py::test_type_parsing tests/test_model_v2.py::test_types tests/test_model_v2.py::test_complex_serializer tests/test_model_v2.py::test_annot_v_l_missing_e_s tests/test_model_v2.py::test_annot_v_l_missing_e_t tests/test_model_v2.py::test_annot_v_l_trgt_inv_prop tests/test_model_v2.py::test_namespace_with_periods tests/test_model_v2.py::test_edmx_entity_sets tests/test_model_v2.py::test_config_set_default_error_policy tests/test_model_v2.py::test_null_type tests/test_model_v2.py::test_faulty_association tests/test_model_v2.py::test_faulty_association_set tests/test_model_v2.py::test_missing_association_for_navigation_property tests/test_model_v2.py::test_edmx_association_end_by_role tests/test_model_v2.py::test_edmx_association_set_end_by_role tests/test_model_v2.py::test_edmx_association_set_end_by_entity_set tests/test_model_v2.py::test_missing_data_service tests/test_model_v2.py::test_missing_schema tests/test_model_v2.py::test_namespace_whitelist tests/test_model_v2.py::test_unsupported_edmx_n tests/test_model_v2.py::test_unsupported_schema_n tests/test_model_v2.py::test_whitelisted_edm_namespace tests/test_model_v2.py::test_whitelisted_edm_namespace_2006_04 tests/test_model_v2.py::test_whitelisted_edm_namespace_2007_05 tests/test_model_v2.py::test_enum_parsing tests/test_model_v2.py::test_unsupported_enum_underlying_type tests/test_model_v2.py::test_enum_value_out_of_range tests/test_model_v2.py::test_missing_property_referenced_in_annotation tests/test_model_v2.py::test_struct_type_has_property_initial_instance tests/test_model_v2.py::test_struct_type_has_property_no tests/test_model_v2.py::test_struct_type_has_property_yes tests/test_model_v2.py::test_invalid_xml