SLING-7991 - setting order to Integer.MAX_VALUE for processing last if start-order is not set.
diff --git a/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java b/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java
index e19ba12..8a84ddb 100644
--- a/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java
+++ b/src/main/java/org/apache/sling/feature/extension/content/ContentHandler.java
@@ -95,7 +95,14 @@
                 && extension.getName().equals(FeatureConstants.EXTENSION_NAME_CONTENT_PACKAGES)) {
             MultiValueMap orderedArtifacts = MultiValueMap.decorate(new LinkedHashMap<Integer, Collection<Artifact>>());
             for (final Artifact a : extension.getArtifacts()) {
-                orderedArtifacts.put(Integer.valueOf(a.getStartOrder()), a);
+                int order;
+                // content-packages without explicit start-order to be installed last
+                if (a.getMetadata().get(Artifact.KEY_START_ORDER) != null) {
+                    order = Integer.valueOf(a.getStartOrder());
+                } else {
+                    order = Integer.MAX_VALUE;
+                }
+                orderedArtifacts.put(order, a);
             }
             List<String> executionPlans = new ArrayList<String>();
             for (Object key : orderedArtifacts.keySet()) {