<style>p { margin: 0; }span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left:0; padding-left:5px;}blockquote blockquote{ border-color: #00bcd4; color: #00bcd4;}blockquote blockquote blockquote{ border-color: #43a047; color: #43a047;} table.grid{ border-collapse: collapse;} table.grid td, table.grid th { border: 1px solid #ddd;} .fr-fic.fr-dib{ display: block; margin: 5px auto;}.fr-fic.fr-dib.fr-fir{ text-align: right; margin: 5px 0 5px auto;}.fr-fic.fr-dib.fr-fil{ text-align: left; margin: 5px auto 5px 0;}.fr-fic.fr-dii{ float: none; margin: 5px auto;}.fr-fic.fr-dii.fr-fil{ float: left; margin: 5px auto;}.fr-fic.fr-dii.fr-fir{ float: right; margin: 5px auto;}img.fr-dib.fr-fir { margin-right: 0; text-align: right;}img.fr-dib.fr-fil { margin-left: 0; text-align: left;}img.fr-dib { margin: 5px auto; display: block; float: none;}img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC;}img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc;}img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;}</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
img.fr-dib.fr-fir {
margin-right: 0; text-align: right;
}
img.fr-dib.fr-fil {
margin-left: 0; text-align: left;
}
img.fr-dib {
margin: 5px auto; display: block; float: none;
}
img.fr-bordered {
box-sizing: content-box; border: solid 5px #CCC;
}
img.fr-shadow {
box-shadow: 10px 10px 5px 0px #cccccc;
}
img.fr-rounded {
border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
}
</style><p><strong>In this guide we will cover:</strong></p><p><strong>- How to automate SoW creation</strong></p><p><strong>- How to create project tasks based on your SoW using AI</strong></p><p><br></p><p><br></p><p>The statement of work against your opportunity tickets can be generated automatically based on the services you are quoting the customer for. When quoting customers for products that each have their own statement of works, these statements of works can be combined into a single SoW that can be given to the customer as part of the quote. This allows you to have statement of works generate automatically, changing dynamically based on the products and services you are providing/quoting the customer for. </p><p><br></p><p>This is an alternative to setting the SoW against the opportunity template then adjusting the SoW based on the specific services being quoted. By setting the SoW against each service product, then having each SoW combined automatically, no (to little) adjustments will need to be made as the SoW will cover all the service products being quoted/provided. </p><p><br></p><p>If the opportunity is for a project, you can then have the project tasks for the project be generated/created automatically based on the SoW. This uses AI to evaluate the SoW for the project, then create project tasks based on this. </p><p><br></p><p>This functionality works using runbooks that are available in instances of HaloPSA that were created after January 2025. If your Halo instance was created/deployed before this, or you are using a different Halo product (ITSM, CRM) you can use this guide to set up this functionality in your instance or contact our support team for information on having this functionality set up in your Halo instance. </p><p><br></p><p><strong><span style="font-size: 14pt;">How to automate SoW creation</span></strong></p><p>Raise an opportunity ticket in your instance. This opportunity will need to be using the out-of-the-box workflow 'Opportunity Management with SoW Generation', this will not be assigned to the opportunity ticket by default so you will need to change this manually. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjRmNzE3ZjA2LTRiZjAtNDY2My1iN2I1LTQxOWM3NjdkMmZkNCJ9.Sd_33hUp7Fi7wHQnrgZkEWyGKFVJQ4rH95sVgAnIW-s" class="fr-fic fr-fil fr-dib" width="1105" style="width: 1107px; height: 476.545px;" height="477"></p><p><strong><span style="font-size: 10pt;">Fig 1. Opportunity workflow</span></strong></p><p><br></p><p>If you have already configured an opportunity workflow in your instance and you would like to use this workflow instead of the out-of-the-box workflow, you will need to add the action 'Generate SoW' to your workflow. This action will need to be added to a workflow step that follows the generation of a quote. </p><p><br></p><p>Raise a quote against the opportunity ticket, containing all the products/services required. Ensure the service product being quoted has a statement of work against it. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjUxNWQ4YzUzLTNiMzEtNDk3OC05NzNlLTk2MWQ1ZjBlMTNkOSJ9.66gKEmSuaJtJAap7-NOaXwvcDMfixoYIbwYEvqpRXE8" class="fr-fic fr-fil fr-dib" width="1205" style="width: 1207px; height: 686.416px;" height="686"></p><p><strong><span style="font-size: 10pt;">Fig 2. Quotation raised</span></strong></p><p><br></p><p>In the figure 2 example the product 'Server Migration' has a SoW against it as it is a service to implement, with terms, however the 'Server' product does not as it is just a hardware item. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImEzNGQxYTE5LTMwNDMtNDMyZC1hNjA5LTJjNzEzNjU0YjkyNSJ9.ZFYhVIB4_XXfEf0RU_swom0aR_5DFpFQkpmXiYxg1UA" class="fr-fic fr-fil fr-dib" width="848" style="width: 850px; height: 496.406px;" height="496"></p><p><strong><span style="font-size: 10pt;">Fig 3. Statement of work against product</span></strong></p><p><br></p><p>Once the quote is saved head back to the opportunity ticket. Now you can use the action 'Generate SoW' on the opportunity ticket. This action will create a statement of work for the opportunity based on SoWs against the product(s) on the quote that you just created. </p><p><br></p><p>When using the action select the quote you just created in the 'Primary Quote' field. The 'Project Task Creation Method' field is used to determine how project tasks on future project tickets linked to this quote, are created. It will not impact the SoW being generated here, but will impact how project tickets are created, if you are quoting for a project, see the section of this article 'AI project task creation' for more information on this.</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImYxMTRjOGExLWM0YmYtNDlhMy05YzQyLWViZWQzYzlkMjk3MyJ9.b6GKjpR8GxDiJX4U3mGlStrFnQM98gGD9Q7E-tWusFY" class="fr-fic fr-fil fr-dib" width="878" style="width: 880px; height: 427.89px;" height="428"></p><p><strong><span style="font-size: 10pt;">Fig 4. Use Generate SoW action</span></strong></p><p><br></p><p>Once the action is saved you will see an automation run against the ticket in the progress feed. Then in the 'SoW' tab you will see your newly generated SoW, this will contain the SoW set against the item(s) on the quote. If there were multiple items on the quote with SoWs (multiple services) the SoW field against the opportunity will contain the SoW for each product, this will be separated out per product so the customer can see which product/service the SoW related to. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjRlODZkNGRmLTA1ZTctNDRkMS04NjJmLWE4YTg2ZjA0YTg5YyJ9.ki6eNWPMnyAxgnKVHBCPWdoymxd1LXG5qVnKJ9ITBEM" class="fr-fic fr-fil fr-dib" width="1170" style="width: 1172px; height: 703.55px;" height="704"></p><p><strong><span style="font-size: 10pt;">Fig 5. Generated SoW against opportunity ticket</span></strong></p><p><br></p><p><strong><span style="font-size: 11pt;"><em>Note: The SoW will follow the formatting of the SoW against each product so ensure your SoWs have consistent formatting. </em></span></strong><span style="font-size: 11pt;"><em><br></em></span></p><p><br></p><p>From here you can make changes to the statement of work if required.</p><p><br></p><p>Now when you send the quote off to the customer to be approved this SoW will be visible to this customer. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjExMzJmN2M5LWJkZWYtNDU1YS1iNGJkLTYzOTgwZDFkZGI1NiJ9.0jcw1jagW3dhox9Xzbauxj2Hi54B_z_4o8AdngEMuXY" class="fr-fic fr-fil fr-dib" width="1360" style="width: 1362px; height: 603.729px;" height="604"></p><p><strong><span style="font-size: 10pt;">Fig 6. SoW against quote in portal</span></strong></p><p><br></p><p>This allows you to have a more dynamic and automated way of generating your statement of work. Storing and pulling the SoW from a product saves you having to input the SoW manually against an opportunity, or create multiple opportunity templates with different SoWs. </p><p><br></p><p>From here the statement of work can be used, in conjunction with AI to generate project tasks for the project that has been quoted for. </p><p><br></p><p><strong><span style="font-size: 14pt;">AI Project task creation</span></strong></p><p>AI can be used to generate project tasks for a project ticket based on the statement of work for the project. This allows you to have dynamic and automated project task creation, rather than having to configure project templates with fixed project tasks. The tasks created can change for every ticket based on the work that has been agreed to be carried out for the project. </p><p><br></p><p>AI project task creation uses a runbook to have an AI model check the SoW against the project ticket, then create project tasks based on the stages within the SoW. Therefore, to use this functionality you will need to have AI functionality enabled in your instance. This functionality can be used when using the 'Default Halo Connection' AI connection method when in a trial instance. If you are in a live production instance you will need to have your own AI connection to use this functionality, for more information on our other connection methods check out <a data-fr-linked="true" href="https://usehalo.com/halopsa/guides/2385">https://usehalo.com/halopsa/guides/2385</a>.</p><p><br></p><p>You will also need to have a SoW pre-set against an entity related to the project. The SoW will either need to be set against to the project template or against the opportunity related to the project. Methods for project task creation will differ based on where your SoW is set, follow the appropriate section below. </p><p><br></p><p><strong><span style="font-size: 12pt;">Project task creation - Using SoW from opportunity</span></strong></p><p>If you have your SoW for the project you are carrying out stored against the opportunity ticket for the project, use the method in this section to generate project tasks using AI. </p><p><br></p><p>First ensure you have raised an opportunity and quote for the project you are creating. In order to have the SoW against the opportunity pull through to the project ticket we create we will need to create the project ticket using a sales order, for more detailed information on how to create projects from sales orders see our article <a data-fr-linked="true" href="https://usehalo.com/halopsa/guides/2035">https://usehalo.com/halopsa/guides/2035</a>. </p><p><br></p><p>Against the opportunity ticket you will need to have the field 'Project Task Creation Method' set to be 'AI-From SoW'. If you are using the method outlined above to generate the SoW from the quote products, this field will need to be set when generating the SoW for the opportunity. Otherwise you will need to ensure this field is added to your opportunity ticket details, and set this before a sales order is created. This is because, this field is used to trigger automatic project task creation. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjU5ODUxOWY0LWJiMWYtNDcyMC1hMDkwLWE4ZTEwY2ZmZDE5YSJ9.MLkZXnighUyc9Omhh_5GXqQgl0Gxz-jI9KvU0EstrcQ" class="fr-fic fr-fil fr-dib" width="584" style="width: 586px; height: 238.518px;" height="239"></p><p><strong><span style="font-size: 10pt;">Fig 7. Project Task Creation Method</span></strong></p><p><br></p><p>Open the quote raised/associated to this opportunity, and raise a sales order from this quote containing the project and products you have quoted for. This sales order will be linked to both the opportunity and the quote. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImFlYzNiZDczLTUzZDQtNDBlOS1hY2M4LTFhMDY2MzFiNzg2ZiJ9.E3CL7hqmfaCFtnR5_tDT0eKJnXxRLd8bARYY-w9_-NU" class="fr-fic fr-fil fr-dib" width="1395" style="width: 1397px; height: 580.028px;" height="580"></p><p><strong><span style="font-size: 10pt;">Fig 8. Sales order for project quote</span></strong></p><p><br></p><p>From here, create the project. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImIwMDU3NmIwLTA4MDItNDk4YS04NGIwLWY5NDRlNjIyNzAyNyJ9.DLb4O6gsMxeBvYCFaS4GOw_FlSmiWMoV3S1kkWmJecU" class="fr-fic fr-fil fr-dib" width="1370" style="width: 1372px; height: 371px;" height="371"></p><p><strong><span style="font-size: 10pt;">Fig 11. Create project from SO</span></strong></p><p><br></p><p><strong><em>Note: In order to be able to create a project from a sales order line item, the product must have a project template set against it. In order for the SoW from the opportunity ticket to copy over to the project ticket ensure the project template against the product does not have a SoW set against it. Otherwise this SoW will be used.</em></strong></p><p><br></p><p>Once the project is created the SoW will automatically pull through from the opportunity ticket. After a few minutes project tasks will be created against the project too. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjJmZDVjZjIyLWM3ZjAtNDUwMC05ZDFjLWU3YWEwMzk0ZDg2NSJ9.1etq4tPN0xzpSm7TuMnTp6kGUdaWGryR8lWuxnA3dLA" class="fr-fic fr-fil fr-dib" width="1388" style="width: 1390px; height: 529.894px;" height="530"></p><p><strong><span style="font-size: 10pt;">Fig 12. Project tasks created from SoW</span></strong></p><p><br></p><p><strong><em>Note: The tasks may take up to 10 minutes to create (Typically it only takes 1 minute), this depends on the AI model you are using and the length of your SoW. </em></strong></p><p><br></p><p>The tasks created will have their summary populated based on the headers of each section from the statement of work. The ticket details will contain the details for this section of the SoW.</p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImMwMjMzNmI5LTBiNDQtNDU5NC1hODI2LTRkZDU1ZTI2NzY2MiJ9.tuGjpkmWuclhvwZZYAY6F43R-JFTjV_nMTA2QqPGR98" class="fr-fic fr-fil fr-dib" width="1358" style="width: 1360px; height: 439.202px;" height="439"></p><p><strong><span style="font-size: 10pt;">Fig 13. Project task created from SoW</span></strong></p><p><br></p><p id="isPasted"><strong><span style="font-size: 12pt;">Project Task creation - Using SoW from a Project Template</span></strong></p><p>If you have your SoW stored against your project template, use the method in this section to generate project tasks using AI.</p><p><br></p><p>First ensure you have the following fields against your project ticket:</p><ul><li>Template</li><li>Project Task Creation Method (CFProjectTaskCreationMethod)</li></ul><p><br></p><p>Log a project ticket, ensuring the field 'Project Task Creation Method' is set to be 'AI - From SoW'. Also ensure you have selected a project template. </p><p><br></p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjUzNzNlZmNiLTIzMjQtNGFhNi05ZTQ5LThjNGI3ZGUwNjM4MSJ9.J_7rT8X9QhxN-VuDRpJ46TquEkyrYBjjfme501lm4kU" class="fr-fic fr-fil fr-dib" width="1475" style="width: 1477px; height: 708.407px;" height="708"></p><p><strong><span style="font-size: 10pt;">Fig 14. Log project ticket</span></strong></p><p><br></p><p>The project template chosen must have the SoW set/stored within the template (set under values tab). </p><p><br></p><p>Once the ticket is logged you will see the SoW under the 'SoW' tab. You will also see project tasks have been created automatically. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjJmN2M3N2U3LWFiMTEtNDUyZC05YmQ0LWM3MGNmNGU2OWVhNSJ9.dIckpm37For630Eg2I3OROrXoeG0M4r3ZdOaxjCxCgo" class="fr-fic fr-fil fr-dib" width="1283" style="width: 1285px; height: 500.421px;" height="500"></p><p><strong><span style="font-size: 10pt;">Fig 15. Project tasks</span></strong></p><p><br></p><p>If your project template has other child templates against it, set to be created as project tasks, these will be created in addition to the AI project tasks. But keep in mind if you are using project milestones any project tasks generated by AI will not be assigned to a milestone, but other tasks under other milestones will not be affected. </p><p><br></p>