title: Persisting and querying multiple states in different points in time in Event Sourcing architecture
body: <p>I am trying to understand how should I approach this problem in an event-sourced scenario. I have a domain-object which is event sourced. I want to do different kinds of aggregations and querying on the object, but I'd like to be able to query it on different points in time in the &quot;lifespan&quot; of the object.</p>
  <p>Perhaps an example would clarify: I have an object which represents a contract. I have multiple stages for the contract: the latest version of it, the pre-signed version, the first version that our customer receive, etc.</p>
  <p>Users would like to be able to query this 'Contract' object on different points in time (both lookup queries and aggregative ones). The data is persisted and queried in multiple locations (as is common in Event Sourcing read projections).</p>
  <p>I wonder what would be a standard way of storing multiple 'states' of such an object in a way which allows me to query them? Is my best bet to just 'duplicate' the data with yet another read projection? Updates to the data stores aren't very possible either because some of the projected read models are not stored in a database that is friendly to update.</p>
  <p>Have you ever encountered such a scenario on an event sourcing system? How did you tackle this problem?</p>