All document types
Dynamics 365 Salesopportunityopportunityproduct

Generate 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.

How it works

From record to proposal in 3 steps

01

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.

02

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.

03

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.

The template

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.

Questions
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.