Index: src/main/java/hudson/plugins/promoted_builds/JobPropertyImpl.java
===================================================================
--- src/main/java/hudson/plugins/promoted_builds/JobPropertyImpl.java	(revision 36090)
+++ src/main/java/hudson/plugins/promoted_builds/JobPropertyImpl.java	(working copy)
@@ -12,6 +12,7 @@
 import hudson.model.Job;
 import hudson.model.JobProperty;
 import hudson.model.JobPropertyDescriptor;
+import hudson.plugins.promoted_builds.icons.PromotionIconExtension;
 import hudson.tasks.BuildStep;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
@@ -267,5 +268,10 @@

         // exposed for Jelly
         public final Class<PromotionProcess> promotionProcessType = PromotionProcess.class;
+
+        // exposed for Jelly
+        public List<PromotionIconExtension> getPromotionIcons() {
+            return PromotionIconExtension.all();
+        }
     }
 }
Index: src/main/java/hudson/plugins/promoted_builds/PromotionProcess.java
===================================================================
--- src/main/java/hudson/plugins/promoted_builds/PromotionProcess.java	(revision 36090)
+++ src/main/java/hudson/plugins/promoted_builds/PromotionProcess.java	(working copy)
@@ -14,6 +14,7 @@
 import hudson.model.Queue.Item;
 import hudson.model.Run;
 import hudson.model.Saveable;
+import hudson.plugins.promoted_builds.icons.PromotionIconExtension;
 import hudson.tasks.BuildStep;
 import hudson.tasks.BuildStepDescriptor;
 import hudson.tasks.Builder;
@@ -133,6 +134,15 @@
             return sIcon;
     }

+    public String getIconPlugin() {
+        PromotionIconExtension promotionIcon = PromotionIconExtension.getPromotionIcon(getIcon());
+        if(promotionIcon == null) {
+            return "promoted-builds";
+        } else {
+            return promotionIcon.getPlugin();
+        }
+    }
+
     /**
      * Checks if all the conditions to promote a build is met.
      *
Index: src/main/java/hudson/plugins/promoted_builds/icons/GoldStarPromotionIcon.java
===================================================================
--- src/main/java/hudson/plugins/promoted_builds/icons/GoldStarPromotionIcon.java	(revision 0)
+++ src/main/java/hudson/plugins/promoted_builds/icons/GoldStarPromotionIcon.java	(revision 0)
@@ -0,0 +1,17 @@
+package hudson.plugins.promoted_builds.icons;
+
+import hudson.Extension;
+
+@Extension
+public class GoldStarPromotionIcon extends BasePromotionIcon {
+
+    @Override
+    public String getName() {
+        return "star-gold";
+    }
+
+    @Override
+    public String getDescription() {
+        return "Gold star";
+    }
+}
Index: src/main/java/hudson/plugins/promoted_builds/icons/BlueStarPromotionIcon.java
===================================================================
--- src/main/java/hudson/plugins/promoted_builds/icons/BlueStarPromotionIcon.java	(revision 0)
+++ src/main/java/hudson/plugins/promoted_builds/icons/BlueStarPromotionIcon.java	(revision 0)
@@ -0,0 +1,17 @@
+package hudson.plugins.promoted_builds.icons;
+
+import hudson.Extension;
+
+@Extension
+public class BlueStarPromotionIcon extends BasePromotionIcon {
+
+    @Override
+    public String getName() {
+        return "star-blue";
+    }
+
+    @Override
+    public String getDescription() {
+        return "Blue star";
+    }
+}
Index: src/main/java/hudson/plugins/promoted_builds/icons/PurpleStarPromotionIcon.java
===================================================================
--- src/main/java/hudson/plugins/promoted_builds/icons/PurpleStarPromotionIcon.java	(revision 0)
+++ src/main/java/hudson/plugins/promoted_builds/icons/PurpleStarPromotionIcon.java	(revision 0)
@@ -0,0 +1,17 @@
+package hudson.plugins.promoted_builds.icons;
+
+import hudson.Extension;
+
+@Extension
+public class PurpleStarPromotionIcon extends BasePromotionIcon {
+
+    @Override
+    public String getName() {
+        return "star-purple";
+    }
+
+    @Override
+    public String getDescription() {
+        return "Purple star";
+    }
+}
Index: src/main/java/hudson/plugins/promoted_builds/icons/RedStarPromotionIcon.java
===================================================================
--- src/main/java/hudson/plugins/promoted_builds/icons/RedStarPromotionIcon.java	(revision 0)
+++ src/main/java/hudson/plugins/promoted_builds/icons/RedStarPromotionIcon.java	(revision 0)
@@ -0,0 +1,17 @@
+package hudson.plugins.promoted_builds.icons;
+
+import hudson.Extension;
+
+@Extension
+public class RedStarPromotionIcon extends BasePromotionIcon {
+
+    @Override
+    public String getName() {
+        return "star-red";
+    }
+
+    @Override
+    public String getDescription() {
+        return "Red star";
+    }
+}
Index: src/main/java/hudson/plugins/promoted_builds/icons/OrangeStarPromotionIcon.java
===================================================================
--- src/main/java/hudson/plugins/promoted_builds/icons/OrangeStarPromotionIcon.java	(revision 0)
+++ src/main/java/hudson/plugins/promoted_builds/icons/OrangeStarPromotionIcon.java	(revision 0)
@@ -0,0 +1,17 @@
+package hudson.plugins.promoted_builds.icons;
+
+import hudson.Extension;
+
+@Extension
+public class OrangeStarPromotionIcon extends BasePromotionIcon {
+
+    @Override
+    public String getName() {
+        return "star-orange";
+    }
+
+    @Override
+    public String getDescription() {
+        return "Orange star";
+    }
+}
Index: src/main/java/hudson/plugins/promoted_builds/icons/BasePromotionIcon.java
===================================================================
--- src/main/java/hudson/plugins/promoted_builds/icons/BasePromotionIcon.java	(revision 0)
+++ src/main/java/hudson/plugins/promoted_builds/icons/BasePromotionIcon.java	(revision 0)
@@ -0,0 +1,8 @@
+package hudson.plugins.promoted_builds.icons;
+
+public abstract class BasePromotionIcon extends PromotionIconExtension {
+    @Override
+    public String getPlugin() {
+        return "promoted-builds";
+    }
+}
Index: src/main/java/hudson/plugins/promoted_builds/icons/GreenStarPromotionIcon.java
===================================================================
--- src/main/java/hudson/plugins/promoted_builds/icons/GreenStarPromotionIcon.java	(revision 0)
+++ src/main/java/hudson/plugins/promoted_builds/icons/GreenStarPromotionIcon.java	(revision 0)
@@ -0,0 +1,17 @@
+package hudson.plugins.promoted_builds.icons;
+
+import hudson.Extension;
+
+@Extension
+public class GreenStarPromotionIcon extends BasePromotionIcon {
+
+    @Override
+    public String getName() {
+        return "star-green";
+    }
+
+    @Override
+    public String getDescription() {
+        return "Green star";
+    }
+}
\ No newline at end of file
Index: src/main/java/hudson/plugins/promoted_builds/icons/PromotionIconExtension.java
===================================================================
--- src/main/java/hudson/plugins/promoted_builds/icons/PromotionIconExtension.java	(revision 0)
+++ src/main/java/hudson/plugins/promoted_builds/icons/PromotionIconExtension.java	(revision 0)
@@ -0,0 +1,27 @@
+package hudson.plugins.promoted_builds.icons;
+
+import hudson.ExtensionList;
+import hudson.ExtensionPoint;
+import hudson.model.Hudson;
+
+public abstract class PromotionIconExtension implements ExtensionPoint {
+
+    public abstract String getPlugin();
+
+    public abstract String getName();
+
+    public abstract String getDescription();
+
+    public static ExtensionList<PromotionIconExtension> all() {
+        return Hudson.getInstance().getExtensionList(PromotionIconExtension.class);
+    }
+
+    public static PromotionIconExtension getPromotionIcon(String name) {
+        for (PromotionIconExtension extension : all()) {
+            if (extension.getName().equals(name)) {
+                return extension;
+            }
+        }
+        return null;
+    }
+}
Index: src/main/resources/hudson/plugins/promoted_builds/JobPropertyImpl/config.jelly
===================================================================
--- src/main/resources/hudson/plugins/promoted_builds/JobPropertyImpl/config.jelly	(revision 36090)
+++ src/main/resources/hudson/plugins/promoted_builds/JobPropertyImpl/config.jelly	(working copy)
@@ -10,12 +10,9 @@
             </f:entry>
             <f:entry title="Icon">
               <select class="setting-input" name="config.icon">
-                <f:option selected="${s.icon=='star-gold'}"   value="star-gold">Gold star</f:option>
-                <f:option selected="${s.icon=='star-blue'}"   value="star-blue">Blue star</f:option>
-                <f:option selected="${s.icon=='star-green'}"  value="star-green">Green star</f:option>
-                <f:option selected="${s.icon=='star-orange'}" value="star-orange">Orange star</f:option>
-                <f:option selected="${s.icon=='star-purple'}" value="star-purple">Purple star</f:option>
-                <f:option selected="${s.icon=='star-red'}"    value="star-red">Red star</f:option>
+                <j:forEach var="icon" items="${descriptor.promotionIcons}">
+                  <f:option selected="${s.icon==icon.name}" value="${icon.name}">${icon.description}</f:option>
+                </j:forEach>
               </select>
             </f:entry>
             <f:section title="Criteria">
Index: src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/badge.jelly
===================================================================
--- src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/badge.jelly	(revision 36090)
+++ src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/badge.jelly	(working copy)
@@ -4,7 +4,7 @@
       <a href="${link}promotion/">
         <img width="16" height="16"
           title="${status.name}"
-          src="${rootURL}/plugin/promoted-builds/icons/16x16/${status.getProcess().getIcon()}.gif"/>
+          src="${rootURL}/plugin/${status.getProcess().getIconPlugin()}/icons/16x16/${status.getProcess().getIcon()}.gif"/>
       </a>
     </j:forEach>
   </j:if>
Index: src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/index.jelly
===================================================================
--- src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/index.jelly	(revision 36090)
+++ src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/index.jelly	(working copy)
@@ -18,7 +18,7 @@
       <!-- list promotions that are already attained -->
       <j:forEach var="p" items="${it.promotions}">
         <h2>
-          <img src="${rootURL}/plugin/promoted-builds/icons/32x32/${p.getProcess().getIcon()}.gif"/> ${p.name}
+          <img src="${rootURL}/plugin/${p.getProcess().getIconPlugin()}/icons/32x32/${p.getProcess().getIcon()}.gif"/> ${p.name}
         </h2>

         <!-- history of this promotion -->
Index: src/main/resources/hudson/plugins/promoted_builds/PromotedProjectAction/index.jelly
===================================================================
--- src/main/resources/hudson/plugins/promoted_builds/PromotedProjectAction/index.jelly	(revision 36090)
+++ src/main/resources/hudson/plugins/promoted_builds/PromotedProjectAction/index.jelly	(working copy)
@@ -7,7 +7,7 @@
       <!-- list promotions that are already attained -->
       <j:forEach var="c" items="${it.processes}">
         <h2>
-          <img src="${rootURL}/plugin/promoted-builds/icons/32x32/${c.getIcon()}.gif"/> ${c.name}
+          <img src="${rootURL}/plugin/${c.getIconPlugin()}/icons/32x32/${c.getIcon()}.gif"/> ${c.name}
         </h2>

         <j:set var="b" value="${it.getLatest(c)}" />