anchor.diff:      (fun elem -> elem.SelectSingleNode("LocalizedNames/LocalizedName").Attributes.GetNamedItem("description").Value)
       (fun dev_elem prod_elem -> true)
       (fun id -> 
  -      add_solution_component proxy sol_id (fetch_sitemap_id proxy id) 62);
  +      add_solution_component proxy sol_id (fetch_sitemap_id proxy id) SolutionComponent.SiteMap);
     elim_elem "app" output
       dev_node prod_node 
       "/ImportExportXml/AppModules/AppModule"
  
positive.code:   
  type XmlPath = string
  
  type ComponentType = 
    | Entity = 1
    | Attribute = 2
    | OptionSet = 10
    | EntityRelationship = 10
    | Role = 20
    | Query = 26
    | Workflow = 29
    | Chart = 59
    | Form = 60
    | Dashboard = 60 // Dashboard has the same id as form!
    | WebResource = 61
    | SiteMap = 62
    | FieldSecurityProfile = 70
    | AppModule = 80
    | PluginAssembly = 91
    | PluginStep = 92
  
  let elim_elem type_ output (dev_node: XmlNode) (prod_node: XmlNode) dev_path dev_id dev_readable extra_check callback =
    let dev_elems = select_nodes dev_node dev_path
  
negative.code:   upd.Attributes.["publisherid"] <- publisher;
    proxy.Create upd
  
  type EntityComponent = 
    | EntityMetaData = 1
    | Attribute = 2
    | View = 26
    | Chart = 59
    | Form = 60
  
  let add_entity_component (proxy: IOrganizationService) sol_id comp_id (comp_type: EntityComponent) =
    let compTypeId = LanguagePrimitives.EnumToValue comp_type
    let req = 
      AddSolutionComponentRequest (
        AddRequiredComponents = false,
        ComponentId = comp_id,
        ComponentType = compTypeId,
        DoNotIncludeSubcomponents = true,
        SolutionUniqueName = sol_id
      )
    proxy.Execute(req) |> ignore
  
  type SolutionComponent = 
    | Entity = 1
    | Ribbon = 1
    | OptionSet = 9
    | EntityRelationship = 10
    | Role = 20
    | Workflow = 29
    | Dashboard = 60 // Dashboard has the same id as form!
    | WebResource = 61
    | SiteMap = 62
    | FieldSecurityProfile = 70
    | AppModule = 80
    | PluginAssembly = 91
    | PluginStep = 92
  
  let add_solution_component (proxy: IOrganizationService) sol_id comp_id (comp_type: SolutionComponent) =
    let compTypeId = LanguagePrimitives.EnumToValue comp_type
    let req = 
      AddSolutionComponentRequest (
        AddRequiredComponents = false,
        ComponentId = comp_id,
        ComponentType = compTypeId,
        SolutionUniqueName = sol_id
      )
    proxy.Execute(req) |> ignore
  