diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
index f8b43b823..c406f37b4 100644
--- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
+++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
@@ -153,6 +153,7 @@
     <Compile Include="ProviderTests\DiskScanProviderTests\GetVideoFilesFixture.cs" />
     <Compile Include="ProviderTests\DiskScanProviderTests\ScanFixture.cs" />
     <Compile Include="ProviderTests\DownloadClientTests\PneumaticProviderFixture.cs" />
+    <Compile Include="ProviderTests\EpisodeProviderTests\GetEpisodeBySceneNumberFixture.cs" />
     <Compile Include="ProviderTests\Metadata\Xbmc_ForEpisodeFile_Fixture.cs" />
     <Compile Include="ProviderTests\Metadata\Xbmc_ForSeries_Fixture.cs" />
     <Compile Include="ProviderTests\PostDownloadProviderTests\ProcessDropDirectoryFixture.cs" />
@@ -195,7 +196,7 @@
     <Compile Include="ProviderTests\XemCommunicationProviderTests\GetXemSeriesIdsFixture.cs" />
     <Compile Include="Services\ParseErrorServiceFixture.cs" />
     <Compile Include="SortHelperTest.cs" />
-    <Compile Include="ProviderTests\EpisodeProviderTest_DeleteInvalidEpisodes.cs" />
+    <Compile Include="ProviderTests\EpisodeProviderTests\EpisodeProviderTest_DeleteInvalidEpisodes.cs" />
     <Compile Include="ProviderTests\DecisionEngineTests\AcceptableSizeSpecificationFixture.cs" />
     <Compile Include="ProviderTests\QualityTypeProviderTest.cs" />
     <Compile Include="ProviderTests\MisnamedProviderTest.cs" />
@@ -205,7 +206,7 @@
     <Compile Include="CentralDispatchFixture.cs" />
     <Compile Include="ProviderTests\XbmcProviderTest.cs" />
     <Compile Include="ProviderTests\DiskScanProviderTests\MoveEpisodeFileFixture.cs" />
-    <Compile Include="ProviderTests\EpisodeProviderTest_GetEpisodesByParseResult.cs" />
+    <Compile Include="ProviderTests\EpisodeProviderTests\EpisodeProviderTest_GetEpisodesByParseResult.cs" />
     <Compile Include="ProviderTests\DiskScanProviderTests\ImportFileFixture.cs" />
     <Compile Include="FluentTest.cs" />
     <Compile Include="ProviderTests\LogProviderTests\LogProviderFixture.cs" />
@@ -227,7 +228,7 @@
     <Compile Include="ProviderTests\HistoryProviderTest.cs" />
     <Compile Include="ProviderTests\MediaFileProviderTest.cs" />
     <Compile Include="ProviderTests\ConfigProviderTests\ConfigProviderFixture.cs" />
-    <Compile Include="ProviderTests\EpisodeProviderTest.cs" />
+    <Compile Include="ProviderTests\EpisodeProviderTests\EpisodeProviderTest.cs" />
     <Compile Include="Framework\TestDbHelper.cs" />
     <Compile Include="ParserTest.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
diff --git a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest.cs
similarity index 99%
rename from NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs
rename to NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest.cs
index 9870924f1..290026385 100644
--- a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs
+++ b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest.cs
@@ -2,9 +2,7 @@
 
 using System;
 using System.Collections.Generic;
-using System.IO;
 using System.Linq;
-
 using FizzWare.NBuilder;
 using FluentAssertions;
 using Moq;
@@ -15,11 +13,10 @@ using NzbDrone.Core.Providers.Core;
 using NzbDrone.Core.Repository;
 using NzbDrone.Core.Repository.Quality;
 using NzbDrone.Core.Test.Framework;
-using NzbDrone.Test.Common.AutoMoq;
 using PetaPoco;
 using TvdbLib.Data;
 
-namespace NzbDrone.Core.Test.ProviderTests
+namespace NzbDrone.Core.Test.ProviderTests.EpisodeProviderTests
 {
     [TestFixture]
     // ReSharper disable InconsistentNaming
diff --git a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs
similarity index 98%
rename from NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs
rename to NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs
index c4f767a92..70c185136 100644
--- a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs
+++ b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs
@@ -2,17 +2,15 @@
 
 using System.Collections.Generic;
 using System.Linq;
-
 using FizzWare.NBuilder;
 using FluentAssertions;
 using NUnit.Framework;
 using NzbDrone.Core.Providers;
 using NzbDrone.Core.Repository;
 using NzbDrone.Core.Test.Framework;
-using NzbDrone.Test.Common.AutoMoq;
 using TvdbLib.Data;
 
-namespace NzbDrone.Core.Test.ProviderTests
+namespace NzbDrone.Core.Test.ProviderTests.EpisodeProviderTests
 {
     [TestFixture]
     // ReSharper disable InconsistentNaming
diff --git a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs
similarity index 98%
rename from NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs
rename to NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs
index 5f4b8bd4c..2d726a2fa 100644
--- a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs
+++ b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs
@@ -5,17 +5,14 @@ using System.Collections.Generic;
 using System.Linq;
 using FizzWare.NBuilder;
 using FluentAssertions;
-using Moq;
 using NUnit.Framework;
 using NzbDrone.Core.Model;
 using NzbDrone.Core.Providers;
 using NzbDrone.Core.Repository;
 using NzbDrone.Core.Test.Framework;
 using NzbDrone.Test.Common;
-using NzbDrone.Test.Common.AutoMoq;
-using PetaPoco;
 
-namespace NzbDrone.Core.Test.ProviderTests
+namespace NzbDrone.Core.Test.ProviderTests.EpisodeProviderTests
 {
     [TestFixture]
     // ReSharper disable InconsistentNaming
diff --git a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/GetEpisodeBySceneNumberFixture.cs b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/GetEpisodeBySceneNumberFixture.cs
new file mode 100644
index 000000000..b4a4726bc
--- /dev/null
+++ b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/GetEpisodeBySceneNumberFixture.cs
@@ -0,0 +1,77 @@
+// ReSharper disable RedundantUsingDirective
+
+using System.Linq;
+using FizzWare.NBuilder;
+using FluentAssertions;
+using NUnit.Framework;
+using NzbDrone.Core.Providers;
+using NzbDrone.Core.Repository;
+using NzbDrone.Core.Test.Framework;
+
+namespace NzbDrone.Core.Test.ProviderTests.EpisodeProviderTests
+{
+    [TestFixture]
+    // ReSharper disable InconsistentNaming
+    public class GetEpisodeBySceneNumberFixture : CoreTest
+    {
+        private Series _series;
+        private Episode _episode;
+
+        [SetUp]
+        public void Setup()
+        {
+            WithRealDb();
+
+            _series = Builder<Series>
+                .CreateNew()
+                .Build();
+
+            Db.Insert(_series);
+        }
+
+        public void WithNullSceneNumbering()
+        {
+            _episode = Builder<Episode>
+                    .CreateNew()
+                    .With(e => e.SeriesId = _series.SeriesId)
+                    .Build();
+
+            Db.Insert(_episode);
+            Db.Execute("UPDATE Episodes SET SceneSeasonNumber = NULL, SceneEpisodeNumber = NULL");
+        }
+
+        public void WithSceneNumbering()
+        {
+            _episode = Builder<Episode>
+                    .CreateNew()
+                    .With(e => e.SeriesId = _series.SeriesId)
+                    .Build();
+
+            Db.Insert(_episode);
+        }
+
+        [Test]
+        public void should_return_null_if_no_episodes_in_db()
+        {
+            Mocker.Resolve<EpisodeProvider>().GetEpisodeBySceneNumbering(_series.SeriesId, 1, 1).Should().BeNull();
+        }
+
+        [Test]
+        public void should_return_null_if_no_matching_episode_is_found()
+        {
+            WithNullSceneNumbering();
+            Mocker.Resolve<EpisodeProvider>().GetEpisodeBySceneNumbering(_series.SeriesId, 1, 1).Should().BeNull();
+        }
+
+        [Test]
+        public void should_return_episode_if_matching_episode_is_found()
+        {
+            WithSceneNumbering();
+
+            var result = Mocker.Resolve<EpisodeProvider>()
+                .GetEpisodeBySceneNumbering(_series.SeriesId, _episode.SceneSeasonNumber, _episode.SceneEpisodeNumber);
+            
+            result.EpisodeId.Should().Be(_episode.EpisodeId);
+        }
+    }
+}
diff --git a/NzbDrone.Core/Providers/EpisodeProvider.cs b/NzbDrone.Core/Providers/EpisodeProvider.cs
index f5514a698..a675ac0bc 100644
--- a/NzbDrone.Core/Providers/EpisodeProvider.cs
+++ b/NzbDrone.Core/Providers/EpisodeProvider.cs
@@ -191,7 +191,7 @@ namespace NzbDrone.Core.Providers
                 Episode episodeInfo;
 
                 if (parseResult.SceneSource && parseResult.Series.UseSceneNumbering)
-                    episodeInfo = GetEpisodeFromSceneNumbering(parseResult.Series.SeriesId, parseResult.SeasonNumber, episodeNumber);
+                    episodeInfo = GetEpisodeBySceneNumbering(parseResult.Series.SeriesId, parseResult.SeasonNumber, episodeNumber);
 
                 else
                 {
@@ -450,7 +450,7 @@ namespace NzbDrone.Core.Providers
             _database.UpdateMany(episodes);
         }
 
-        public virtual Episode GetEpisodeFromSceneNumbering(int seriesId, int seasonNumber, int episodeNumber)
+        public virtual Episode GetEpisodeBySceneNumbering(int seriesId, int seasonNumber, int episodeNumber)
         {
             var episode = _database.Fetch<Episode, Series, EpisodeFile>(@"SELECT * FROM Episodes 
                                                             INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId