Skip to main content

Search OfficeIMO

Enter a topic, API type, or PowerShell command.

Managed service renewal proposal

Give procurement and the service owner one editable scope record for a renewal.

Opens the generated download in a local browser tool. The C# example below creates the document.

Start with
Service commitments and proposed commercial terms
Generate
DOCX + PDF
Generated Word example: Managed service renewal proposal
Page 1 · Generated by the example below

How it works

  1. Separate commitments

    Keep coverage, fee and verification evidence in separate columns.

  2. State boundaries

    Record the term and excluded work beneath the table.

  3. Route acceptance

    Name who checks coverage, terms and approval.

The C# source

The example below shows the document API and layout used for this report. Follow the Word guide for package setup in your own project.

using OfficeIMO.Word;

namespace OfficeIMO.Examples.Showcase.Workflows {
    /// <summary>Creates an editable managed service renewal with a decision, supporting table and named next actions.</summary>
    internal static class RenewalProposal {
        internal static void Create(string folder) {
            using var document = WordDocument.Create(Path.Combine(folder, "example.docx"));
            document.Settings.FontFamily = "Carlito";
            document.Settings.FontSize = 11;
            document.BuiltinDocumentProperties.Title = "Managed service renewal";
            document.AddParagraph("Managed service renewal").Style = WordParagraphStyles.Heading1;
            document.AddParagraph("NORTHWIND / RENEWAL 2027 / DRAFT COMMERCIAL TERMS");
            document.AddParagraph("Review the service commitments before renewing. This proposal keeps scope, price and the acceptance decision together.");
            document.AddParagraph("Service commitments").Style = WordParagraphStyles.Heading2;
            string[][] rows = {
                new[] { "Service", "Coverage", "Monthly fee", "Review evidence" },
                new[] { "Request desk", "Business hours", "EUR 2,400", "Response-time report" },
                new[] { "Platform care", "Weekly review", "EUR 1,100", "Change and incident log" },
                new[] { "Recovery exercise", "Quarterly", "EUR 600", "Observed restore record" }
            };
            var table = document.AddTable(rows.Length, 4, WordTableStyle.TableGrid);
            table.SetWidthPercentage(100);
            table.SetColumnWidthsPercentage(25, 20, 30, 25);
            for (int row = 0; row < rows.Length; row++) {
                for (int column = 0; column < 4; column++) {
                    var cell = table.Rows[row].Cells[column];
                    cell.MarginTopCentimeters = 0.14;
                    cell.MarginBottomCentimeters = 0.14;
                    cell.MarginLeftCentimeters = 0.16;
                    cell.MarginRightCentimeters = 0.16;
                    cell.ShadingFillColorHex = row == 0 ? "17365D" : row % 2 == 0 ? "F1F5F9" : "FFFFFF";
                    var paragraph = cell.Paragraphs[0];
                    paragraph.Text = rows[row][column];
                    paragraph.Bold = row == 0;
                    paragraph.ColorHex = row == 0 ? "FFFFFF" : "243247";
                    paragraph.FontFamily = "Carlito";
                    paragraph.FontSize = 10;
                    paragraph.LineSpacingAfterPoints = 2;
                }
            }
            document.AddParagraph("Term and exclusions").Style = WordParagraphStyles.Heading2;
            document.AddParagraph("Proposed term: 1 January to 31 December 2027. Fees are illustrative, exclude tax and are subject to an agreed statement of work. Project delivery, emergency cover and third-party licence costs are excluded.");
            document.AddParagraph("Next actions").Style = WordParagraphStyles.Heading2;
            var actions = document.AddList(WordListStyle.Bulleted);
            actions.AddItem("Service owner: confirm coverage hours and escalation contacts.");
            actions.AddItem("Procurement: review the renewal and notice periods.");
            actions.AddItem("Sponsor: record acceptance or request a revised scope.");
            foreach (var paragraph in document.Paragraphs) {
                paragraph.FontFamily = "Carlito";
                bool title = paragraph.Style == WordParagraphStyles.Heading1;
                bool heading = paragraph.Style == WordParagraphStyles.Heading2;
                paragraph.FontSize = title ? 26 : heading ? 15 : 11;
                paragraph.LineSpacingBeforePoints = heading ? 14 : 0;
                paragraph.LineSpacingAfterPoints = title ? 14 : heading ? 8 : 7;
                if (title || heading) {
                    paragraph.ColorHex = "17365D";
                    paragraph.Bold = true;
                    paragraph.KeepWithNext = true;
                }
            }
            document.Save();
        }
    }
}
Open the C# source file

API used in this example

Use this in your project

Use agreed commercial terms and obtain the appropriate review before treating the proposal as a commitment.

The Word guide explains package setup and related document APIs.

Documents and scope

What the preview shows

The C# source generates the downloadable file. The runner reopens the editable document, validates Open XML where applicable and exports a PDF. Page previews come from the generated output.

What to keep in mind

Use agreed commercial terms and obtain the appropriate review before treating the proposal as a commitment.

Word API reference · Artifact hashes and provenance

Continue with another example

Example source

Download source