Hello again Joël,
So it seems that the problem is because you are assigning the result of the Country dropdown to the variable GetOrganisationById.List.Current.Organisation.CountryId, but you are not using it afterwards to get the Country Code. That's why its value stays "AF" (probably the current value resulting from the GetCountries Aggregate).
If I were you, I'd have an extra CountryId local variable for the dropdown and an Aggregate GetCountryStatesByCountryId instead, having a join between CountryState and Country entities by CountryCode, and filtering the Aggregate by CountryId. And this is the Aggregate that you should use in your CountryStates dropdown.
The join condition between the entities in the Aggregate should be something like:
Country.Code = CountryStates.CountryCode
And the filter should be something like:
GetCountries.List.Current.Country.Id = CountryId
Meaning that, by the time you select a Country (from Country dropdown), your variable CountryId changes and it is the one that you're using to filter the second Aggregate used in your CountryStates dropdown.
Finally, this would be the Aggregate refreshed in the OnChange action :)
Hope that this helps you!
Kind regards,
Rui Barradas