Wondering if we couldn't treat all types as "dynamic shardable": code would converge and the one-and-only way to configure sharding would be to implement a _ShardIdentifierProvider_ . (possibly keeping the old way around as deprecated way)