opportunityopportunityproductGenerate a proposal from a Dynamics 365 opportunity
A proposal is a quote with a story around it: why the customer is looking, what you propose, what it costs, what happens next. The story fields already exist on the opportunity: description, current situation, customer need, proposed solution. The products are opportunity products.
VerseDocs lets the template decide which sections to print. A heading and paragraph wrapped in {{#if opportunity.customerneed}} disappear when the seller has not filled the field, so a thin opportunity produces a short, clean proposal instead of a document full of blanks.
Unlimited watermarked use, no time limit. $2,400 a year per tenant removes the watermark.
From record to proposal in 3 steps
Start from the quote template
Download the quote starter, change the bound table to opportunity and the manifest's link-entity to opportunityproduct (from opportunityid to opportunityid, alias lines). The line-item row works unchanged because the product columns share names.
Add the narrative sections
Insert headings for Situation, Need, Proposed solution and wrap each heading and body in {{#if opportunity.<field>}} … {{/if}} so empty ones vanish.
Generate from the opportunity
Open the record, click Generate document, choose the template and Word or PDF. The file attaches to the record's timeline without a flow.
Start from the quote starter
opportunity has currentsituation, customerneed and proposedsolution as multi-line text columns; each becomes a conditional section. Estimated value is {{opportunity.estimatedvalue}} and the close date {{opportunity._raw.estimatedclosedate:MMMM yyyy}}.
- Header with quote number, generation date and valid-until date
- Bill-to address that drops the second line when it is empty
- Line items from the quote's products: name or write-in description, quantity, unit price, discount, amount
- Subtotal, conditional discount, tax, conditional freight, total from the quote record's own money fields
- Notes paragraph that disappears when the quote has no description
Tokens in the template
Proposal for {{opportunity.parentaccountid}} · prepared {{date:d MMMM yyyy}}
{{#if opportunity.currentsituation}}Where you are today
{{opportunity.currentsituation}}{{/if}}
{{#if opportunity.proposedsolution}}What we propose
{{opportunity.proposedsolution}}{{/if}}
{{#each opportunity.lines}}{{productid}}{{productdescription}} | {{_raw.quantity:0.##}} | {{extendedamount}}{{/each}}
Estimated total {{opportunity.estimatedvalue}}Paste any of this into the template playground with the sample data to see it render in your browser.
- Can a section be removed entirely, heading included, when a field is empty?
- Yes. Put the heading paragraph and the body paragraph between the {{#if}} and {{/if}}. The whole range is removed when the condition is false; if the tags share a paragraph with other text, only the content between them goes.
- Can the proposal include the account's logo or a product image?
- Images come in through the flow-driven action, Populate a Word Template with Data (vdocs_TemplateDocx), which takes an images map in Options alongside the Data you assemble in the flow; place {{image:logo width=40mm}} in the template. The record-bound actions and the form button do not take an images map.
- How is this different from Word templates in Dynamics 365?
- Built-in Word templates cannot do conditional sections, cannot repeat a row containing an image, and cannot run from a flow. VerseDocs does all three and also produces PDF.
Rendered in your tenant. Priced per tenant.
VerseDocs is a managed solution of Dataverse plug-ins. Templates, field values and generated files stay in your environment. Try every feature free with a watermark; one licence key removes it for every environment, user and document in the tenant.