/// <summary>
        /// Fixes scenarios/passes where the pass is referenced by multiple scenarios.
        /// </summary>
        public void Apply()
        {
            foreach (string tenantConnectionString in _tenantConnectionStrings)
            {
                using (IDocumentStore documentStore = DocumentStoreFactory.CreateStore(tenantConnectionString))
                    using (IDocumentSession session = documentStore.OpenSession())
                        using (var identityGenerator = new RavenIdentityGenerator(documentStore))
                        {
                            // Get scenario/pass repositories
                            var scenarioRepository = new RavenScenarioRepository(session);
                            var passRepository     = new RavenPassRepository(session);

                            // Get all scenarios
                            var scenarios = scenarioRepository.GetAll().OrderBy(s => s.CustomId);

                            // Check each scenario and passes
                            Dictionary <int, Guid> firstScenarioIdByPassId = new Dictionary <int, Guid>();
                            foreach (var scenario in scenarios)
                            {
                                bool scenarioChanged = false;

                                // Check each pass
                                foreach (var passRef in scenario.Passes)
                                {
                                    if (firstScenarioIdByPassId.ContainsKey(passRef.Id)) // Another scenario references this pass
                                    {
                                        // Load pass
                                        var pass = passRepository.Get(passRef.Id);

                                        // Clone pass with new ID
                                        var newPass = (Pass)pass.Clone();
                                        newPass.Id   = identityGenerator.GetIdentities <PassIdIdentity>(1)[0].Id;
                                        newPass.Name = string.Format("Pass {0}", newPass.Id);
                                        passRef.Id   = newPass.Id; // Link scenario to this pass

                                        passRepository.Add(newPass);
                                        scenarioRepository.Update(scenario);
                                        scenarioChanged = true;
                                    }
                                    else // No other scenarios reference this pass
                                    {
                                        firstScenarioIdByPassId.Add(passRef.Id, scenario.Id);
                                    }
                                }

                                // Save changes
                                if (scenarioChanged)
                                {
                                    passRepository.SaveChanges();
                                    scenarioRepository.SaveChanges();
                                }
                            }
                        }
            }
        }