diff --git a/src/applications/harbormaster/controller/HarbormasterPlanViewController.php b/src/applications/harbormaster/controller/HarbormasterPlanViewController.php
index 9cc6944202..6980056218 100644
--- a/src/applications/harbormaster/controller/HarbormasterPlanViewController.php
+++ b/src/applications/harbormaster/controller/HarbormasterPlanViewController.php
@@ -1,174 +1,198 @@
 <?php
 
 final class HarbormasterPlanViewController
   extends HarbormasterPlanController {
 
   private $id;
 
   public function willProcessRequest(array $data) {
     $this->id = $data['id'];
   }
 
   public function processRequest() {
     $request = $this->getRequest();
     $viewer = $request->getUser();
 
     $id = $this->id;
 
     $plan = id(new HarbormasterBuildPlanQuery())
       ->setViewer($viewer)
       ->withIDs(array($id))
       ->executeOne();
     if (!$plan) {
       return new Aphront404Response();
     }
 
     $xactions = id(new HarbormasterBuildPlanTransactionQuery())
       ->setViewer($viewer)
       ->withObjectPHIDs(array($plan->getPHID()))
       ->execute();
 
     $engine = id(new PhabricatorMarkupEngine())
       ->setViewer($viewer);
 
     $xaction_view = id(new PhabricatorApplicationTransactionView())
       ->setUser($viewer)
       ->setObjectPHID($plan->getPHID())
       ->setTransactions($xactions)
       ->setMarkupEngine($engine);
 
     $title = pht("Plan %d", $id);
 
     $header = id(new PHUIHeaderView())
       ->setHeader($title)
       ->setUser($viewer)
       ->setPolicyObject($plan);
 
     $box = id(new PHUIObjectBoxView())
       ->setHeader($header);
 
     $actions = $this->buildActionList($plan);
     $this->buildPropertyLists($box, $plan, $actions);
 
     $crumbs = $this->buildApplicationCrumbs();
     $crumbs->addCrumb(
       id(new PhabricatorCrumbView())
         ->setName(pht("Plan %d", $id)));
 
     $step_list = $this->buildStepList($plan);
 
     return $this->buildApplicationPage(
       array(
         $crumbs,
         $box,
         $step_list,
         $xaction_view,
       ),
       array(
         'title' => $title,
         'device' => true,
       ));
   }
 
   private function buildStepList(HarbormasterBuildPlan $plan) {
     $request = $this->getRequest();
     $viewer = $request->getUser();
 
     $steps = id(new HarbormasterBuildStepQuery())
       ->setViewer($viewer)
       ->withBuildPlanPHIDs(array($plan->getPHID()))
       ->execute();
 
     $can_edit = $this->hasApplicationCapability(
       HarbormasterCapabilityManagePlans::CAPABILITY);
 
     $i = 1;
     $step_list = id(new PHUIObjectItemListView())
       ->setUser($viewer);
     foreach ($steps as $step) {
-      $implementation = $step->getStepImplementation();
+      $implementation = null;
+      try {
+        $implementation = $step->getStepImplementation();
+      } catch (Exception $ex) {
+        // We can't initialize the implementation.  This might be because
+        // it's been renamed or no longer exists.
+        $item = id(new PHUIObjectItemView())
+          ->setObjectName("Step ".$i++)
+          ->setHeader(pht('Unknown Implementation'))
+          ->setBarColor('red')
+          ->addAttribute(pht(
+            'This step has an invalid implementation (%s).',
+            $step->getClassName()))
+          ->addAction(
+            id(new PHUIListItemView())
+              ->setIcon('delete')
+              ->addSigil('harbormaster-build-step-delete')
+              ->setWorkflow(true)
+              ->setRenderNameAsTooltip(true)
+              ->setName(pht("Delete"))
+              ->setHref(
+                $this->getApplicationURI("step/delete/".$step->getID()."/")));
+        $step_list->addItem($item);
+        continue;
+      }
       $item = id(new PHUIObjectItemView())
         ->setObjectName("Step ".$i++)
         ->setHeader($implementation->getName());
 
       if (!$implementation->validateSettings()) {
         $item
           ->setBarColor('red')
           ->addAttribute(pht('This step is not configured correctly.'));
       } else {
         $item->addAttribute($implementation->getDescription());
       }
 
       if ($can_edit) {
         $edit_uri = $this->getApplicationURI("step/edit/".$step->getID()."/");
         $item
           ->setHref($edit_uri)
           ->addAction(
             id(new PHUIListItemView())
               ->setIcon('delete')
               ->addSigil('harbormaster-build-step-delete')
               ->setWorkflow(true)
               ->setRenderNameAsTooltip(true)
               ->setName(pht("Delete"))
               ->setHref(
                 $this->getApplicationURI("step/delete/".$step->getID()."/")));
       }
 
       $step_list->addItem($item);
     }
 
     return $step_list;
   }
 
   private function buildActionList(HarbormasterBuildPlan $plan) {
     $request = $this->getRequest();
     $viewer = $request->getUser();
     $id = $plan->getID();
 
     $list = id(new PhabricatorActionListView())
       ->setUser($viewer)
       ->setObject($plan)
       ->setObjectURI($this->getApplicationURI("plan/{$id}/"));
 
     $can_edit = $this->hasApplicationCapability(
       HarbormasterCapabilityManagePlans::CAPABILITY);
 
     $list->addAction(
       id(new PhabricatorActionView())
         ->setName(pht('Edit Plan'))
         ->setHref($this->getApplicationURI("plan/edit/{$id}/"))
         ->setWorkflow(!$can_edit)
         ->setDisabled(!$can_edit)
         ->setIcon('edit'));
 
     $list->addAction(
       id(new PhabricatorActionView())
         ->setName(pht('Add Build Step'))
         ->setHref($this->getApplicationURI("step/add/{$id}/"))
         ->setWorkflow($can_edit)
         ->setDisabled(!$can_edit)
         ->setIcon('new'));
 
     return $list;
   }
 
   private function buildPropertyLists(
     PHUIObjectBoxView $box,
     HarbormasterBuildPlan $plan,
     PhabricatorActionListView $actions) {
     $request = $this->getRequest();
     $viewer = $request->getUser();
 
     $properties = id(new PHUIPropertyListView())
       ->setUser($viewer)
       ->setObject($plan)
       ->setActionList($actions);
     $box->addPropertyList($properties);
 
     $properties->addProperty(
       pht('Created'),
       phabricator_datetime($plan->getDateCreated(), $viewer));
 
   }
 
 }