diff --git a/libraries/flows.robot b/libraries/flows.robot
index 8e15939..8772e63 100644
--- a/libraries/flows.robot
+++ b/libraries/flows.robot
@@ -28,20 +28,21 @@
     [Documentation]  Calculate how many flows should be created based on the workflow, the number of UNIs
     ...     and whether the subscribers have been provisioned
     [Arguments]  ${workflow}    ${uni_count}    ${olt_count}    ${provisioned}
-    ...     ${withEapol}    ${withDhcp}     ${withIgmp}
+    ...     ${withEapol}    ${withDhcp}     ${withIgmp}    ${withLldp}
     ${expectedFlows}=   Run Keyword If  $workflow=="att"  Calculate Att flows
-    ...     ${uni_count}    ${olt_count}    ${provisioned}  ${withEapol}    ${withDhcp}     ${withIgmp}
+    ...     ${uni_count}    ${olt_count}    ${provisioned}  ${withEapol}    ${withDhcp}     ${withIgmp}     ${withLldp}
     ...     ELSE IF     $workflow=="dt"     Calculate Dt Flows
-    ...     ${uni_count}    ${olt_count}    ${provisioned}
+    ...     ${uni_count}    ${olt_count}    ${provisioned}  ${withLldp}
     ...     ELSE IF     $workflow=="tt"     Calculate Tt Flows
-    ...     ${uni_count}    ${olt_count}    ${provisioned}  ${withDhcp}     ${withIgmp}
+    ...     ${uni_count}    ${olt_count}    ${provisioned}  ${withDhcp}     ${withIgmp}     ${withLldp}
     ...     ELSE    Fail    Workflow ${workflow} should be one of 'att', 'dt', 'tt'
     Return From Keyword     ${expectedFlows}
 
 Calculate Att flows
     [Documentation]  Calculate the flow for the ATT workflow
     ...     NOTE we may need to add support for IGMP enabled/disabled
-    [Arguments]  ${uni_count}    ${olt_count}   ${provisioned}      ${withEapol}    ${withDhcp}     ${withIgmp}
+    [Arguments]  ${uni_count}    ${olt_count}   ${provisioned}      ${withEapol}    ${withDhcp}
+    ...     ${withIgmp}    ${withLldp}
     # (1 EAPOL * ONUs) * (1 LLDP + 1 DHCP * OLTS) before provisioning
     # (1 EAPOL, 1 DHCP, 1 IGMP, 4 DP * ONUs) * (1 LLDP + 1 DHCP * OLTS) after provisioning
     ${eapFlowsCount}=   Run Keyword If   $withEapol=='true'
@@ -56,43 +57,70 @@
     ...     Evaluate     2
     ...     ELSE
     ...     Evaluate     0
+    ${lldpFlowsCount}=   Run Keyword If   $withLldp=='true'
+    ...     Evaluate     1
+    ...     ELSE
+    ...     Evaluate     0
     ${flow_count}=  Run Keyword If  $provisioned=='false'
-    ...     Evaluate    (${uni_count} * ${eapFlowsCount}) + (${olt_count} * 2)
+    ...     Calculate Att Preprovisioned Flows   ${olt_count}    ${uni_count}
+    ...     ${eapFlowsCount}   ${dhcpFlowsCount}   ${igmpFlowsCount}    ${lldpFlowsCount}
     ...     ELSE
     ...     Calculate Att Provisioned Flows  ${olt_count}    ${uni_count}
-    ...     ${eapFlowsCount}   ${dhcpFlowsCount}   ${igmpFlowsCount}
+    ...     ${eapFlowsCount}   ${dhcpFlowsCount}   ${igmpFlowsCount}    ${lldpFlowsCount}
     Return From Keyword     ${flow_count}
 
+Calculate Att Preprovisioned Flows
+    [Documentation]  This calcualtes the flows before subscribers are provisioned in the ATT workflow
+    [Arguments]  ${olt_count}   ${uni_count}    ${eapFlowsCount}   ${dhcpFlowsCount}
+    ...    ${igmpFlowsCount}   ${lldpFlowsCount}
+    ${eap}=     Evaluate    ${uni_count} * ${eapFlowsCount}
+    ${nni}=     Evaluate    (${olt_count} * ${dhcpFlowsCount}) + (${olt_count} * ${lldpFlowsCount})
+    ${total}=   Evaluate    ${eap} + ${nni}
+    Return From Keyword     ${total}
+
 Calculate Att Provisioned Flows
-    [Documentation]  This calculate the flows for provisioned subscribers in the ATT workflow
-    [Arguments]  ${olt_count}   ${uni_count}    ${eapFlowsCount}   ${dhcpFlowsCount}   ${igmpFlowsCount}
+    [Documentation]  This calculates the flows for provisioned subscribers in the ATT workflow
+    [Arguments]  ${olt_count}   ${uni_count}    ${eapFlowsCount}   ${dhcpFlowsCount}
+    ...    ${igmpFlowsCount}   ${lldpFlowsCount}
     ${eap}=     Evaluate    ${uni_count} * ${eapFlowsCount}
     ${dhcp}=    Evaluate    ${uni_count} * ${dhcpFlowsCount}
     ${igmp}=    Evaluate    ${uni_count} * ${igmpFlowsCount}
     ${dataplane}=   Evaluate    ${uni_count} * 4
-    ${nni}=     Evaluate    ${olt_count} * 2
+    ${nni}=     Evaluate    (${olt_count} * ${dhcpFlowsCount}) + (${olt_count} * ${lldpFlowsCount})
     ${total}=   Evaluate    ${eap} + ${dhcp} + ${igmp} + ${dataplane} + ${nni}
     Return From Keyword     ${total}
 
 Calculate Dt flows
     [Documentation]  Calculate the flow for the DT workflow
-    [Arguments]  ${uni_count}    ${olt_count}   ${provisioned}
+    [Arguments]  ${uni_count}    ${olt_count}   ${provisioned}   ${withLldp}
     # (1 LLDP * OLTS) before provisioning
     # (4 DP * ONUs) * (1 LLDP * OLTS) after provisioning
+    ${lldpFlowsCount}=   Run Keyword If   $withLldp=='true'
+    ...     Evaluate     1
+    ...     ELSE
+    ...     Evaluate     0
     ${flow_count}=  Run Keyword If  $provisioned=='false'
-        ...     Evaluate    (${olt_count} * 1)
+        ...     Evaluate    (${olt_count} * ${lldpFlowsCount})
         ...     ELSE
-        ...     Evaluate    (${uni_count} * 4) + (${olt_count} * 1)
+        ...     Evaluate    (${uni_count} * 4) + (${olt_count} * ${lldpFlowsCount})
     Return From Keyword     ${flow_count}
 
 Calculate Tt flows
     [Documentation]  Calculate the flow for the TT workflow
-    [Arguments]  ${uni_count}    ${olt_count}   ${provisioned}  ${withDhcp}     ${withIgmp}
+    [Arguments]  ${uni_count}    ${olt_count}   ${provisioned}  ${withDhcp}     ${withIgmp}    ${withLldp}
     # TODO account for withDhcp, withIgmp, see Calculate Att flows for examples
     # (1 LLDP + 1 DHCP * OLTS) before provisioning
     # (1 DHCP, 1 IGMP, 4 DP * ONUs) * (1 LLDP + 1 DHCP * OLTS) after provisioning
+    ${dhcpFlowsCount}=   Run Keyword If   $withDhcp=='true'
+    ...     Evaluate     1
+    ...     ELSE
+    ...     Evaluate     0
+    ${lldpFlowsCount}=   Run Keyword If   $withLldp=='true'
+    ...     Evaluate     1
+    ...     ELSE
+    ...     Evaluate     0
     ${flow_count}=  Run Keyword If  $provisioned=='false'
-        ...     Evaluate    (${olt_count} * 2)
+        ...     Evaluate    (${olt_count} * ${dhcpFlowsCount}) + (${olt_count} * ${lldpFlowsCount})
         ...     ELSE
-        ...     Evaluate    (${uni_count} * 6) + (${olt_count} * 1)
+        ...     Evaluate    (${uni_count} * 6) + (${olt_count} * ${dhcpFlowsCount}) + (${olt_count} * ${lldpFlowsCount})
     Return From Keyword     ${flow_count}
\ No newline at end of file
