.Unwind(sharedConfigurations, "shared")
.Match("(sc:SharedConfiguration {id: shared.Id})")
.Unwind("shared.SharedProperties.Prices", "price")
.Merge("(p:Price {type: price.Type, limit: price.Limit, value: price.Value, currency: price.Currency.Code})")
.Merge("(sc)-[:HAS_PROP]->(p)")
.ExecuteWithoutResultsAsync()
.Unwind(flattenedData, "shared")
.Match("(conf:SharedConfiguration {id: shared.SharedId})")
.Merge("(tran:Transaction {id: shared.TransactionId})")
.Set("tran.page = shared.TransactionPage, tran.flatRatePriceId = shared.SharedFlatRatePriceId")
.With("conf, tran, shared")
.Merge("(conf)-[:HAS]->(tran)")
.Set("conf.name = shared.SharedName, conf.flatRatePriceId = shared.SharedFlatRatePriceId, conf.dateModified = shared.DateModified")
.With("conf, tran, shared")
.Unwind("shared.Routes", "activeRoute")
.Merge("(route:Route {id: activeRoute.Id})")
.Set("route.dateModified = activeRoute.DateModified, route.dateCreated = activeRoute.DateCreated, route.flatRatePriceId = activeRoute.FlatRatePriceId, route.premiumServiceSettingId = activeRoute.PremiumServiceSettingId")
.Merge("(tran)-[:HAS]->(route)")
.ExecuteWithoutResultsAsync()