Welcome! Strafford is now BARBRI! The expert courses you know from the trusted global leader in legal education.
About the Course
Introduction
This CLE webinar will guide counsel for project owners, general contractors, and subcontractors on mitigating the risks associated with the upstream/downstream dynamics of construction projects. The panel will discuss strategies for vetting downstream insurance coverage and minimizing risk for all parties by balancing indemnification and other terms between the parties while navigating state anti-indemnity statutes.
Description
While parties to construction projects have historically relied on indemnification and additional insured provisions to manage risk between upstream and downstream parties to the contract, nearly all states have enacted anti-indemnity statutes that curtail these provisions to varying degrees.
For example, a Texas statute voids an indemnity provision in a construction contract if it requires the indemnitor to indemnify, defend, or hold harmless the indemnitee for a claim caused in whole or in part by that indemnitee's own negligence. The law also prohibits requiring the purchase of additional insured coverage that would cover the indemnitee's negligence. Other states have similar laws.
In the construction industry, comprehensive vetting of downstream parties' insurance coverage is vital yet challenging. So, counsel should understand vetting strategies to protect their clients' interests while maintaining compliance.
Listen as our panel of experienced construction lawyers provides expert guidance on vetting downstream insurance coverage for construction projects and offers critical insight on contract terms, pitfalls to avoid, and mitigating risk.
-
This 90-minute webinar is eligible in most states for 1.5 CLE credits.
-
Live Online
On Demand
Date + Time
- event
Tuesday, January 21, 2025
- schedule
1:00 p.m. ET./10:00 a.m. PT
- Introduction
- Upstream/downstream risks
- Owner
- General contractor
- Subcontractor
- Others
- Notable state anti-indemnity statutes
- Impact on indemnification clauses
- Impact on additional insured clauses
- Strategies for vetting downstream insurance coverage: minimizing risk while maintaining compliance
- Drafting considerations for indemnification and additional insured provisions
- Practitioner takeaways
The panel will review these and other important considerations:
- What impact do state anti-indemnity statutes have on risk transfer between parties to construction projects?
- How is this reflected in downstream insurance requirements, and what are key drafting considerations for indemnification and additional insured provisions?
- What are best practices for vetting insurance coverage to mitigate client risk while maintaining compliance?
The following has evaluated to null or missing:
==> barbriRedisCacheAPI.get("barbripass", productId) [in template "20096#20121#2885355" at line 5, column 77]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: response = barbriRedisCacheAPI.get("b... [in template "20096#20121#2885355" at line 5, column 66]
---- 1<#assign productId = ''/> 2 <#if (productID.getData())?? && productID.getData()?has_content> 3 <#assign productId = productID.getData() /> 4 </#if> 5 <#assign response = barbriRedisCacheAPI.get("barbripass", productId) 6 json = jsonFactoryUtil.createJSONObject(response) 7 /> 8 9 <div class="card"> 10 <div class="card-body"> 11 <div class="row justify-content-between align-items-center"> 12 <div class="col-auto col-sm-auto"> 13 <div class="btn cle_btn" id="modalPassShortName"><#if (passName.getData())??>${passName.getData()}</#if></div> 14 </div> 15 <div class="col-auto col-sm-auto pl-lg-0"> 16 <span class="sale-price" id="modalPassPrice">$${json.pricebook?replace(",", "")?number?string("#,##0.00")}</span> 17 </div> 18 </div> 19 <div class="small_heading_area" id="modalPassFullName"><#if (title.getData())??>${title.getData()}</#if></div> 20 <p><#if (unlimitedText.getData())??>${unlimitedText.getData()}</#if>:</p> 21 <ul class="common-list disc_list paddNone"> 22 <#if (benefits.getData())??> 23 ${benefits.getData()} 24</#if> 25 </ul> 26 </div> 27 <div class="btn-float"> 28 <div class="premium-cle-pass cart-item"> 29 <input type="hidden" class="product-id" value="${productId}"> 30 <input type="hidden" class="product-name" value="${json.name}"> 31 <input type="hidden" class="pass-value" value="${passName.getData()}"> 32 <input type="hidden" class="product-price" value="${json.pricebook}"> 33 <input type="hidden" class="passAccessLengthMonths" value="${json.passAccessLengthMonths}"> 34 <input type="hidden" class="product-pass" value="family"> 35 <input type="hidden" class="product-expireDate" value=""> 36 37 <button 38 class="btn pc_theme_btn btn-primary btn_maxwidth_xxl_large add-to-cart" 39 aria-label="Buy Now" 40 data-redirect-checkout="true" 41 > 42 <span class="material-symbols-rounded"> shopping_cart </span> 43 Buy Now 44 </button> 45 </div> 46 </div> 47 </div> 48 49 <script> 50$(document).on('click', '.add-to-cart', function () { 51 let monthsToAdd = parseInt($(".passAccessLengthMonths").val()); 52 let currentDate = new Date(); 53 let futureDate = new Date(currentDate); 54 // Add months dynamically 55 futureDate.setMonth(futureDate.getMonth() + monthsToAdd); 56 57 // Handle overflow (e.g., Jan 31 + 1 month) 58 if (futureDate.getDate() !== currentDate.getDate()) { 59 futureDate.setDate(0); // last day of previous month 60 } 61 62 // Format as MM/DD/YYYY 63 function formatDateMMDDYYYY(date) { 64 let mm = String(date.getMonth() + 1).padStart(2, '0'); 65 let dd = String(date.getDate()).padStart(2, '0'); 66 let yyyy = date.getFullYear(); 67 return mm + '/' + dd + '/' + yyyy; 68 } 69 $(".product-expireDate").val(formatDateMMDDYYYY(futureDate)); 70 71 // Then close the modal 72 $('.single_option').modal('hide'); 73 }); 74</script> The following has evaluated to null or missing:
==> barbriRedisCacheAPI.get("barbripass", productId) [in template "20096#20121#2885355" at line 5, column 77]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: response = barbriRedisCacheAPI.get("b... [in template "20096#20121#2885355" at line 5, column 66]
---- 1<#assign productId = ''/> 2 <#if (productID.getData())?? && productID.getData()?has_content> 3 <#assign productId = productID.getData() /> 4 </#if> 5 <#assign response = barbriRedisCacheAPI.get("barbripass", productId) 6 json = jsonFactoryUtil.createJSONObject(response) 7 /> 8 9 <div class="card"> 10 <div class="card-body"> 11 <div class="row justify-content-between align-items-center"> 12 <div class="col-auto col-sm-auto"> 13 <div class="btn cle_btn" id="modalPassShortName"><#if (passName.getData())??>${passName.getData()}</#if></div> 14 </div> 15 <div class="col-auto col-sm-auto pl-lg-0"> 16 <span class="sale-price" id="modalPassPrice">$${json.pricebook?replace(",", "")?number?string("#,##0.00")}</span> 17 </div> 18 </div> 19 <div class="small_heading_area" id="modalPassFullName"><#if (title.getData())??>${title.getData()}</#if></div> 20 <p><#if (unlimitedText.getData())??>${unlimitedText.getData()}</#if>:</p> 21 <ul class="common-list disc_list paddNone"> 22 <#if (benefits.getData())??> 23 ${benefits.getData()} 24</#if> 25 </ul> 26 </div> 27 <div class="btn-float"> 28 <div class="premium-cle-pass cart-item"> 29 <input type="hidden" class="product-id" value="${productId}"> 30 <input type="hidden" class="product-name" value="${json.name}"> 31 <input type="hidden" class="pass-value" value="${passName.getData()}"> 32 <input type="hidden" class="product-price" value="${json.pricebook}"> 33 <input type="hidden" class="passAccessLengthMonths" value="${json.passAccessLengthMonths}"> 34 <input type="hidden" class="product-pass" value="family"> 35 <input type="hidden" class="product-expireDate" value=""> 36 37 <button 38 class="btn pc_theme_btn btn-primary btn_maxwidth_xxl_large add-to-cart" 39 aria-label="Buy Now" 40 data-redirect-checkout="true" 41 > 42 <span class="material-symbols-rounded"> shopping_cart </span> 43 Buy Now 44 </button> 45 </div> 46 </div> 47 </div> 48 49 <script> 50$(document).on('click', '.add-to-cart', function () { 51 let monthsToAdd = parseInt($(".passAccessLengthMonths").val()); 52 let currentDate = new Date(); 53 let futureDate = new Date(currentDate); 54 // Add months dynamically 55 futureDate.setMonth(futureDate.getMonth() + monthsToAdd); 56 57 // Handle overflow (e.g., Jan 31 + 1 month) 58 if (futureDate.getDate() !== currentDate.getDate()) { 59 futureDate.setDate(0); // last day of previous month 60 } 61 62 // Format as MM/DD/YYYY 63 function formatDateMMDDYYYY(date) { 64 let mm = String(date.getMonth() + 1).padStart(2, '0'); 65 let dd = String(date.getDate()).padStart(2, '0'); 66 let yyyy = date.getFullYear(); 67 return mm + '/' + dd + '/' + yyyy; 68 } 69 $(".product-expireDate").val(formatDateMMDDYYYY(futureDate)); 70 71 // Then close the modal 72 $('.single_option').modal('hide'); 73 }); 74</script> The following has evaluated to null or missing:
==> barbriRedisCacheAPI.get("barbripass", productId) [in template "20096#20121#2885355" at line 5, column 77]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: response = barbriRedisCacheAPI.get("b... [in template "20096#20121#2885355" at line 5, column 66]
---- 1<#assign productId = ''/> 2 <#if (productID.getData())?? && productID.getData()?has_content> 3 <#assign productId = productID.getData() /> 4 </#if> 5 <#assign response = barbriRedisCacheAPI.get("barbripass", productId) 6 json = jsonFactoryUtil.createJSONObject(response) 7 /> 8 9 <div class="card"> 10 <div class="card-body"> 11 <div class="row justify-content-between align-items-center"> 12 <div class="col-auto col-sm-auto"> 13 <div class="btn cle_btn" id="modalPassShortName"><#if (passName.getData())??>${passName.getData()}</#if></div> 14 </div> 15 <div class="col-auto col-sm-auto pl-lg-0"> 16 <span class="sale-price" id="modalPassPrice">$${json.pricebook?replace(",", "")?number?string("#,##0.00")}</span> 17 </div> 18 </div> 19 <div class="small_heading_area" id="modalPassFullName"><#if (title.getData())??>${title.getData()}</#if></div> 20 <p><#if (unlimitedText.getData())??>${unlimitedText.getData()}</#if>:</p> 21 <ul class="common-list disc_list paddNone"> 22 <#if (benefits.getData())??> 23 ${benefits.getData()} 24</#if> 25 </ul> 26 </div> 27 <div class="btn-float"> 28 <div class="premium-cle-pass cart-item"> 29 <input type="hidden" class="product-id" value="${productId}"> 30 <input type="hidden" class="product-name" value="${json.name}"> 31 <input type="hidden" class="pass-value" value="${passName.getData()}"> 32 <input type="hidden" class="product-price" value="${json.pricebook}"> 33 <input type="hidden" class="passAccessLengthMonths" value="${json.passAccessLengthMonths}"> 34 <input type="hidden" class="product-pass" value="family"> 35 <input type="hidden" class="product-expireDate" value=""> 36 37 <button 38 class="btn pc_theme_btn btn-primary btn_maxwidth_xxl_large add-to-cart" 39 aria-label="Buy Now" 40 data-redirect-checkout="true" 41 > 42 <span class="material-symbols-rounded"> shopping_cart </span> 43 Buy Now 44 </button> 45 </div> 46 </div> 47 </div> 48 49 <script> 50$(document).on('click', '.add-to-cart', function () { 51 let monthsToAdd = parseInt($(".passAccessLengthMonths").val()); 52 let currentDate = new Date(); 53 let futureDate = new Date(currentDate); 54 // Add months dynamically 55 futureDate.setMonth(futureDate.getMonth() + monthsToAdd); 56 57 // Handle overflow (e.g., Jan 31 + 1 month) 58 if (futureDate.getDate() !== currentDate.getDate()) { 59 futureDate.setDate(0); // last day of previous month 60 } 61 62 // Format as MM/DD/YYYY 63 function formatDateMMDDYYYY(date) { 64 let mm = String(date.getMonth() + 1).padStart(2, '0'); 65 let dd = String(date.getDate()).padStart(2, '0'); 66 let yyyy = date.getFullYear(); 67 return mm + '/' + dd + '/' + yyyy; 68 } 69 $(".product-expireDate").val(formatDateMMDDYYYY(futureDate)); 70 71 // Then close the modal 72 $('.single_option').modal('hide'); 73 }); 74</script> The following has evaluated to null or missing:
==> barbriRedisCacheAPI.get("barbripass", productId) [in template "20096#20121#2885355" at line 5, column 77]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: response = barbriRedisCacheAPI.get("b... [in template "20096#20121#2885355" at line 5, column 66]
---- 1<#assign productId = ''/> 2 <#if (productID.getData())?? && productID.getData()?has_content> 3 <#assign productId = productID.getData() /> 4 </#if> 5 <#assign response = barbriRedisCacheAPI.get("barbripass", productId) 6 json = jsonFactoryUtil.createJSONObject(response) 7 /> 8 9 <div class="card"> 10 <div class="card-body"> 11 <div class="row justify-content-between align-items-center"> 12 <div class="col-auto col-sm-auto"> 13 <div class="btn cle_btn" id="modalPassShortName"><#if (passName.getData())??>${passName.getData()}</#if></div> 14 </div> 15 <div class="col-auto col-sm-auto pl-lg-0"> 16 <span class="sale-price" id="modalPassPrice">$${json.pricebook?replace(",", "")?number?string("#,##0.00")}</span> 17 </div> 18 </div> 19 <div class="small_heading_area" id="modalPassFullName"><#if (title.getData())??>${title.getData()}</#if></div> 20 <p><#if (unlimitedText.getData())??>${unlimitedText.getData()}</#if>:</p> 21 <ul class="common-list disc_list paddNone"> 22 <#if (benefits.getData())??> 23 ${benefits.getData()} 24</#if> 25 </ul> 26 </div> 27 <div class="btn-float"> 28 <div class="premium-cle-pass cart-item"> 29 <input type="hidden" class="product-id" value="${productId}"> 30 <input type="hidden" class="product-name" value="${json.name}"> 31 <input type="hidden" class="pass-value" value="${passName.getData()}"> 32 <input type="hidden" class="product-price" value="${json.pricebook}"> 33 <input type="hidden" class="passAccessLengthMonths" value="${json.passAccessLengthMonths}"> 34 <input type="hidden" class="product-pass" value="family"> 35 <input type="hidden" class="product-expireDate" value=""> 36 37 <button 38 class="btn pc_theme_btn btn-primary btn_maxwidth_xxl_large add-to-cart" 39 aria-label="Buy Now" 40 data-redirect-checkout="true" 41 > 42 <span class="material-symbols-rounded"> shopping_cart </span> 43 Buy Now 44 </button> 45 </div> 46 </div> 47 </div> 48 49 <script> 50$(document).on('click', '.add-to-cart', function () { 51 let monthsToAdd = parseInt($(".passAccessLengthMonths").val()); 52 let currentDate = new Date(); 53 let futureDate = new Date(currentDate); 54 // Add months dynamically 55 futureDate.setMonth(futureDate.getMonth() + monthsToAdd); 56 57 // Handle overflow (e.g., Jan 31 + 1 month) 58 if (futureDate.getDate() !== currentDate.getDate()) { 59 futureDate.setDate(0); // last day of previous month 60 } 61 62 // Format as MM/DD/YYYY 63 function formatDateMMDDYYYY(date) { 64 let mm = String(date.getMonth() + 1).padStart(2, '0'); 65 let dd = String(date.getDate()).padStart(2, '0'); 66 let yyyy = date.getFullYear(); 67 return mm + '/' + dd + '/' + yyyy; 68 } 69 $(".product-expireDate").val(formatDateMMDDYYYY(futureDate)); 70 71 // Then close the modal 72 $('.single_option').modal('hide'); 73 }); 74</script> Recommended Resources