diff --git a/src/main/java/org/jboss/set/draw/entities/Participant.java b/src/main/java/org/jboss/set/draw/entities/Participant.java
index 542b553..242d560 100644
--- a/src/main/java/org/jboss/set/draw/entities/Participant.java
+++ b/src/main/java/org/jboss/set/draw/entities/Participant.java
@@ -3,6 +3,7 @@
 import io.smallrye.mutiny.tuples.Tuple2;
 
 import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
@@ -53,8 +54,9 @@ private Tuple2<Integer, Set<String>> getProjectComponents(String project) {
 
     public boolean isAssignable(Issue issue) {
         Tuple2<Integer, Set<String>> issuesComponentsKey = getProjectComponents(issue.getProject());
+        List<String> components = issue.getComponents();
         boolean betweenComponents = issuesComponentsKey.getItem2() == null ||
-                issuesComponentsKey.getItem2().containsAll(issue.getComponents());
+                !issuesComponentsKey.getItem2().stream().filter(components::contains).toList().isEmpty();
         boolean canAssignIssue = assignableIssues == null || assignableIssues > 0;
         return issuesComponentsKey.getItem1() != 0 && betweenComponents && canAssignIssue;
     }
diff --git a/src/test/java/org/jboss/set/draw/LotteryDrawingTest.java b/src/test/java/org/jboss/set/draw/LotteryDrawingTest.java
index 3343321..3021558 100644
--- a/src/test/java/org/jboss/set/draw/LotteryDrawingTest.java
+++ b/src/test/java/org/jboss/set/draw/LotteryDrawingTest.java
@@ -30,7 +30,7 @@ protected List<com.atlassian.jira.rest.client.api.domain.Issue> setupIssues() {
                     new IssueWrapper("Issue", 1L, "WFLY", IssueStatus.NEW, Set.of("Documentation")),
                     new IssueWrapper("Issue", 2L, "RESTEASY", IssueStatus.NEW, Set.of("Logging")),
                     new IssueWrapper("Issue", 3L, "WELD", IssueStatus.NEW, Set.of("Logging")),
-                    new IssueWrapper("Issue", 4L, "WELD", IssueStatus.NEW, Set.of("Logging")));
+                    new IssueWrapper("Issue", 4L, "WELD", IssueStatus.NEW, Set.of("Logging", "Documentation")));
         } catch (URISyntaxException e) {
             throw new RuntimeException(e);
         }
@@ -279,4 +279,88 @@ public void testAssigningMaximumIssues() throws Exception {
         assertEquals(1, sent.size());
         assertEquals(Lottery.createEmailText(email, List.of(ourIssues.get(2))), sent.get(0).getText());
     }
+
+    @Test
+    public void testAssigningPartialComponentsHitFromConfig() throws Exception {
+        String email = "Tadpole@thehuginn.com";
+        String configFile = """
+                delay: P14D
+                participants:
+                  - email: %s
+                    maxIssues: 5
+                    projects:
+                      - project: WELD
+                        components: [Logging]
+                        maxIssues: 2""".formatted(email);
+
+        LotteryConfig testLotteryConfig = objectMapper.readValue(configFile, LotteryConfig.class);
+        when(lotteryConfigProducer.getLotteryConfig()).thenReturn(testLotteryConfig);
+
+        StringWriter sw = new StringWriter();
+        CommandLine cmd = new CommandLine(app);
+        cmd.setOut(new PrintWriter(sw));
+
+        int exitCode = cmd.execute();
+        assertEquals(0, exitCode);
+
+        List<Mail> sent = mailbox.getMailsSentTo(email);
+        assertEquals(1, sent.size());
+        assertEquals(Lottery.createEmailText(email, List.of(ourIssues.get(2), ourIssues.get(3))), sent.get(0).getText());
+    }
+
+    @Test
+    public void testAssigningPartialComponentsHitFromIssue() throws Exception {
+        String email = "Tadpole@thehuginn.com";
+        String configFile = """
+                delay: P14D
+                participants:
+                  - email: %s
+                    maxIssues: 5
+                    projects:
+                      - project: WELD
+                        components: [Logging, Documentation]
+                        maxIssues: 2""".formatted(email);
+
+        LotteryConfig testLotteryConfig = objectMapper.readValue(configFile, LotteryConfig.class);
+        when(lotteryConfigProducer.getLotteryConfig()).thenReturn(testLotteryConfig);
+
+        StringWriter sw = new StringWriter();
+        CommandLine cmd = new CommandLine(app);
+        cmd.setOut(new PrintWriter(sw));
+
+        int exitCode = cmd.execute();
+        assertEquals(0, exitCode);
+
+        List<Mail> sent = mailbox.getMailsSentTo(email);
+        assertEquals(1, sent.size());
+        assertEquals(Lottery.createEmailText(email, List.of(ourIssues.get(2), ourIssues.get(3))), sent.get(0).getText());
+    }
+
+    @Test
+    public void testAssigningWithNoPartialComponentsHit() throws Exception {
+        String email = "Tadpole@thehuginn.com";
+        String configFile = """
+                delay: P14D
+                participants:
+                  - email: %s
+                    maxIssues: 5
+                    projects:
+                      - project: WELD
+                        components: [Documentation]
+                        maxIssues: 2""".formatted(email);
+
+        LotteryConfig testLotteryConfig = objectMapper.readValue(configFile, LotteryConfig.class);
+        when(lotteryConfigProducer.getLotteryConfig()).thenReturn(testLotteryConfig);
+
+        StringWriter sw = new StringWriter();
+        CommandLine cmd = new CommandLine(app);
+        cmd.setOut(new PrintWriter(sw));
+
+        int exitCode = cmd.execute();
+        assertEquals(0, exitCode);
+
+        List<Mail> sent = mailbox.getMailsSentTo(email);
+        assertEquals(1, sent.size());
+        assertEquals(Lottery.createEmailText(email, List.of(ourIssues.get(3))), sent.get(0).getText());
+    }
 }