diff --git a/src/chocolatey.tests.integration/context/uppercase/1.0.0/UpperCase.nuspec b/src/chocolatey.tests.integration/context/uppercase/1.0.0/UpperCase.nuspec
new file mode 100644
index 0000000000..7e27d66f1a
--- /dev/null
+++ b/src/chocolatey.tests.integration/context/uppercase/1.0.0/UpperCase.nuspec
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
+  <metadata>
+    <id>UpperCase</id>
+    <version>1.0.0</version>
+    <title>UpperCase</title>
+    <authors>__REPLACE_AUTHORS_OF_SOFTWARE__</authors>
+    <owners>__REPLACE_YOUR_NAME__</owners>
+    <requireLicenseAcceptance>false</requireLicenseAcceptance>
+    <description>__REPLACE__</description>
+    <summary>__REPLACE__</summary>
+    <releaseNotes />
+    <tags>UpperCase admin</tags>
+  </metadata>
+  <files>
+    <file src="tools\**" target="tools" />
+  </files>
+</package>
\ No newline at end of file
diff --git a/src/chocolatey.tests.integration/context/uppercase/1.0.0/tools/chocolateyBeforeModify.ps1 b/src/chocolatey.tests.integration/context/uppercase/1.0.0/tools/chocolateyBeforeModify.ps1
new file mode 100644
index 0000000000..af5bb142e8
--- /dev/null
+++ b/src/chocolatey.tests.integration/context/uppercase/1.0.0/tools/chocolateyBeforeModify.ps1
@@ -0,0 +1 @@
+Write-Output "$env:PackageName $env:PackageVersion Before Modification"
\ No newline at end of file
diff --git a/src/chocolatey.tests.integration/context/uppercase/1.0.0/tools/chocolateyinstall.ps1 b/src/chocolatey.tests.integration/context/uppercase/1.0.0/tools/chocolateyinstall.ps1
new file mode 100644
index 0000000000..d64eb8f47b
--- /dev/null
+++ b/src/chocolatey.tests.integration/context/uppercase/1.0.0/tools/chocolateyinstall.ps1
@@ -0,0 +1 @@
+Write-Output "$env:PackageName $env:PackageVersion Installed"
\ No newline at end of file
diff --git a/src/chocolatey.tests.integration/context/uppercase/1.0.0/tools/chocolateyuninstall.ps1 b/src/chocolatey.tests.integration/context/uppercase/1.0.0/tools/chocolateyuninstall.ps1
new file mode 100644
index 0000000000..9ead91ffa3
--- /dev/null
+++ b/src/chocolatey.tests.integration/context/uppercase/1.0.0/tools/chocolateyuninstall.ps1
@@ -0,0 +1 @@
+Write-Output "$env:PackageName $env:PackageVersion Uninstalled"
\ No newline at end of file
diff --git a/src/chocolatey.tests.integration/context/uppercase/1.1.0/UpperCase.nuspec b/src/chocolatey.tests.integration/context/uppercase/1.1.0/UpperCase.nuspec
new file mode 100644
index 0000000000..c5ec5c2a80
--- /dev/null
+++ b/src/chocolatey.tests.integration/context/uppercase/1.1.0/UpperCase.nuspec
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
+  <metadata>
+    <id>UpperCase</id>
+    <version>1.1.0</version>
+    <title>UpperCase</title>
+    <authors>__REPLACE_AUTHORS_OF_SOFTWARE__</authors>
+    <owners>__REPLACE_YOUR_NAME__</owners>
+    <requireLicenseAcceptance>false</requireLicenseAcceptance>
+    <description>__REPLACE__</description>
+    <summary>__REPLACE__</summary>
+    <releaseNotes />
+    <tags>UpperCase admin</tags>
+  </metadata>
+  <files>
+    <file src="tools\**" target="tools" />
+  </files>
+</package>
\ No newline at end of file
diff --git a/src/chocolatey.tests.integration/context/uppercase/1.1.0/tools/chocolateyBeforeModify.ps1 b/src/chocolatey.tests.integration/context/uppercase/1.1.0/tools/chocolateyBeforeModify.ps1
new file mode 100644
index 0000000000..af5bb142e8
--- /dev/null
+++ b/src/chocolatey.tests.integration/context/uppercase/1.1.0/tools/chocolateyBeforeModify.ps1
@@ -0,0 +1 @@
+Write-Output "$env:PackageName $env:PackageVersion Before Modification"
\ No newline at end of file
diff --git a/src/chocolatey.tests.integration/context/uppercase/1.1.0/tools/chocolateyinstall.ps1 b/src/chocolatey.tests.integration/context/uppercase/1.1.0/tools/chocolateyinstall.ps1
new file mode 100644
index 0000000000..d64eb8f47b
--- /dev/null
+++ b/src/chocolatey.tests.integration/context/uppercase/1.1.0/tools/chocolateyinstall.ps1
@@ -0,0 +1 @@
+Write-Output "$env:PackageName $env:PackageVersion Installed"
\ No newline at end of file
diff --git a/src/chocolatey.tests.integration/context/uppercase/1.1.0/tools/chocolateyuninstall.ps1 b/src/chocolatey.tests.integration/context/uppercase/1.1.0/tools/chocolateyuninstall.ps1
new file mode 100644
index 0000000000..9ead91ffa3
--- /dev/null
+++ b/src/chocolatey.tests.integration/context/uppercase/1.1.0/tools/chocolateyuninstall.ps1
@@ -0,0 +1 @@
+Write-Output "$env:PackageName $env:PackageVersion Uninstalled"
\ No newline at end of file
diff --git a/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs b/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs
index 918c0ccc80..074b8620a4 100644
--- a/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs
+++ b/src/chocolatey.tests.integration/scenarios/InstallScenarios.cs
@@ -4818,5 +4818,120 @@ public void should_have_success_package_results()
                 }
             }
         }
+
+        public class when_installing_a_package_with_an_uppercase_id : ScenariosBase
+        {
+            private PackageResult _packageResult;
+
+            public override void Context()
+            {
+                base.Context();
+                Scenario.add_packages_to_source_location(Configuration, "UpperCase.1.0.0" + NuGetConstants.PackageExtension);
+                Configuration.PackageNames = Configuration.Input = "UpperCase";
+            }
+
+            public override void Because()
+            {
+                Results = Service.install_run(Configuration);
+                _packageResult = Results.FirstOrDefault().Value;
+            }
+
+            [Fact]
+            public void should_install_where_install_location_reports()
+            {
+                DirectoryAssert.Exists(_packageResult.InstallLocation);
+            }
+
+            [Fact]
+            public void should_install_the_package_in_the_lib_directory()
+            {
+                var packageDir = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames);
+
+                DirectoryAssert.Exists(packageDir);
+            }
+
+            [Fact]
+            public void should_have_the_correct_casing_for_the_nuspec()
+            {
+                var nuspecFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.ManifestExtension);
+                FileAssert.Exists(nuspecFile);
+            }
+
+            [Fact]
+            public void should_install_the_expected_version_of_the_package()
+            {
+                var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension);
+                using (var packageReader = new PackageArchiveReader(packageFile))
+                {
+                    packageReader.NuspecReader.GetVersion().to_string().ShouldEqual("1.0.0");
+                }
+            }
+
+            [Fact]
+            public void should_not_create_an_extensions_folder_for_the_package()
+            {
+                var extensionsDirectory = Path.Combine(Scenario.get_top_level(), "extensions", Configuration.PackageNames);
+
+                DirectoryAssert.DoesNotExist(extensionsDirectory);
+            }
+
+            [Fact]
+            public void should_not_create_an_hooks_folder_for_the_package()
+            {
+                var hooksDirectory = Path.Combine(Scenario.get_top_level(), "hooks", Configuration.PackageNames);
+
+                DirectoryAssert.DoesNotExist(hooksDirectory);
+            }
+
+            [Fact]
+            public void should_contain_a_warning_message_that_it_installed_successfully()
+            {
+                bool installedSuccessfully = false;
+                foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).or_empty_list_if_null())
+                {
+                    if (message.Contains("1/1")) installedSuccessfully = true;
+                }
+
+                installedSuccessfully.ShouldBeTrue();
+            }
+
+            [Fact]
+            public void should_have_a_successful_package_result()
+            {
+                _packageResult.Success.ShouldBeTrue();
+            }
+
+            [Fact]
+            public void should_not_have_inconclusive_package_result()
+            {
+                _packageResult.Inconclusive.ShouldBeFalse();
+            }
+
+            [Fact]
+            public void should_not_have_warning_package_result()
+            {
+                _packageResult.Warning.ShouldBeFalse();
+            }
+
+            [Fact]
+            public void config_should_match_package_result_name()
+            {
+                _packageResult.Name.ShouldEqual(Configuration.PackageNames);
+            }
+
+            [Fact]
+            public void should_have_a_version_of_one_dot_zero_dot_zero()
+            {
+                _packageResult.Version.ShouldEqual("1.0.0");
+            }
+
+            [Fact]
+            [WindowsOnly]
+            [Platform(Exclude = "Mono")]
+            public void should_have_executed_chocolateyInstall_script()
+            {
+                MockLogger.contains_message("UpperCase 1.0.0 Installed", LogLevel.Info).ShouldBeTrue();
+            }
+        }
     }
 }
diff --git a/src/chocolatey.tests.integration/scenarios/ListScenarios.cs b/src/chocolatey.tests.integration/scenarios/ListScenarios.cs
index 55c6a47b8e..5c08986d80 100644
--- a/src/chocolatey.tests.integration/scenarios/ListScenarios.cs
+++ b/src/chocolatey.tests.integration/scenarios/ListScenarios.cs
@@ -759,5 +759,57 @@ public void should_find_all_versions_in_descending_order()
                 Results[2].PackageMetadata.Version.ToNormalizedString().ShouldEqual("0.9.0");
             }
         }
+
+        public class when_listing_local_packages_with_uppercase_id_package_installed : ScenariosBase
+        {
+            public override void Context()
+            {
+                base.Context();
+                Scenario.add_packages_to_source_location(Configuration, "UpperCase" + "*" + NuGetConstants.PackageExtension);
+                Scenario.install_package(Configuration, "UpperCase", "1.1.0");
+
+                Configuration.ListCommand.LocalOnly = true;
+                Configuration.Sources = ApplicationParameters.PackagesLocation;
+            }
+
+            public override void Because()
+            {
+                MockLogger.reset();
+                Results = Service.list_run(Configuration).ToList();
+            }
+
+            [Fact]
+            public void should_contain_packages_and_versions_with_a_space_between_them()
+            {
+                MockLogger.contains_message("upgradepackage 1.0.0").ShouldBeTrue();
+            }
+
+            [Fact]
+            public void should_contain_uppercase_id_package()
+            {
+                MockLogger.contains_message("UpperCase 1.1.0").ShouldBeTrue();
+            }
+
+            [Fact]
+            public void should_not_contain_packages_and_versions_with_a_pipe_between_them()
+            {
+                MockLogger.contains_message("upgradepackage|1.0.0").ShouldBeFalse();
+            }
+
+            [Fact]
+            public void should_contain_a_summary()
+            {
+                MockLogger.contains_message("packages installed").ShouldBeTrue();
+            }
+
+            [Fact]
+            public void should_contain_debugging_messages()
+            {
+                MockLogger.contains_message("Searching for package information", LogLevel.Debug).ShouldBeTrue();
+                MockLogger.contains_message("Running list with the following filter", LogLevel.Debug).ShouldBeTrue();
+                MockLogger.contains_message("Start of List", LogLevel.Debug).ShouldBeTrue();
+                MockLogger.contains_message("End of List", LogLevel.Debug).ShouldBeTrue();
+            }
+        }
     }
 }
diff --git a/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs b/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs
index c624bfd56a..cdc5180356 100644
--- a/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs
+++ b/src/chocolatey.tests.integration/scenarios/UninstallScenarios.cs
@@ -1322,5 +1322,92 @@ public void should_have_executed_post_beforemodify_hook_script()
             }
         }
 
+        public class when_uninstalling_a_package_with_uppercase_id : ScenariosBase
+        {
+            private PackageResult packageResult;
+
+            public override void Context()
+            {
+                base.Context();
+                Scenario.add_packages_to_source_location(Configuration, "UpperCase" + "*" + NuGetConstants.PackageExtension);
+                Scenario.install_package(Configuration, "UpperCase", "1.1.0");
+
+                Configuration.PackageNames = Configuration.Input = "UpperCase";
+            }
+
+            public override void Because()
+            {
+                Results = Service.uninstall_run(Configuration);
+                packageResult = Results.FirstOrDefault().Value;
+            }
+
+            [Fact]
+            public void should_remove_the_package_from_the_lib_directory()
+            {
+                var packageDir = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames);
+
+                DirectoryAssert.DoesNotExist(packageDir);
+            }
+
+            [Fact]
+            public void should_delete_the_rollback()
+            {
+                var packageDir = Path.Combine(Scenario.get_top_level(), "lib-bkp", Configuration.PackageNames);
+
+                DirectoryAssert.DoesNotExist(packageDir);
+            }
+
+            [Fact]
+            public void should_contain_a_warning_message_that_it_uninstalled_successfully()
+            {
+                bool installedSuccessfully = false;
+                foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).or_empty_list_if_null())
+                {
+                    if (message.Contains("1/1")) installedSuccessfully = true;
+                }
+
+                installedSuccessfully.ShouldBeTrue();
+            }
+
+            [Fact]
+            public void should_have_a_successful_package_result()
+            {
+                packageResult.Success.ShouldBeTrue();
+            }
+
+            [Fact]
+            public void should_not_have_inconclusive_package_result()
+            {
+                packageResult.Inconclusive.ShouldBeFalse();
+            }
+
+            [Fact]
+            public void should_not_have_warning_package_result()
+            {
+                packageResult.Warning.ShouldBeFalse();
+            }
+
+            [Fact]
+            public void config_should_match_package_result_name()
+            {
+                packageResult.Name.ShouldEqual(Configuration.PackageNames);
+            }
+
+            [Fact]
+            [WindowsOnly]
+            [Platform(Exclude = "Mono")]
+            public void should_have_executed_chocolateyBeforeModify_script()
+            {
+                MockLogger.contains_message("UpperCase 1.1.0 Before Modification", LogLevel.Info).ShouldBeTrue();
+            }
+
+            [Fact]
+            [WindowsOnly]
+            [Platform(Exclude = "Mono")]
+            public void should_have_executed_chocolateyUninstall_script()
+            {
+                MockLogger.contains_message("UpperCase 1.1.0 Uninstalled", LogLevel.Info).ShouldBeTrue();
+            }
+        }
     }
 }
diff --git a/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs b/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs
index 05ab0a741f..4353f37ba7 100644
--- a/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs
+++ b/src/chocolatey.tests.integration/scenarios/UpgradeScenarios.cs
@@ -4364,5 +4364,148 @@ public void should_not_have_executed_beforemodify_hook_script_for_upgrade_versio
                 MockLogger.contains_message("pre-beforemodify-all.ps1 hook ran for upgradepackage 1.1.0", LogLevel.Info).ShouldBeFalse();
             }
         }
+        public class when_upgrading_an_existing_package_with_uppercase_id : ScenariosBase
+        {
+            private PackageResult _packageResult;
+
+            public override void Context()
+            {
+                base.Context();
+                Scenario.add_packages_to_source_location(Configuration, "UpperCase" + "*" + NuGetConstants.PackageExtension);
+                Scenario.install_package(Configuration, "UpperCase", "1.0.0");
+
+                Configuration.PackageNames = Configuration.Input = "UpperCase";
+            }
+
+            public override void Because()
+            {
+                Results = Service.upgrade_run(Configuration);
+                _packageResult = Results.FirstOrDefault().Value;
+            }
+
+            [Fact]
+            public void should_have_the_correct_casing_for_the_nuspec()
+            {
+                var nuspecFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.ManifestExtension);
+                FileAssert.Exists(nuspecFile);
+            }
+
+            [Fact]
+            public void should_upgrade_where_install_location_reports()
+            {
+                DirectoryAssert.Exists(_packageResult.InstallLocation);
+            }
+
+            [Fact]
+            public void should_upgrade_a_package_in_the_lib_directory()
+            {
+                var packageDir = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames);
+
+                DirectoryAssert.Exists(packageDir);
+            }
+
+            [Fact]
+            public void should_upgrade_the_package()
+            {
+                var packageFile = Path.Combine(Scenario.get_top_level(), "lib", Configuration.PackageNames, Configuration.PackageNames + NuGetConstants.PackageExtension);
+                using (var packageReader = new PackageArchiveReader(packageFile))
+                {
+                    packageReader.NuspecReader.GetVersion().to_string().ShouldEqual("1.1.0");
+                }
+            }
+
+            [Fact]
+            public void should_contain_a_warning_message_that_it_upgraded_successfully()
+            {
+                bool upgradedSuccessMessage = false;
+                foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).or_empty_list_if_null())
+                {
+                    if (message.Contains("upgraded 1/1")) upgradedSuccessMessage = true;
+                }
+
+                upgradedSuccessMessage.ShouldBeTrue();
+            }
+
+            [Fact]
+            public void should_contain_a_warning_message_with_old_and_new_versions()
+            {
+                bool upgradeMessage = false;
+                foreach (var message in MockLogger.MessagesFor(LogLevel.Warn).or_empty_list_if_null())
+                {
+                    if (message.Contains("You have UpperCase v1.0.0 installed. Version 1.1.0 is available based on your source")) upgradeMessage = true;
+                }
+
+                upgradeMessage.ShouldBeTrue();
+            }
+
+            [Fact]
+            public void should_have_a_successful_package_result()
+            {
+                _packageResult.Success.ShouldBeTrue();
+            }
+
+            [Fact]
+            public void should_not_have_inconclusive_package_result()
+            {
+                _packageResult.Inconclusive.ShouldBeFalse();
+            }
+
+            [Fact]
+            public void should_not_have_warning_package_result()
+            {
+                _packageResult.Warning.ShouldBeFalse();
+            }
+
+            [Fact]
+            public void config_should_match_package_result_name()
+            {
+                _packageResult.Name.ShouldEqual(Configuration.PackageNames);
+            }
+
+            [Fact]
+            public void should_match_the_upgrade_version_of_one_dot_one_dot_zero()
+            {
+                _packageResult.Version.ShouldEqual("1.1.0");
+            }
+
+            [Fact]
+            [WindowsOnly]
+            [Platform(Exclude = "Mono")]
+            public void should_have_executed_chocolateyBeforeModify_script_for_original_package()
+            {
+                MockLogger.contains_message("UpperCase 1.0.0 Before Modification", LogLevel.Info).ShouldBeTrue();
+            }
+
+            [Fact]
+            [WindowsOnly]
+            [Platform(Exclude = "Mono")]
+            public void should_have_executed_chocolateyBeforeModify_before_chocolateyInstall()
+            {
+                MockLogger.MessagesFor(LogLevel.Info).or_empty_list_if_null()
+                    .SkipWhile(p => !p.Contains("UpperCase 1.0.0 Before Modification"))
+                    .Any(p => p.EndsWith("UpperCase 1.1.0 Installed"))
+                    .ShouldBeTrue();
+            }
+
+            [Fact]
+            public void should_not_have_executed_chocolateyUninstall_script_for_original_package()
+            {
+                MockLogger.contains_message("UpperCase 1.0.0 Uninstalled", LogLevel.Info).ShouldBeFalse();
+            }
+
+            [Fact]
+            public void should_not_have_executed_chocolateyBeforeModify_script_for_new_package()
+            {
+                MockLogger.contains_message("UpperCase 1.1.0 Before Modification", LogLevel.Info).ShouldBeFalse();
+            }
+
+            [Fact]
+            [WindowsOnly]
+            [Platform(Exclude = "Mono")]
+            public void should_have_executed_chocolateyInstall_script_for_new_package()
+            {
+                MockLogger.contains_message("UpperCase 1.1.0 Installed", LogLevel.Info).ShouldBeTrue();
+            }
+        }
     }
 }