[2026-04-17T10:20:01+00:00] INFO Starting property sync {"start":"2026-04-17T09:59:21+00:00","end":"2026-04-17T12:59:21+00:00","offset_fetch_duration_ms":1,"page_size":100,"expand":["Media","OpenHouse","Unit","Room"],"statuses":["Active","Coming Soon","Active Under Contract"],"property_types":["Residential"]}
[2026-04-17T10:20:01+00:00] INFO Spark filter constructed {"filter":"ModificationTimestamp gt 2026-04-17T09:59:21Z and ModificationTimestamp lt 2026-04-17T12:59:21Z and (StandardStatus eq 'Active' or StandardStatus eq 'Coming Soon' or StandardStatus eq 'Active Under Contract') and (PropertyType eq 'Residential')"}
[2026-04-17T10:20:01+00:00] INFO Spark initial request {"url":"https://replication.sparkapi.com/Version/3/Reso/OData/Property?%24filter=ModificationTimestamp+gt+2026-04-17T09%3A59%3A21Z+and+ModificationTimestamp+lt+2026-04-17T12%3A59%3A21Z+and+%28StandardStatus+eq+%27Active%27+or+StandardStatus+eq+%27Coming+Soon%27+or+StandardStatus+eq+%27Active+Under+Contract%27%29+and+%28PropertyType+eq+%27Residential%27%29&%24orderby=ModificationTimestamp+asc%2CListingKey+asc&%24top=100&%24expand=Media%2COpenHouse%2CUnit%2CRoom"}
[2026-04-17T10:20:03+00:00] INFO Spark API response {"status":200,"url":"https://replication.sparkapi.com/Version/3/Reso/OData/Property?%24filter=ModificationTimestamp+gt+2026-04-17T09%3A59%3A21Z+and+ModificationTimestamp+lt+2026-04-17T12%3A59%3A21Z+and+%28StandardStatus+eq+%27Active%27+or+StandardStatus+eq+%27Coming+Soon%27+or+StandardStatus+eq+%27Active+Under+Contract%27%29+and+%28PropertyType+eq+%27Residential%27%29&%24orderby=ModificationTimestamp+asc%2CListingKey+asc&%24top=100&%24expand=Media%2COpenHouse%2CUnit%2CRoom","count":6,"duration_ms":1553}
[2026-04-17T10:20:03+00:00] INFO Processing page {"count":6,"has_next":false}
[2026-04-17T10:20:03+00:00] INFO Listing upserted {"id":"20260313174438778253000000","duration_ms":7}
[2026-04-17T10:20:03+00:00] INFO Photos unchanged, skipping save {"listing_id":"20260313174438778253000000","PhotosChangeTimestamp":"2026-04-17 03:02:07","duration_ms":1}
[2026-04-17T10:20:03+00:00] INFO History unchanged, skipping {"listing_id":"20260313174438778253000000","duration_ms":1}
[2026-04-17T10:20:03+00:00] INFO Listing processed {"listing_id":"20260313174438778253000000","duration_ms":10}
[2026-04-17T10:20:03+00:00] INFO Listing upserted {"id":"20260121111125962880000000","duration_ms":5}
[2026-04-17T10:20:03+00:00] INFO Photos unchanged, skipping save {"listing_id":"20260121111125962880000000","PhotosChangeTimestamp":"2026-02-18 23:23:55","duration_ms":1}
[2026-04-17T10:20:03+00:00] INFO History unchanged, skipping {"listing_id":"20260121111125962880000000","duration_ms":1}
[2026-04-17T10:20:03+00:00] INFO Listing processed {"listing_id":"20260121111125962880000000","duration_ms":7}
[2026-04-17T10:20:03+00:00] INFO Listing upserted {"id":"20251001225759739946000000","duration_ms":4}
[2026-04-17T10:20:03+00:00] INFO Photos unchanged, skipping save {"listing_id":"20251001225759739946000000","PhotosChangeTimestamp":"2026-02-17 18:40:57","duration_ms":1}
[2026-04-17T10:20:03+00:00] INFO History recorded {"listing_id":"20251001225759739946000000","event":"Price Decreased","price_change":"Price Decreased","price_change_ts":"2026-04-17 10:16:27","last_update":"2026-04-17T10:16:27Z","duration_ms":14}
[2026-04-17T10:20:03+00:00] INFO Listing processed {"listing_id":"20251001225759739946000000","duration_ms":20}
[2026-04-17T10:20:03+00:00] INFO Listing upserted {"id":"20260406190258451208000000","duration_ms":5}
[2026-04-17T10:20:03+00:00] INFO Photos unchanged, skipping save {"listing_id":"20260406190258451208000000","PhotosChangeTimestamp":"2026-04-13 14:58:15","duration_ms":1}
[2026-04-17T10:20:03+00:00] INFO History unchanged, skipping {"listing_id":"20260406190258451208000000","duration_ms":1}
[2026-04-17T10:20:03+00:00] INFO Listing processed {"listing_id":"20260406190258451208000000","duration_ms":8}
[2026-04-17T10:20:03+00:00] INFO Listing upserted {"id":"20260122022913512091000000","duration_ms":10}
[2026-04-17T10:20:03+00:00] INFO Photos unchanged, skipping save {"listing_id":"20260122022913512091000000","PhotosChangeTimestamp":"2026-01-22 14:10:03","duration_ms":1}
[2026-04-17T10:20:03+00:00] INFO History unchanged, skipping {"listing_id":"20260122022913512091000000","duration_ms":1}
[2026-04-17T10:20:03+00:00] INFO Listing processed {"listing_id":"20260122022913512091000000","duration_ms":12}
[2026-04-17T10:20:03+00:00] INFO Listing upserted {"id":"20260414143123188960000000","duration_ms":4}
[2026-04-17T10:20:03+00:00] INFO Photos unchanged, skipping save {"listing_id":"20260414143123188960000000","PhotosChangeTimestamp":"2026-04-14 15:23:55","duration_ms":1}
[2026-04-17T10:20:03+00:00] INFO History unchanged, skipping {"listing_id":"20260414143123188960000000","duration_ms":1}
[2026-04-17T10:20:03+00:00] INFO Listing processed {"listing_id":"20260414143123188960000000","duration_ms":6}
[2026-04-17T10:20:03+00:00] INFO Spark nextLink {"nextLink":null}
[2026-04-17T10:20:04+00:00] INFO Offset updated {"script":"Listing","raw":"2026-04-17 10:19:40.000","adjusted":true}
[2026-04-17T10:20:04+00:00] INFO Property sync complete {"last_modification":"2026-04-17T10:19:40+00:00"}
[2026-04-17T10:20:04+00:00] INFO Property sync finished {"status":"ok","duration_ms":2374}
