<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.appian.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>How to Generate Appian Documents</title><link>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>How to Generate Appian Documents</title><link>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents</link><pubDate>Tue, 23 Apr 2024 13:20:40 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:16ef41a1-1a36-4b42-8877-72b4ee1b2e96</guid><dc:creator>Appian Max Team</dc:creator><comments>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents#comments</comments><description>Current Revision posted to Guide by Appian Max Team on 4/23/2024 1:20:40 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;p&gt;Appian can generate documents to present data in a specific file format. Depending on your formatting needs and the number of documents that need to be generated there are several approaches to consider.&lt;/p&gt;
&lt;h2 id="alternatives_to_generating_documents"&gt;Alternatives to Generating Documents&lt;/h2&gt;
&lt;p&gt;First consider not generating documents, at least for your initial release. Instead send links to records and reports in Appian or have users print Appian screens using their browser if they need to use the data outside of Appian.&lt;/p&gt;
&lt;p&gt;For best results use Chrome for printing from Appian.&lt;/p&gt;
&lt;p&gt;Benefits of this simple, agile approach include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faster time to delivery as less time is spent implementing document generation functionality&lt;/li&gt;
&lt;li&gt;Feedback from users can be gathered to prioritize where document generation is really required&lt;/li&gt;
&lt;li&gt;All Appian interfaces have printer friendly stylesheet formats&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="document_generation_use_cases"&gt;Document Generation Use Cases&lt;/h2&gt;
&lt;p&gt;If you need to generate documents, consider whether you want to generate and store documents for later reference or simply need to generate them on-demand for immediate use.&lt;/p&gt;
&lt;h3 id="generate-and-store"&gt;Generate and Store&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Capture the state of data at a certain milestone in a process for later reference&lt;/li&gt;
&lt;li&gt;Generate a document on a schedule (e.g.: a monthly report)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stored documents can be downloaded instantly with one click from any SAIL interface&lt;/li&gt;
&lt;li&gt;Users don&amp;#39;t have to wait for the document to be generated&lt;/li&gt;
&lt;li&gt;Especially important if the document takes a long time to generate&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documents only reflect data at the time they are generated&lt;/li&gt;
&lt;li&gt;Stored documents may require tighter security to control access&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don&amp;#39;t try to keep stored documents up-to-date with frequent changes in the underlying data. Instead, use on-demand generation for these use cases.&lt;/p&gt;
&lt;h3 id="on-demand-generation"&gt;On-Demand Generation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Download a document representing the current state of data&lt;/li&gt;
&lt;li&gt;Send documents via email or to an external system&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generated document is always up-to-date&lt;/li&gt;
&lt;li&gt;Documents are only generated when they&amp;#39;re needed, reducing unnecessary load on the system
&lt;ul&gt;
&lt;li&gt;Especially important if the document format is complex or requires data from external systems&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users must explicitly request the generation (versus a one-click download)&lt;/li&gt;
&lt;li&gt;Users have to wait for the document to be generated&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="scalability_considerations"&gt;Scalability Considerations&lt;/h2&gt;
&lt;h3 id="high-fan-out"&gt;High Fan-Out&lt;/h3&gt;
&lt;p&gt;Fan-out describes how one action (user initiated or process driven) can cause the generation of many documents. High fan-out can cause a sudden increase in system load, degrading overall performance. The impact is worse when generating complex documents or when documents require information from external systems.&lt;/p&gt;
&lt;h3 id="data-from-external-systems"&gt;Data from External Systems&lt;/h3&gt;
&lt;p&gt;If your documents require data from an external system and you need to generate a high volume of documents, be aware of how that system scales in response to that load.&lt;/p&gt;
&lt;h2 id="general_guidance"&gt;General Guidance&lt;/h2&gt;
&lt;h3 id="do"&gt;Do&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Protect against performance risks by limiting fan-out and/or by throttling the batch size and rate at which documents can be generated
&lt;ul&gt;
&lt;li&gt;Understand the implications of peak volume, disk space usage, and integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/w/article/3216/performance-and-load-testing"&gt;Load test&lt;/a&gt; your solution using production-like scenarios&lt;/li&gt;
&lt;li&gt;Review guidance related to &lt;a href="/w/guide/3316/transferring-processing-large-data-sets-etl"&gt;transferring/processing of large data sets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Validate user entries if users have the ability to name documents or folders
&lt;ul&gt;
&lt;li&gt;Avoid using characters that are disallowed in Appian Document Management filenames (/ \ : ; &amp;lt; &amp;gt; &amp;quot; \* &amp;#39; ?)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Validate entries if the user text is entered directly into documents
&lt;ul&gt;
&lt;li&gt;For example, Word Doc from Template does not allow HTML formatting tags or tags that match the document template &lt;a href="https://docs.appian.com/suite/help/latest/Configuring_Delimiters_for_Document_Generation_Smart_Services.html"&gt;delimiters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="don-39-t"&gt;Don&amp;#39;t&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use any function or plug-in (such as Base64 Conversion) that will result in storing a large amount of text or binary data in process variables or node inputs/outputs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="doc_from_template_smart_services"&gt;Doc from Template Smart Services&lt;/h2&gt;
&lt;p&gt;Several smart services for generating documents are available out of the box:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/HTML_Doc_From_Template_Smart_Service.html"&gt;HTML Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Open_Office_Writer_Doc_From_Template_Smart_Service.html"&gt;Open Office Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/PDF_Doc_From_Template_Smart_Service.html"&gt;PDF Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Text_Doc_From_Template_Smart_Service.html"&gt;Text Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Word_Doc_from_Template_Smart_Service.html"&gt;Word Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quick and easy to implement&lt;/li&gt;
&lt;li&gt;Supports the needs for most document generation through token replacement (i.e. &lt;a href="https://en.wikipedia.org/wiki/Mail_merge"&gt;mail merge&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Lower performance risk than more complex options&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does not support dynamic content (showing/hiding sections or creating a table with an unknown number of rows)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dynamic_tables_and_content"&gt;Dynamic Tables and Content&lt;/h2&gt;
&lt;p&gt;The &lt;a href="/b/appmarket/posts/advanced-document-templating"&gt;Advanced Document Templating&lt;/a&gt; plug-in supports generating Microsoft Word (.docx) files with dynamic content where the format or number of elements like tables, lists, and images is not known in advance. Use this plug-in when the out of the box smart services are unable to meet your dynamic formatting requirements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supports dynamic length tables, showing/hiding content and embedding images&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires understanding &lt;a href="https://github.com/opensagres/xdocreport/wiki"&gt;Freemarker syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Uses a data model based on large XML strings which can increase system memory utilization&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dedicated_system"&gt;Dedicated System&lt;/h2&gt;
&lt;p&gt;Specialized systems should be used for very high volume or very specific document formatting requirements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide dynamic and flexible document generation&lt;/li&gt;
&lt;li&gt;Resources are scaled and managed independently of Appian, minimizing the performance impact on users&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires additional software and hosting costs&lt;/li&gt;
&lt;li&gt;Requires an expert to configure and manage the third-party system&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: design patterns, Architecture&lt;/div&gt;
</description></item><item><title>How to Generate Appian Documents</title><link>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents/revision/5</link><pubDate>Thu, 22 Feb 2024 21:17:12 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:16ef41a1-1a36-4b42-8877-72b4ee1b2e96</guid><dc:creator>Appian Max Team</dc:creator><comments>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents#comments</comments><description>Revision 5 posted to Guide by Appian Max Team on 2/22/2024 9:17:12 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;p&gt;Appian can generate documents to present data in a specific file format. Depending on your formatting needs and the number of documents that need to be generated there are several approaches to consider.&lt;/p&gt;
&lt;h2 id="alternatives_to_generating_documents"&gt;Alternatives to Generating Documents&lt;/h2&gt;
&lt;p&gt;First consider not generating documents, at least for your initial release. Instead send links to records and reports in Appian or have users print Appian screens using their browser if they need to use the data outside of Appian.&lt;/p&gt;
&lt;p&gt;For best results use Chrome for printing from Appian.&lt;/p&gt;
&lt;p&gt;Benefits of this simple, agile approach include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faster time to delivery as less time is spent implementing document generation functionality&lt;/li&gt;
&lt;li&gt;Feedback from users can be gathered to prioritize where document generation is really required&lt;/li&gt;
&lt;li&gt;All Appian interfaces have printer friendly stylesheet formats&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="document_generation_use_cases"&gt;Document Generation Use Cases&lt;/h2&gt;
&lt;p&gt;If you need to generate documents, consider whether you want to generate and store documents for later reference or simply need to generate them on-demand for immediate use.&lt;/p&gt;
&lt;h3 id="generate-and-store"&gt;Generate and Store&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Capture the state of data at a certain milestone in a process for later reference&lt;/li&gt;
&lt;li&gt;Generate a document on a schedule (e.g.: a monthly report)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stored documents can be downloaded instantly with one click from any SAIL interface&lt;/li&gt;
&lt;li&gt;Users don&amp;#39;t have to wait for the document to be generated&lt;/li&gt;
&lt;li&gt;Especially important if the document takes a long time to generate&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documents only reflect data at the time they are generated&lt;/li&gt;
&lt;li&gt;Stored documents may require tighter security to control access&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don&amp;#39;t try to keep stored documents up-to-date with frequent changes in the underlying data. Instead, use on-demand generation for these use cases.&lt;/p&gt;
&lt;h3 id="on-demand-generation"&gt;On-Demand Generation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Download a document representing the current state of data&lt;/li&gt;
&lt;li&gt;Send documents via email or to an external system&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generated document is always up-to-date&lt;/li&gt;
&lt;li&gt;Documents are only generated when they&amp;#39;re needed, reducing unnecessary load on the system
&lt;ul&gt;
&lt;li&gt;Especially important if the document format is complex or requires data from external systems&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users must explicitly request the generation (versus a one-click download)&lt;/li&gt;
&lt;li&gt;Users have to wait for the document to be generated&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="scalability_considerations"&gt;Scalability Considerations&lt;/h2&gt;
&lt;h3 id="high-fan-out"&gt;High Fan-Out&lt;/h3&gt;
&lt;p&gt;Fan-out describes how one action (user initiated or process driven) can cause the generation of many documents. High fan-out can cause a sudden increase in system load, degrading overall performance. The impact is worse when generating complex documents or when documents require information from external systems.&lt;/p&gt;
&lt;h3 id="data-from-external-systems"&gt;Data from External Systems&lt;/h3&gt;
&lt;p&gt;If your documents require data from an external system and you need to generate a high volume of documents, be aware of how that system scales in response to that load.&lt;/p&gt;
&lt;h2 id="general_guidance"&gt;General Guidance&lt;/h2&gt;
&lt;h3 id="do"&gt;Do&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Protect against performance risks by limiting fan-out and/or by throttling the batch size and rate at which documents can be generated
&lt;ul&gt;
&lt;li&gt;Understand the implications of peak volume, disk space usage, and integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/w/article/3216/performance-and-load-testing"&gt;Load test&lt;/a&gt; your solution using production-like scenarios&lt;/li&gt;
&lt;li&gt;Review guidance related to &lt;a href="/w/guide/3316/transferring-processing-large-data-sets-etl"&gt;transferring/processing of large data sets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Validate user entries if users have the ability to name documents or folders
&lt;ul&gt;
&lt;li&gt;Avoid using characters that are disallowed in Appian Document Management filenames (/ \ : ; &amp;lt; &amp;gt; &amp;quot; \* &amp;#39; ?)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Validate entries if the user text is entered directly into documents
&lt;ul&gt;
&lt;li&gt;For example, Word Doc from Template does not allow HTML formatting tags or tags that match the document template &lt;a href="https://docs.appian.com/suite/help/latest/Configuring_Delimiters_for_Document_Generation_Smart_Services.html"&gt;delimiters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="don-39-t"&gt;Don&amp;#39;t&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use any function or plug-in (such as Base64 Conversion) that will result in storing a large amount of text or binary data in process variables or node inputs/outputs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="doc_from_template_smart_services"&gt;Doc from Template Smart Services&lt;/h2&gt;
&lt;p&gt;Several smart services for generating documents are available out of the box:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/HTML_Doc_From_Template_Smart_Service.html"&gt;HTML Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Open_Office_Writer_Doc_From_Template_Smart_Service.html"&gt;Open Office Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/PDF_Doc_From_Template_Smart_Service.html"&gt;PDF Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Text_Doc_From_Template_Smart_Service.html"&gt;Text Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Word_Doc_from_Template_Smart_Service.html"&gt;Word Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quick and easy to implement&lt;/li&gt;
&lt;li&gt;Supports the needs for most document generation through token replacement (i.e. &lt;a href="https://en.wikipedia.org/wiki/Mail_merge"&gt;mail merge&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Lower performance risk than more complex options&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does not support dynamic content (showing/hiding sections or creating a table with an unknown number of rows)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dynamic_tables_and_content"&gt;Dynamic Tables and Content&lt;/h2&gt;
&lt;p&gt;The &lt;a href="/b/appmarket/posts/advanced-document-templating"&gt;Advanced Document Templating&lt;/a&gt; plug-in supports generating Microsoft Word (.docx) files with dynamic content where the format or number of elements like tables, lists, and images is not known in advance. Use this plug-in when the out of the box smart services are unable to meet your dynamic formatting requirements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supports dynamic length tables, showing/hiding content and embedding images&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires understanding &lt;a href="https://github.com/opensagres/xdocreport/wiki"&gt;Freemarker syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Uses a data model based on large XML strings which can increase system memory utilization&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dedicated_system"&gt;Dedicated System&lt;/h2&gt;
&lt;p&gt;Specialized systems should be used for very high volume or very specific document formatting requirements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide dynamic and flexible document generation&lt;/li&gt;
&lt;li&gt;Resources are scaled and managed independently of Appian, minimizing the performance impact on users&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires additional software and hosting costs&lt;/li&gt;
&lt;li&gt;Requires an expert to configure and manage the third-party system&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: design patterns, Architecture&lt;/div&gt;
</description></item><item><title>How to Generate Appian Documents</title><link>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents/revision/4</link><pubDate>Wed, 01 Nov 2023 15:17:34 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:16ef41a1-1a36-4b42-8877-72b4ee1b2e96</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents#comments</comments><description>Revision 4 posted to Guide by joel.larin on 11/1/2023 3:17:34 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;p&gt;Appian can generate documents to present data in a specific file format. Depending on your formatting needs and the number of documents that need to be generated there are several approaches to consider.&lt;/p&gt;
&lt;h2 id="alternatives_to_generating_documents"&gt;Alternatives to Generating Documents&lt;/h2&gt;
&lt;p&gt;First consider not generating documents, at least for your initial release. Instead send links to records and reports in Appian or have users print Appian screens using their browser if they need to use the data outside of Appian.&lt;/p&gt;
&lt;p&gt;For best results use Chrome for printing from Appian.&lt;/p&gt;
&lt;p&gt;Benefits of this simple, agile approach include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faster time to delivery as less time is spent implementing document generation functionality&lt;/li&gt;
&lt;li&gt;Feedback from users can be gathered to prioritize where document generation is really required&lt;/li&gt;
&lt;li&gt;All Appian interfaces have printer friendly stylesheet formats&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="document_generation_use_cases"&gt;Document Generation Use Cases&lt;/h2&gt;
&lt;p&gt;If you need to generate documents, consider whether you want to generate and store documents for later reference or simply need to generate them on-demand for immediate use.&lt;/p&gt;
&lt;h3 id="generate-and-store"&gt;Generate and Store&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Capture the state of data at a certain milestone in a process for later reference&lt;/li&gt;
&lt;li&gt;Generate a document on a schedule (e.g.: a monthly report)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stored documents can be downloaded instantly with one click from any SAIL interface&lt;/li&gt;
&lt;li&gt;Users don&amp;#39;t have to wait for the document to be generated&lt;/li&gt;
&lt;li&gt;Especially important if the document takes a long time to generate&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documents only reflect data at the time they are generated&lt;/li&gt;
&lt;li&gt;Stored documents may require tighter security to control access&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don&amp;#39;t try to keep stored documents up-to-date with frequent changes in the underlying data. Instead, use on-demand generation for these use cases.&lt;/p&gt;
&lt;h3 id="on-demand-generation"&gt;On-Demand Generation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Download a document representing the current state of data&lt;/li&gt;
&lt;li&gt;Send documents via email or to an external system&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generated document is always up-to-date&lt;/li&gt;
&lt;li&gt;Documents are only generated when they&amp;#39;re needed, reducing unnecessary load on the system
&lt;ul&gt;
&lt;li&gt;Especially important if the document format is complex or requires data from external systems&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users must explicitly request the generation (versus a one-click download)&lt;/li&gt;
&lt;li&gt;Users have to wait for the document to be generated&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="scalability_considerations"&gt;Scalability Considerations&lt;/h2&gt;
&lt;h3 id="high-fan-out"&gt;High Fan-Out&lt;/h3&gt;
&lt;p&gt;Fan-out describes how one action (user initiated or process driven) can cause the generation of many documents. High fan-out can cause a sudden increase in system load, degrading overall performance. The impact is worse when generating complex documents or when documents require information from external systems.&lt;/p&gt;
&lt;h3 id="data-from-external-systems"&gt;Data from External Systems&lt;/h3&gt;
&lt;p&gt;If your documents require data from an external system and you need to generate a high volume of documents, be aware of how that system scales in response to that load.&lt;/p&gt;
&lt;h2 id="general_guidance"&gt;General Guidance&lt;/h2&gt;
&lt;h3 id="do"&gt;Do&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Protect against performance risks by limiting fan-out and/or by throttling the batch size and rate at which documents can be generated
&lt;ul&gt;
&lt;li&gt;Understand the implications of peak volume, disk space usage, and integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/w/article/3216/performance-and-load-testing"&gt;Load test&lt;/a&gt; your solution using production-like scenarios&lt;/li&gt;
&lt;li&gt;Review guidance related to &lt;a href="/w/guide/3316/transferring-processing-large-data-sets-etl"&gt;transferring/processing of large data sets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Validate user entries if users have the ability to name documents or folders
&lt;ul&gt;
&lt;li&gt;Avoid using characters that are disallowed in Appian Document Management filenames (/ \ : ; &amp;lt; &amp;gt; &amp;quot; \* &amp;#39; ?)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Validate entries if the user text is entered directly into documents
&lt;ul&gt;
&lt;li&gt;For example, Word Doc from Template does not allow HTML formatting tags or tags that match the document template &lt;a href="https://docs.appian.com/suite/help/latest/Configuring_Delimiters_for_Document_Generation_Smart_Services.html"&gt;delimiters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="don-39-t"&gt;Don&amp;#39;t&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use any function or plug-in (such as Base64 Conversion) that will result in storing a large amount of text or binary data in process variables or node inputs/outputs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="doc_from_template_smart_services"&gt;Doc from Template Smart Services&lt;/h2&gt;
&lt;p&gt;Several smart services for generating documents are available out of the box:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/HTML_Doc_From_Template_Smart_Service.html"&gt;HTML Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Open_Office_Writer_Doc_From_Template_Smart_Service.html"&gt;Open Office Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/PDF_Doc_From_Template_Smart_Service.html"&gt;PDF Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Text_Doc_From_Template_Smart_Service.html"&gt;Text Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Word_Doc_from_Template_Smart_Service.html"&gt;Word Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quick and easy to implement&lt;/li&gt;
&lt;li&gt;Supports the needs for most document generation through token replacement (i.e. &lt;a href="https://en.wikipedia.org/wiki/Mail_merge"&gt;mail merge&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Lower performance risk than more complex options&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does not support dynamic content (showing/hiding sections or creating a table with an unknown number of rows)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dynamic_tables_and_content"&gt;Dynamic Tables and Content&lt;/h2&gt;
&lt;p&gt;The &lt;a href="/b/appmarket/posts/advanced-document-templating"&gt;Advanced Document Templating&lt;/a&gt; plug-in supports generating Microsoft Word (.docx) files with dynamic content where the format or number of elements like tables, lists, and images is not known in advance. Use this plug-in when the out of the box smart services are unable to meet your dynamic formatting requirements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supports dynamic length tables, showing/hiding content and embedding images&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires understanding &lt;a href="https://github.com/opensagres/xdocreport/wiki"&gt;Freemarker syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Uses a data model based on large XML strings which can increase system memory utilization&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dedicated_system"&gt;Dedicated System&lt;/h2&gt;
&lt;p&gt;Specialized systems should be used for very high volume or very specific document formatting requirements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide dynamic and flexible document generation&lt;/li&gt;
&lt;li&gt;Resources are scaled and managed independently of Appian, minimizing the performance impact on users&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires additional software and hosting costs&lt;/li&gt;
&lt;li&gt;Requires an expert to configure and manage the third-party system&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: design patterns, Architecture&lt;/div&gt;
</description></item><item><title>How to Generate Appian Documents</title><link>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents/revision/3</link><pubDate>Wed, 25 Oct 2023 13:26:15 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:16ef41a1-1a36-4b42-8877-72b4ee1b2e96</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents#comments</comments><description>Revision 3 posted to Guide by joel.larin on 10/25/2023 1:26:15 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;p&gt;Appian can generate documents to present data in a specific file format. Depending on your formatting needs and the number of documents that need to be generated there are several approaches to consider.&lt;/p&gt;
&lt;h2 id="alternatives_to_generating_documents"&gt;Alternatives to Generating Documents&lt;/h2&gt;
&lt;p&gt;First consider not generating documents, at least for your initial release. Instead send links to records and reports in Appian or have users print Appian screens using their browser if they need to use the data outside of Appian.&lt;/p&gt;
&lt;p&gt;For best results use Chrome for printing from Appian.&lt;/p&gt;
&lt;p&gt;Benefits of this simple, agile approach include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faster time to delivery as less time is spent implementing document generation functionality&lt;/li&gt;
&lt;li&gt;Feedback from users can be gathered to prioritize where document generation is really required&lt;/li&gt;
&lt;li&gt;All Appian interfaces have printer friendly stylesheet formats&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="document_generation_use_cases"&gt;Document Generation Use Cases&lt;/h2&gt;
&lt;p&gt;If you need to generate documents, consider whether you want to generate and store documents for later reference or simply need to generate them on-demand for immediate use.&lt;/p&gt;
&lt;h3 id="generate-and-store"&gt;Generate and Store&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Capture the state of data at a certain milestone in a process for later reference&lt;/li&gt;
&lt;li&gt;Generate a document on a schedule (e.g.: a monthly report)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stored documents can be downloaded instantly with one click from any SAIL interface&lt;/li&gt;
&lt;li&gt;Users don&amp;#39;t have to wait for the document to be generated&lt;/li&gt;
&lt;li&gt;Especially important if the document takes a long time to generate&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documents only reflect data at the time they are generated&lt;/li&gt;
&lt;li&gt;Stored documents may require tighter security to control access&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don&amp;#39;t try to keep stored documents up-to-date with frequent changes in the underlying data. Instead, use on-demand generation for these use cases.&lt;/p&gt;
&lt;h3 id="on-demand-generation"&gt;On-Demand Generation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Download a document representing the current state of data&lt;/li&gt;
&lt;li&gt;Send documents via email or to an external system&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generated document is always up-to-date&lt;/li&gt;
&lt;li&gt;Documents are only generated when they&amp;#39;re needed, reducing unnecessary load on the system
&lt;ul&gt;
&lt;li&gt;Especially important if the document format is complex or requires data from external systems&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users must explicitly request the generation (versus a one-click download)&lt;/li&gt;
&lt;li&gt;Users have to wait for the document to be generated&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="scalability_considerations"&gt;Scalability Considerations&lt;/h2&gt;
&lt;h3 id="high-fan-out"&gt;High Fan-Out&lt;/h3&gt;
&lt;p&gt;Fan-out describes how one action (user initiated or process driven) can cause the generation of many documents. High fan-out can cause a sudden increase in system load, degrading overall performance. The impact is worse when generating complex documents or when documents require information from external systems.&lt;/p&gt;
&lt;h3 id="data-from-external-systems"&gt;Data from External Systems&lt;/h3&gt;
&lt;p&gt;If your documents require data from an external system and you need to generate a high volume of documents, be aware of how that system scales in response to that load.&lt;/p&gt;
&lt;h2 id="general_guidance"&gt;General Guidance&lt;/h2&gt;
&lt;h3 id="do"&gt;Do&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Protect against performance risks by limiting fan-out and/or by throttling the batch size and rate at which documents can be generated
&lt;ul&gt;
&lt;li&gt;Understand the implications of peak volume, disk space usage, and integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/w/article/3216/performance-and-load-testing"&gt;Load test&lt;/a&gt; your solution using production-like scenarios&lt;/li&gt;
&lt;li&gt;Review guidance related to &lt;a href="/w/guide/3316/transferring-processing-large-data-sets-etl"&gt;transferring/processing of large data sets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Validate user entries if users have the ability to name documents or folders
&lt;ul&gt;
&lt;li&gt;Avoid using characters that are disallowed in Appian Document Management filenames (/ \ : ; &amp;lt; &amp;gt; &amp;quot; \* &amp;#39; ?)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Validate entries if the user text is entered directly into documents
&lt;ul&gt;
&lt;li&gt;For example, Word Doc from Template does not allow HTML formatting tags or tags that match the document template &lt;a href="https://docs.appian.com/suite/help/latest/Configuring_Delimiters_for_Document_Generation_Smart_Services.html"&gt;delimiters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="don-39-t"&gt;Don&amp;#39;t&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use any function or plug-in (such as Base64 Conversion) that will result in storing a large amount of text or binary data in process variables or node inputs/outputs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="doc_from_template_smart_services"&gt;Doc from Template Smart Services&lt;/h2&gt;
&lt;p&gt;Several smart services for generating documents are available out of the box:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/HTML_Doc_From_Template_Smart_Service.html"&gt;HTML Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Open_Office_Writer_Doc_From_Template_Smart_Service.html"&gt;Open Office Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/PDF_Doc_From_Template_Smart_Service.html"&gt;PDF Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Text_Doc_From_Template_Smart_Service.html"&gt;Text Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Word_Doc_from_Template_Smart_Service.html"&gt;Word Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quick and easy to implement&lt;/li&gt;
&lt;li&gt;Supports the needs for most document generation through token replacement (i.e. &lt;a href="https://en.wikipedia.org/wiki/Mail_merge"&gt;mail merge&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Lower performance risk than more complex options&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does not support dynamic content (showing/hiding sections or creating a table with an unknown number of rows)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dynamic_tables_and_content"&gt;Dynamic Tables and Content&lt;/h2&gt;
&lt;p&gt;The &lt;a href="/b/appmarket/posts/advanced-document-templating"&gt;Advanced Document Templating&lt;/a&gt; plug-in supports generating Microsoft Word (.docx) files with dynamic content where the format or number of elements like tables, lists, and images is not known in advance. Use this plug-in when the out of the box smart services are unable to meet your dynamic formatting requirements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supports dynamic length tables, showing/hiding content and embedding images&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires understanding &lt;a href="https://github.com/opensagres/xdocreport/wiki"&gt;Freemarker syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Uses a data model based on large XML strings which can increase system memory utilization&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dedicated_system"&gt;Dedicated System&lt;/h2&gt;
&lt;p&gt;Specialized systems should be used for very high volume or very specific document formatting requirements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide dynamic and flexible document generation&lt;/li&gt;
&lt;li&gt;Resources are scaled and managed independently of Appian, minimizing the performance impact on users&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires additional software and hosting costs&lt;/li&gt;
&lt;li&gt;Requires an expert to configure and manage the third-party system&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How to Generate Appian Documents</title><link>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents/revision/2</link><pubDate>Wed, 18 Oct 2023 20:28:01 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:16ef41a1-1a36-4b42-8877-72b4ee1b2e96</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents#comments</comments><description>Revision 2 posted to Guide by joel.larin on 10/18/2023 8:28:01 PM&lt;br /&gt;
&lt;div style="margin:8px 16% 8px 8%;"&gt;
&lt;p&gt;Appian can generate documents to present data in a specific file format. Depending on your formatting needs and the number of documents that need to be generated there are several approaches to consider.&lt;/p&gt;
&lt;h2 id="alternatives_to_generating_documents"&gt;Alternatives to Generating Documents&lt;/h2&gt;
&lt;p&gt;First consider not generating documents, at least for your initial release. Instead send links to records and reports in Appian or have users print Appian screens using their browser if they need to use the data outside of Appian.&lt;/p&gt;
&lt;p&gt;For best results use Chrome for printing from Appian.&lt;/p&gt;
&lt;p&gt;Benefits of this simple, agile approach include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faster time to delivery as less time is spent implementing document generation functionality&lt;/li&gt;
&lt;li&gt;Feedback from users can be gathered to prioritize where document generation is really required&lt;/li&gt;
&lt;li&gt;All Appian interfaces have printer friendly stylesheet formats&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="document_generation_use_cases"&gt;Document Generation Use Cases&lt;/h2&gt;
&lt;p&gt;If you need to generate documents, consider whether you want to generate and store documents for later reference or simply need to generate them on-demand for immediate use.&lt;/p&gt;
&lt;h3 id="generate-and-store"&gt;Generate and Store&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Capture the state of data at a certain milestone in a process for later reference&lt;/li&gt;
&lt;li&gt;Generate a document on a schedule (e.g.: a monthly report)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stored documents can be downloaded instantly with one click from any SAIL interface&lt;/li&gt;
&lt;li&gt;Users don&amp;#39;t have to wait for the document to be generated&lt;/li&gt;
&lt;li&gt;Especially important if the document takes a long time to generate&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documents only reflect data at the time they are generated&lt;/li&gt;
&lt;li&gt;Stored documents may require tighter security to control access&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Don&amp;#39;t try to keep stored documents up-to-date with frequent changes in the underlying data. Instead, use on-demand generation for these use cases.&lt;/p&gt;
&lt;h3 id="on-demand-generation"&gt;On-Demand Generation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Download a document representing the current state of data&lt;/li&gt;
&lt;li&gt;Send documents via email or to an external system&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Generated document is always up-to-date&lt;/li&gt;
&lt;li&gt;Documents are only generated when they&amp;#39;re needed, reducing unnecessary load on the system
&lt;ul&gt;
&lt;li&gt;Especially important if the document format is complex or requires data from external systems&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users must explicitly request the generation (versus a one-click download)&lt;/li&gt;
&lt;li&gt;Users have to wait for the document to be generated&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="scalability_considerations"&gt;Scalability Considerations&lt;/h2&gt;
&lt;h3 id="high-fan-out"&gt;High Fan-Out&lt;/h3&gt;
&lt;p&gt;Fan-out describes how one action (user initiated or process driven) can cause the generation of many documents. High fan-out can cause a sudden increase in system load, degrading overall performance. The impact is worse when generating complex documents or when documents require information from external systems.&lt;/p&gt;
&lt;h3 id="data-from-external-systems"&gt;Data from External Systems&lt;/h3&gt;
&lt;p&gt;If your documents require data from an external system and you need to generate a high volume of documents, be aware of how that system scales in response to that load.&lt;/p&gt;
&lt;h2 id="general_guidance"&gt;General Guidance&lt;/h2&gt;
&lt;h3 id="do"&gt;Do&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Protect against performance risks by limiting fan-out and/or by throttling the batch size and rate at which documents can be generated
&lt;ul&gt;
&lt;li&gt;Understand the implications of peak volume, disk space usage, and integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="/w/article/3216/performance-and-load-testing"&gt;Load test&lt;/a&gt; your solution using production-like scenarios&lt;/li&gt;
&lt;li&gt;Review guidance related to &lt;a href="/w/guide/3316/transferring-processing-large-data-sets-etl"&gt;transferring/processing of large data sets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Validate user entries if users have the ability to name documents or folders
&lt;ul&gt;
&lt;li&gt;Avoid using characters that are disallowed in Appian Document Management filenames (/ \ : ; &amp;lt; &amp;gt; &amp;quot; \* &amp;#39; ?)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Validate entries if the user text is entered directly into documents
&lt;ul&gt;
&lt;li&gt;For example, Word Doc from Template does not allow HTML formatting tags or tags that match the document template &lt;a href="https://docs.appian.com/suite/help/latest/Configuring_Delimiters_for_Document_Generation_Smart_Services.html"&gt;delimiters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="don-39-t"&gt;Don&amp;#39;t&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use any function or plug-in (such as Base64 Conversion) that will result in storing a large amount of text or binary data in process variables or node inputs/outputs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="doc_from_template_smart_services"&gt;Doc from Template Smart Services&lt;/h2&gt;
&lt;p&gt;Several smart services for generating documents are available out of the box:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/HTML_Doc_From_Template_Smart_Service.html"&gt;HTML Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Open_Office_Writer_Doc_From_Template_Smart_Service.html"&gt;Open Office Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/PDF_Doc_From_Template_Smart_Service.html"&gt;PDF Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Text_Doc_From_Template_Smart_Service.html"&gt;Text Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.appian.com/suite/help/latest/Word_Doc_from_Template_Smart_Service.html"&gt;Word Doc from Template&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quick and easy to implement&lt;/li&gt;
&lt;li&gt;Supports the needs for most document generation through token replacement (i.e. &lt;a href="https://en.wikipedia.org/wiki/Mail_merge"&gt;mail merge&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Lower performance risk than more complex options&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does not support dynamic content (showing/hiding sections or creating a table with an unknown number of rows)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dynamic_tables_and_content"&gt;Dynamic Tables and Content&lt;/h2&gt;
&lt;p&gt;The &lt;a href="/b/appmarket/posts/advanced-document-templating"&gt;Advanced Document Templating&lt;/a&gt; plug-in supports generating Microsoft Word (.docx) files with dynamic content where the format or number of elements like tables, lists, and images is not known in advance. Use this plug-in when the out of the box smart services are unable to meet your dynamic formatting requirements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supports dynamic length tables, showing/hiding content and embedding images&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires understanding &lt;a href="https://github.com/opensagres/xdocreport/wiki"&gt;Freemarker syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Uses a data model based on large XML strings which can increase system memory utilization&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="dedicated_system"&gt;Dedicated System&lt;/h2&gt;
&lt;p&gt;Specialized systems should be used for very high volume or very specific document formatting requirements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide dynamic and flexible document generation&lt;/li&gt;
&lt;li&gt;Resources are scaled and managed independently of Appian, minimizing the performance impact on users&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Requires additional software and hosting costs&lt;/li&gt;
&lt;li&gt;Requires an expert to configure and manage the third-party system&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;When &lt;a href="/w/guide/3319/how-to-generate-appian-documents"&gt;generating documents&lt;/a&gt; in Appian, you&amp;rsquo;ll first want to decide which method to use, either &lt;a href="/w/the-appian-playbook/Word_Doc_from_Template_Smart_Service.html"&gt;Out-of-the-Box (OOB) functionality&lt;/a&gt; or the &lt;a href="/b/appmarket/posts/advanced-document-templating"&gt;Advanced Document Templating (ADT) Smart Service&lt;/a&gt;. Factors you&amp;rsquo;ll want to consider when deciding which approach to take are the complexity of the document, how many inputs the document will have, and dynamism of inputs.&lt;/p&gt;
&lt;h2 id="out-of-the-box_functionality_-_ms_word_2007_doc_from_template"&gt;Out-of-the-Box Functionality - MS Word 2007 Doc From Template&lt;/h2&gt;
&lt;p&gt;Appian OOB functionality, using the MS Word 2007 Doc From Template node, is a good option for generating documents with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;10 or less inputs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Static sections/tables&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Static content (unlikely to change format)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Good use cases for the OOB node include documents that have hard-coded, static values as inputs, as well as documents that do not need to handle for dynamism.&lt;/p&gt;
&lt;p&gt;The benefit of using the OOB node is that it is less complex than the ADT node for documents that fit the criteria of the bullet points listed above. It also does not require any extra plugin to deploy to a new environment as it is apart of Appian&amp;rsquo;s base product.&lt;/p&gt;
&lt;h2 id="advanced_document_templating_smart_service"&gt;Advanced Document Templating Smart Service&lt;/h2&gt;
&lt;p&gt;The ADT Smart Service, using the Advanced Document Templating Smart Service node, is a good option for generating documents with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;More than 10 inputs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dynamic sections/tables&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dynamic content (the format of the document could undergo iterations of changes)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Good use cases for the ADT node include documents that need to dynamically display rows in a grid, sections of a word document, or images. Additionally, if you have more than 5 different documents that you&amp;rsquo;ll be generating in one process, you will want to use the ADT node because it allows for dynamic generation of multiple documents with one node.&lt;/p&gt;
&lt;p&gt;Benefits of using the ADT node include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A single XML rule handles all template changes, which allows for easy testing, troubleshooting, and updating of template&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Capability to handle dynamic content&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Can reuse the node for multiple documents, no need for multiple ADT nodes per process model&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="comparison_of_oob_and_adt_methods"&gt;Comparison of OOB and ADT Methods&lt;/h2&gt;
&lt;table class="appianTable" width="0%"&gt;
&lt;thead&gt;
&lt;tr class="header"&gt;
&lt;th width="0%"&gt;&amp;nbsp;&lt;/th&gt;
&lt;th width="0%"&gt;OOB Word Template Generation&lt;/th&gt;
&lt;th width="0%"&gt;ADT Smart Service&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Allows for Dynamism?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Management&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Template &amp;amp; Node&lt;/td&gt;
&lt;td&gt;Template &amp;amp; XML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Error Message Handling&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Occurs when opening the document in Tempo&lt;/td&gt;
&lt;td&gt;Output parameter of node in Process Model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Memory-efficient&lt;/td&gt;
&lt;td&gt;Long strings of XML can take up memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Inputs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;###input###&lt;/td&gt;
&lt;td&gt;Uses &lt;a href="https://github.com/opensagres/xdocreport/wiki"&gt;Freemarker language&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Number of Nodes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One node per template&lt;/td&gt;
&lt;td&gt;One node per multiple templates&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="oob_solution_overview"&gt;OOB Solution Overview&lt;/h2&gt;
&lt;p&gt;The following steps outline the high-level solution overview for using the Out-of-the-Box document generation functionality.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a document template and wrap input values with ###&lt;/p&gt;
&lt;p&gt;a. Example: ###firstName###&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Upload the document template to Appian&lt;/p&gt;
&lt;p&gt;b. Run spell check to avoid errors&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Within the MS Word 2007 Doc From Template node&lt;/p&gt;
&lt;p&gt;a. Select the template and map identified inputs to the correct process variables&lt;/p&gt;
&lt;p&gt;b. If a new template version has been uploaded, select &amp;quot;Rescan Template&amp;quot; link to ensure the latest variables are available for mapping&lt;/p&gt;
Variables previously mapped in this node may need to be remapped if significant changes were made to the document.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="adt_solution_overview"&gt;ADT Solution Overview&lt;/h2&gt;
&lt;p&gt;The following steps outline the high-level solution overview for using the ADT document generation functionality.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a document template and using &lt;a href="https://github.com/opensagres/xdocreport/wiki"&gt;freemarker language&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Upload the document template to Appian.&lt;/p&gt;
&lt;p&gt;a. Run spell check to avoid errors&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create an XML expression rule containing all inputs to document template&lt;/p&gt;
&lt;p&gt;a. Create nested rules if you have dynamic content&lt;/p&gt;
&lt;p&gt;b. You cannot use the toxml() function when creating this XML because the plugin accepts a specific XML format not compatible with toxml()&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Within the DOCX from Dynamic Template node&lt;/p&gt;
&lt;p&gt;a. Map the required inputs&lt;/p&gt;
Required inputs are the Docx template, the XML data model and Create New Document (boolean).
&lt;p&gt;b. Map any other relevant inputs&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="other_technical_considerations"&gt;Other Technical Considerations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Illegal characters (&amp;lt;, &amp;gt;, and &amp;amp;) must be escaped before generating template&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Suggestion is to create a rule that you wrap around either each input in the OOB node or each input of XML for ADT node that replaces these characters with legal characters&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item><item><title>How to Generate Appian Documents</title><link>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents/revision/1</link><pubDate>Thu, 07 Sep 2023 15:55:34 GMT</pubDate><guid isPermaLink="false">d3a83456-d57b-489c-a84c-4e8267bb592a:16ef41a1-1a36-4b42-8877-72b4ee1b2e96</guid><dc:creator>joel.larin</dc:creator><comments>https://community.appian.com/success/w/guide/3319/how-to-generate-appian-documents#comments</comments><description>Revision 1 posted to Guide by joel.larin on 9/7/2023 3:55:34 PM&lt;br /&gt;
&lt;p&gt;dsfsd&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;
</description></item></channel></rss>