It really depends on your needs, your actual requirements and the explicitness of your previous/current application behaviours.
If you are able to determine state changes from your previous data, nothing prevents you to build those events from it, but depending on what you are trying to achieve, a more reasonable option would be to explicitly define a migration event like `MigratedFromLegacyApplicationAsOf20170601` and an according apply method in your aggregate.
Obviously you may need to properly model your aggregate and consolidate existing data to fit your new aggregate because your new model may not (and will probably not) map your existing data scheme.
I see nothing wrong to integrate such a change in your domain as it will have an impact in your business anyway and therefore need to be modelled.
The generation of this event is a one shot script which fetches data from your existing database and create events that you may store in your ES.
Depending on your language of choice, you may use a different constructor signature (to actually build your aggregate and raise your events by still ensuring your business rules) or have a static factory method from which you may get raw data to start with.