public async Task Filter(long apprenticeshipId)
        {
            var apprenticeshipDataLocks = await _dataLockRepository.GetDataLocks(apprenticeshipId, true);

            if (apprenticeshipDataLocks == null || apprenticeshipDataLocks.Count == 0)
            {
                return;
            }

            var haveDuplicates = apprenticeshipDataLocks
                                 .GroupBy(x => new
            {
                x.IlrTrainingCourseCode,
                x.IlrTrainingType,
                x.IlrActualStartDate,
                x.IlrEffectiveFromDate,
                x.IlrTotalCost
            })
                                 .Where(g => g.Count() > 1);

            foreach (var group in haveDuplicates)
            {
                var augustDataLock = group
                                     .Select(x => new
                {
                    DataLockEventId        = x.DataLockEventId,
                    PriceEpisodeIdentifier = x.PriceEpisodeIdentifier,
                    PriceEpisodeIdDateTime = x.GetDateFromPriceEpisodeIdentifier(),
                    IsAugustPriceEpisode   = _augustPricePeriodFormat.IsMatch(x.PriceEpisodeIdentifier)
                })
                                     .OrderByDescending(x => x.PriceEpisodeIdDateTime).First();

                if (!augustDataLock.IsAugustPriceEpisode)
                {
                    var message   = $"Unexpected price episode identifier matched: {augustDataLock.PriceEpisodeIdentifier} for apprenticeship: {apprenticeshipId}";
                    var exception = new AcademicYearFilterException(message);
                    _logger.Error(exception, message);
                    continue;
                }

                _logger.Info($"Found an academic year rollover data lock to delete: DataLockEventId: {augustDataLock.DataLockEventId}");
                await _dataLockRepository.Delete(augustDataLock.DataLockEventId);
            }
        }