[2026-04-07T11:20:02+00:00] INFO Starting property sync {"start":"2026-04-07T10:59:56+00:00","end":"2026-04-07T13:59:56+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-07T11:20:02+00:00] INFO Spark filter constructed {"filter":"ModificationTimestamp gt 2026-04-07T10:59:56Z and ModificationTimestamp lt 2026-04-07T13:59:56Z and (StandardStatus eq 'Active' or StandardStatus eq 'Coming Soon' or StandardStatus eq 'Active Under Contract') and (PropertyType eq 'Residential')"}
[2026-04-07T11:20:02+00:00] INFO Spark initial request {"url":"https://replication.sparkapi.com/Version/3/Reso/OData/Property?%24filter=ModificationTimestamp+gt+2026-04-07T10%3A59%3A56Z+and+ModificationTimestamp+lt+2026-04-07T13%3A59%3A56Z+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-07T11: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-07T10%3A59%3A56Z+and+ModificationTimestamp+lt+2026-04-07T13%3A59%3A56Z+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":7,"duration_ms":736}
[2026-04-07T11:20:03+00:00] INFO Processing page {"count":7,"has_next":false}
[2026-04-07T11:20:03+00:00] INFO Listing upserted {"id":"20260219222334348805000000","duration_ms":4}
[2026-04-07T11:20:03+00:00] INFO Photos unchanged, skipping save {"listing_id":"20260219222334348805000000","PhotosChangeTimestamp":"2026-03-03 09:12:11","duration_ms":0}
[2026-04-07T11:20:03+00:00] INFO History unchanged, skipping {"listing_id":"20260219222334348805000000","duration_ms":1}
[2026-04-07T11:20:03+00:00] INFO Listing processed {"listing_id":"20260219222334348805000000","duration_ms":6}
[2026-04-07T11:20:03+00:00] INFO Listing upserted {"id":"608529869","duration_ms":8}
[2026-04-07T11:20:03+00:00] INFO Photos unchanged, skipping save {"listing_id":"608529869","PhotosChangeTimestamp":"2026-04-07 10:38:43","duration_ms":1}
[2026-04-07T11:20:03+00:00] INFO History unchanged, skipping {"listing_id":"608529869","duration_ms":1}
[2026-04-07T11:20:03+00:00] INFO Listing processed {"listing_id":"608529869","duration_ms":10}
[2026-04-07T11:20:03+00:00] INFO Listing upserted {"id":"610909025","duration_ms":8}
[2026-04-07T11:20:03+00:00] INFO Photos unchanged, skipping save {"listing_id":"610909025","PhotosChangeTimestamp":"2026-04-07 10:33:43","duration_ms":1}
[2026-04-07T11:20:03+00:00] INFO History unchanged, skipping {"listing_id":"610909025","duration_ms":1}
[2026-04-07T11:20:03+00:00] INFO Listing processed {"listing_id":"610909025","duration_ms":10}
[2026-04-07T11:20:03+00:00] INFO Listing upserted {"id":"20260328114549666804000000","duration_ms":4}
[2026-04-07T11:20:03+00:00] INFO Photos saved {"listing_id":"20260328114549666804000000","count":96,"duration_ms":5}
[2026-04-07T11:20:03+00:00] INFO History unchanged, skipping {"listing_id":"20260328114549666804000000","duration_ms":1}
[2026-04-07T11:20:03+00:00] INFO Listing processed {"listing_id":"20260328114549666804000000","duration_ms":11}
[2026-04-07T11:20:03+00:00] INFO Listing upserted {"id":"20260331164537298681000000","duration_ms":7}
[2026-04-07T11:20:03+00:00] INFO Photos saved {"listing_id":"20260331164537298681000000","count":54,"duration_ms":4}
[2026-04-07T11:20:03+00:00] INFO History recorded {"listing_id":"20260331164537298681000000","event":"Status Active","price_change":"","price_change_ts":null,"last_update":"2026-04-07T11:19:00Z","duration_ms":3}
[2026-04-07T11:20:03+00:00] INFO Listing processed {"listing_id":"20260331164537298681000000","duration_ms":14}
[2026-04-07T11:20:03+00:00] INFO Listing upserted {"id":"20260108120214366947000000","duration_ms":4}
[2026-04-07T11:20:03+00:00] INFO Photos unchanged, skipping save {"listing_id":"20260108120214366947000000","PhotosChangeTimestamp":"2026-01-08 14:32:45","duration_ms":1}
[2026-04-07T11:20:03+00:00] INFO History recorded {"listing_id":"20260108120214366947000000","event":"Price Decreased","price_change":"Price Decreased","price_change_ts":"2026-04-07 11:19:53","last_update":"2026-04-07T11:19:53Z","duration_ms":4}
[2026-04-07T11:20:03+00:00] INFO Listing processed {"listing_id":"20260108120214366947000000","duration_ms":10}
[2026-04-07T11:20:03+00:00] INFO Listing upserted {"id":"20260406234909108960000000","duration_ms":4}
[2026-04-07T11:20:03+00:00] INFO Photos saved {"listing_id":"20260406234909108960000000","count":74,"duration_ms":20}
[2026-04-07T11:20:03+00:00] INFO History recorded {"listing_id":"20260406234909108960000000","event":"Status Active","price_change":"","price_change_ts":null,"last_update":"2026-04-07T11:19:57Z","duration_ms":10}
[2026-04-07T11:20:03+00:00] INFO Listing processed {"listing_id":"20260406234909108960000000","duration_ms":35}
[2026-04-07T11:20:03+00:00] INFO Spark nextLink {"nextLink":null}
[2026-04-07T11:20:04+00:00] INFO Offset updated {"script":"Listing","raw":"2026-04-07 11:19:57.000","adjusted":true}
[2026-04-07T11:20:04+00:00] INFO Property sync complete {"last_modification":"2026-04-07T11:19:57+00:00"}
[2026-04-07T11:20:04+00:00] INFO Property sync finished {"status":"ok","duration_ms":1782}
