Index: /applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/EdigeoFileVEC.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/EdigeoFileVEC.java	(revision 33684)
+++ /applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/EdigeoFileVEC.java	(revision 33685)
@@ -455,4 +455,12 @@
     }
 
+    /**
+     * Adds a predicate to ignore special types of objects based on their SCD identifier.
+     * @param types SCD identifiers to ignore
+     */
+    public static void addIgnoredScdObjects(String... types) {
+        addIgnoredObject(o -> Arrays.asList(types).contains(o.scdRef.identifier));
+    }
+
     private static Predicate<ObjectBlock> predicate(String key, String... values) {
         return o -> {
@@ -564,7 +572,9 @@
     private static <T extends OsmPrimitive> T addPrimitiveAndTags(DataSet ds, ObjectBlock obj, T osm) {
         if (osm != null) {
-            osm.put("cadastre_scd", obj.scdRef.identifier);
             for (int i = 0; i < obj.nAttributes; i++) {
-                osm.put(obj.attributeDefs.get(i).identifier, obj.attributeValues.get(i));
+                String key = obj.attributeDefs.get(i).identifier;
+                if (!key.startsWith("ID_S_ATT_")) { // Ignore Z_1_2_2 text attributes
+                    osm.put(key, obj.attributeValues.get(i));
+                }
             }
             if (osm.getDataSet() == null) {
Index: /applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciReader.java
===================================================================
--- /applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciReader.java	(revision 33684)
+++ /applications/editors/josm/plugins/cadastre-fr/src/org/openstreetmap/josm/plugins/fr/cadastre/edigeo/pci/EdigeoPciReader.java	(revision 33685)
@@ -14,4 +14,5 @@
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.function.Predicate;
 
 import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
@@ -19,7 +20,10 @@
 import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
 import org.apache.commons.compress.utils.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.text.WordUtils;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.DataSet.UploadPolicy;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
 import org.openstreetmap.josm.io.AbstractReader;
@@ -42,9 +46,10 @@
 
         // Ignored objects
-        EdigeoFileVEC.addIgnoredObject("PTCANV_id");  // Canvas point
-        EdigeoFileVEC.addIgnoredObject("BORNE_id");   // Property boundary marker
-        EdigeoFileVEC.addIgnoredObject("BOULON_id");  // Property boundary marker for Alsace and Moselle
-        EdigeoFileVEC.addIgnoredObject("CROIX_id");   // Property boundary marker for Alsace and Moselle
-        EdigeoFileVEC.addIgnoredObject("SYMBLIM_id"); // Common wall symbol
+        EdigeoFileVEC.addIgnoredScdObjects(
+                "PTCANV_id",   // Canvas point
+                "BORNE_id",    // Property boundary marker
+                "BOULON_id",   // Property boundary marker for Alsace and Moselle
+                "CROIX_id",    // Property boundary marker for Alsace and Moselle
+                "SYMBLIM_id"); // Common wall symbol
         EdigeoFileVEC.addIgnoredObject("SYM_id",
                 "30", // Water stream arrow
@@ -64,5 +69,17 @@
         EdigeoFileVEC.addObjectPostProcessor("21", "highway=road"); // Way
         EdigeoFileVEC.addObjectPostProcessor("22", "highway=road"); // Road trigger
-        EdigeoFileVEC.addObjectPostProcessor("23", "highway=path"); // Path
+        EdigeoFileVEC.addObjectPostProcessor((o, p) -> { // Path / Footway
+            String highwayValue = "path";
+            if (p instanceof Way) {
+                Way w = (Way) p;
+                Predicate<Way> isBuilding = x -> x.hasKey("building");
+                if (w.firstNode().getParentWays().stream().anyMatch(isBuilding)
+                  || w.lastNode().getParentWays().stream().anyMatch(isBuilding)) {
+                    highwayValue = "footway";
+                }
+            }
+            p.put("highway", highwayValue);
+            p.remove("SYM_id");
+        }, "SYM_id", "23"); // Path / Footway
         EdigeoFileVEC.addObjectPostProcessor("24", "man_made=pipeline"); // Pipeline
         EdigeoFileVEC.addObjectPostProcessor("25", "man_made=pipeline"); // Aqueduct
@@ -83,5 +100,5 @@
         EdigeoFileVEC.addObjectPostProcessor("65", "leisure=swimming_pool;access=private"); // Swimming pool
 
-        // Mapping TEX*_id => name
+        // Mapping TEX*_id => name (first step)
         EdigeoFileVEC.addObjectPostProcessor((o, p) -> {
             StringBuffer sb = new StringBuffer(p.get("TEX_id").trim());
@@ -95,5 +112,5 @@
                 p.remove(t);
             }
-            p.put("name", sb.toString().replaceAll("    ", " ").replaceAll("   ", " ").replaceAll("  ", " "));
+            setName(p, sb.toString());
         }, "TEX_id");
 
@@ -120,5 +137,5 @@
             p.put("admin_level", "8");
             p.put("ref:INSEE", "XX"+p.get("IDU_id")); // TODO: find department number
-            p.put("name", p.get("TEX2_id")); // TODO: lowercase
+            p.put("name", WordUtils.capitalizeFully(p.get("TEX2_id")));
             p.remove("IDU_id");
             p.remove("TEX2_id");
@@ -129,4 +146,15 @@
             p.put("ref", p.get("IDU_id"));
             p.remove("IDU_id");
+            p.remove("ICL_id");
+            p.remove("COAR_id");
+            p.remove("COPL_id");
+            p.remove("DEDI_id");
+            p.remove("DIS_id");
+            p.remove("DRED_id");
+            p.remove("EOR_id");
+            p.remove("INDP_id");
+            p.remove("INP_id");
+            p.remove("QUPL_id");
+            p.remove("SUPF_id");
         }, o -> o.hasScdIdentifier("SECTION_id") || o.hasScdIdentifier("SUBDSECT_id")
              || o.hasScdIdentifier("PARCELLE_id") || o.hasScdIdentifier("SUBDFISC_id") || o.hasScdIdentifier("CHARGE_id"));
@@ -144,6 +172,10 @@
 
         EdigeoFileVEC.addObjectPostProcessor((o, p) -> {
-            p.put("place", "isolated_dwelling");
+            p.put("place", "unknown");
         }, o -> o.hasScdIdentifier("LIEUDIT_id"));
+
+        EdigeoFileVEC.addObjectPostProcessor((o, p) -> {
+            p.remove("ORI_id");
+        }, o -> o.hasScdIdentifier("TPOINT_id"));
 
         EdigeoFileVEC.addObjectPostProcessor((o, p) -> {
@@ -155,4 +187,22 @@
             p.put("waterway", "riverbank");
         }, o -> o.hasScdIdentifier("TRONFLUV_id"));
+
+        // Mapping TEX*_id => name (last step)
+        for (String t : Arrays.asList("TEX2_id", "TEX3_id", "TEX4_id", "TEX5_id", "TEX6_id", "TEX7_id", "TEX8_id", "TEX9_id")) {
+            EdigeoFileVEC.addObjectPostProcessor((o, p) -> {
+                setName(p, p.get(t));
+                p.remove(t);
+            }, t);
+        }
+    }
+
+    private static void setName(OsmPrimitive p, String input) {
+        if (input != null) {
+            String name = input.replaceAll("    ", " ").replaceAll("   ", " ").replaceAll("  ", " ");
+            if (name.length() > 2 && StringUtils.isAllUpperCase(name)) {
+                name = WordUtils.capitalizeFully(name);
+            }
+            p.put("name", name);
+        }
     }
 
