20.12 | 8 | | | Challenge des phosphates-Grand prix de Ben Guerir (1.2) | 164.5 | | 3 | more |
19.12 | 8 | | | Challenge des phosphates-Grand Prix Fkih Ben Saleh (1.2) | 136.2 | | 3 | more |
17.12 | 3 | | | Challenge des phosphates-Grand prix de Khouribga (1.2) | 133.7 | 7 | 16 | more |
15.11 › 22.1115-22/11 | | | | Tour of Rwanda (2.2) | | | | more |
20.11 | DNF | | | S5Stage 5 - Muhanga › Rubavu | 139.3 | | | |
19.11 | 31 | 39 | | S4Stage 4 - Musanze › Nyanza | 166.2 | | | |
18.11 | 43 | 44 | | S3Stage 3 - Kigali › Musanze | 102.7 | | | |
17.11 | 45 | 43 | | S2Stage 2 - Kigali › Huye | 120.3 | | | |
16.11 | 22 | 43 | | S1Stage 1 - Nyagatare › Rwamagana | 119.9 | | | |
15.11 | 56 | 56 | | ProloguePrologue - Kigali › Kigali | 3.5 | | | |
15.10 › 18.1015-18/10 | | | | Grand Prix Chantal Biya (2.2) | | | | more |
| 3 | | | Youth classificationYouth classification | | | | |
| 10 | | | Mountains classificationMountains classification | | | | |
| 8 | | | Points classificationPoints classification | | | | |
| 9 | | | General classificationGeneral classification | | 2 | | |
18.10 | 10 | | | S4Stage 4 - Sangmelima › Yaoundé | 165 | | | |
17.10 | 27 | 17 | | S3Stage 3 - Zoetele › Meyomessala | 130 | | | |
16.10 | 3 | 12 | | S2Stage 2 - Yaoundé › Ebolowa | 155.3 | 1 | 2 | |
15.10 | 30 | 30 | | S1Stage 1 - Douala › Douala | 112.5 | | | |
25.09 | 71 | | | World Championships MU - Road Race (WC) | 162 | | | more |
21.09 | 42 | | | World Championships MU - ITT (WC) | 29.9 | | | more |
22.08 › 29.0822-29/8 | | | | Tour de l'Avenir (2.Ncup) | | | | more |
| 32 | | | General classificationGeneral classification | | | | |
29.08 | 71 | | | S7Stage 7 - Saint-Michel-de-Maurienne › Les Bottières - Les Sybelles | 93.5 | | | |
28.08 | 18 | 27 | | S6Stage 6 - Bourg-Saint-Maurice › Saint-Michel-de-Maurienne | 128.2 | | | |
27.08 | 37 | 38 | | S5Stage 5 - Megève › La Rosière-Montvalezan | 103.1 | | | |
26.08 | 61 | 60 | | S4Stage 4 - Annemasse › Cluses | 146.7 | | | |
25.08 | 85 | 85 | | S3Stage 3 - Champagnole › Tournus | 137 | | | |
24.08 | 90 | 87 | | S2Stage 2 - Avallon › Arbois | 193.5 | | | |
23.08 | 54 | 97 | | S1Stage 1 - Chablis › Toucy | 160.5 | | | |
22.08 | 102 | 102 | | ProloguePrologue - Tonnerre › Tonnerre | 3.5 | | | |
29.07 › 02.0829-2/7 | | | | Tour Alsace (2.2) | | | | more |
| 39 | | | Youth classificationYouth classification | | | | |
| 66 | | | General classificationGeneral classification | | | | |
02.08 | 71 | | | S4Stage 4 - Colmar › Sélestat | 160.6 | | | |
01.08 | 76 | 66 | | S3Stage 3 - Ribeauvillé › Markstein | 155.2 | | | |
31.07 | 61 | 53 | | S2Stage 2 - Dannemarie › Huningue | 150.2 | | | |
30.07 | 49 | 53 | | S1Stage 1 - Strasbourg › Bischoffsheim | 159.2 | | | |
29.07 | 133 | 133 | | ProloguePrologue - Sausheim › Sausheim | 7.1 | | | |
26.07 | 24 | | | Coppa dei Laghi - Trofeo Almar (1.Ncup) | 180 | | | more |
14.07 › 19.0714-19/7 | | | | Giro Ciclistico della Valle d'Aosta Mont Blanc (2.2U) | | | | more |
| 31 | | | General classificationGeneral classification | | | | |
19.07 | 58 | | | S5Stage 5 - Pré-Saint-Didier › Colle del Gran San Bernardo | 86.6 | | | |
18.07 | 68 | 25 | | S4Stage 4 - Pollein › Saint-Christophe | 152.2 | | | |
17.07 | 41 | 23 | | S3Stage 3 - Gressan › Valtournenche | 162.3 | | | |
16.07 | 27 | 16 | | S2Stage 2 - Courmayeur › Pont-Saint-Martin | 151.2 | | | |
15.07 | 20 | 20 | | S1Stage 1 - Morillon › Morillon | 151.3 | | | |
14.07 | 72 | 72 | | ProloguePrologue - Morillon › Morillon | 5.4 | | | |
14.06 | 8 | | | National Championships Morocco ME - Road Race (NC) | 150 | | 3 | more |
12.06 | 3 | | | National Championships Morocco ME - ITT (NC) | 30 | 2 | 2 | more |
10.05 | 1 | | | Challenge du Prince - Trophée de la Maison Royale (1.2) | 100 | 15 | 40 | more |
09.05 | 3 | | | Challenge du Prince - Trophée de l'Anniversaire (1.2) | 170 | 7 | 16 | more |
07.05 | 3 | | | Challenge du Prince - Trophée Princier (1.2) | 162 | 7 | 16 | more |
03.04 › 12.043-12/4 | | | | Tour du Maroc (2.2) | | | | more |
| 1 | | | Youth classificationYouth classification | | | | |
| 16 | | | Mountains classificationMountains classification | | | | |
| 15 | | | Points classificationPoints classification | | | | |
| 3 | | | General classificationGeneral classification | | 14 | 16 | |
12.04 | 18 | | | S10Stage 10 - Rabat › Casablanca | 120 | | | |
11.04 | 50 | 3 | | S9Stage 9 - Souk Elarbaa du Gharb › Kènitra | 148.3 | | | |
10.04 | 12 | 3 | | S8Stage 8 - Tétouan › Tanger | 104.4 | | | |
09.04 | 10 | 3 | | S7Stage 7 - Nador › El Hoceima | 155 | | | |
08.04 | 16 | 1 | | S6Stage 6 - Oujda › Nador | 138.5 | | | |
07.04 | 19 | 1 | | S5Stage 5 - Guercif › Oujda | 159 | | | |
06.04 | 10 | 3 | | S4Stage 4 - Fès › Taza | 117.5 | | | |
05.04 | 19 | 2 | | S3Stage 3 - Khènifra › Fès | 165.4 | | | |
04.04 | 23 | 3 | | S2Stage 2 - Marrakech › Beni-Mellal | 192.3 | | | |
03.04 | 3 | 3 | | S1Stage 1 - Settat › Marrakech | 170 | 1 | 2 | |
06.03 | 23 | | | Circuit International d\'Alger (1.2) | 105 | | | more |
01.03 | 3 | | | Les Challenges de la Marche Verte - GP Al Massira (1.2) | 140 | 7 | 16 | more |
28.02 | 3 | | | Les Challenges de la Marche Verte - GP Oued Eddahab (1.2) | 103 | 7 | 16 | more |
26.02 | 4 | | | Les Challenges de la Marche Verte - GP Sakia El Hamra (1.2) | 162 | 4 | 12 | more |
14.01 › 18.0114-18/1 | | | | Tour of Egypt (2.2) | | | | more |
| 1 | | | Youth classificationYouth classification | | | | |
| 9 | | | General classificationGeneral classification | | 2 | | |
18.01 | 7 | | | S4Stage 4 - Makadi › Makadi | 121 | | | |
17.01 | 11 | 9 | | S3Stage 3 - Makadi › Makadi | 142 | | | |
16.01 | 23 | 9 | | S2Stage 2 - Hurgada Airport › Hurgada Airport | 159 | | | |
15.01 | 13 | 11 | | S1Stage 1 - Hurghada › Hurghada | 185 | | | |
14.01 | 32 | 32 | | ProloguePrologue - Hurghada › Hurghada | 8 | | | |