Dynamic columns in Insite Analytics

Configurable column definitions for flexible reporting

Published: 2025-12-20 By: Predictiv

Configurable column definitions for flexible reporting. This guide covers dynamic column configuration, calculated fields, conditional formatting, and more.

Dynamic column configuration

Key Components

ComponentPurpose NotificationsPush notifications, Action Lists, work queues ActionsTouch-optimized approve/reject/process flows DashboardsKey metrics visible at a glance WindowsFull CRUD operations on mobile

Configuration Pattern

Windows can be configured for mobile through Application Dictionary properties:


Window Configuration:

├── Show on Desktop: Yes/No

├── Show on Mobile: Yes/No

├── Show on App: Yes/No

├── Interaction Pattern: Focused Entry Document ReviewLine Verification Quick Edit

└── Mobile-specific field visibility

Four Interaction Patterns

1. Quick Edit: Update a few fields across many records (price updates, status changes)

---

Pillar 2: Real-Time Analytics

The Problem with Traditional Reporting

Traditional ERP reporting:

  • Runs overnight batches
  • Generates PDFs nobody reads
  • Requires IT to create new reports
  • Shows what happened last month

Predictiv analytics:

  • Updates in real-time
  • Embeds in workflows
  • Self-service configuration
  • Shows what's happening now

Materialized View Pattern

For large datasets (100k+ records), Predictiv uses a hybrid approach:


-- Materialized view: Fast, pre-computed, refreshed daily

CREATE MATERIALIZED VIEW mv_sales_summary AS

SELECT. preddp)

Date: 2025-11-01

Purpose: Document critical lessons learned during Application Dictionary metadata creation and deployment

---

Executive Summary

Successfully deployed a complete Application Dictionary metadata configuration for the Draw Promotion module. Table Identifier Columns

Issue: WAD validation error: "Table PREDDP_PROMOTION_PRODUCT has not identifier. "

Lesson Learned: Every table should have at least one identifier column for display purposes.

Calculated fields

Quick Edit: Update a few fields across many records (price updates, status changes)

---

Pillar 2: Real-Time Analytics

The Problem with Traditional Reporting

Traditional ERP reporting:

  • Runs overnight batches
  • Generates PDFs nobody reads
  • Requires IT to create new reports
  • Shows what happened last month

Predictiv analytics:

  • Updates in real-time
  • Embeds in workflows
  • Self-service configuration
  • Shows what's happening now

Materialized View Pattern

For large datasets (100k+ records), Predictiv uses a hybrid approach:

sql

-- Materialized view: Fast, pre-computed, refreshed daily

CREATE MATERIALIZED VIEW mv_sales_summary AS

SELECT. THEN all other metadata (tables, windows, tabs, fields, etc. Column Metadata Requirements

Issue: Multiple entity generation failures due to NULL values in required column fields. Lesson Learned: ALL boolean-type fields in AD_COLUMN must have non-NULL values. Critical Fields:

  • issessionattr - Must be 'N' (not NULL)
  • issecondarykey - Must be 'N' (not NULL)
  • isselectioncolumn - Must be 'N' (not NULL)
  • istransient - Must be 'N' (not NULL)
  • istranslated - Must be 'N' (not NULL)
  • isusedsequence - Must be 'N' (not NULL)
  • isdesencryptable - Must be 'N' (not NULL)
  • isencrypted - Must be 'N' (not NULL)
  • isexcludeaudit - Must be 'N' (not NULL)
  • isautosave - Must be 'Y' (not NULL)
  • is_child_property_in_parent - Must be 'N' (not NULL)

Solution - Apply to All Columns:


UPDATE ad_column c

SET

issessionattr = COALESCE(issessionattr, 'N'),

issecondarykey = COALESCE(issecondarykey, 'N'),

isselectioncolumn = COALESCE(isselectioncolumn, 'N'),

istransient = COALESCE(istransient, 'N'),

istranslated = COALESCE(istranslated, 'N'),

isusedsequence = COALESCE(isusedsequence, 'N'),

isdesencryptable = COALESCE(isdesencryptable, 'N'),

isencrypted = COALESCE(isencrypted, 'N'),

isexcludeaudit = COALESCE(isexcludeaudit, 'N'),

isautosave = COALESCE(isautosave, 'Y'),

is_child_property_in_parent = COALESCE(is_child_property_in_parent, 'N')

WHERE c.

Conditional formatting

Conditional formatting is a core capability within Predictiv, designed to streamline operations and improve visibility. The implementation follows best practices while remaining configurable to meet your organization's specific needs.

User personalization

Pillar 1: Mobile-First Experience

Why Mobile Matters

Traditional ERP assumes users sit at desks with large monitors. Solution:

sql

-- Set the most meaningful column as identifier

UPDATE ad_column

SET isidentifier = 'Y', seqno = 30

WHERE ad_table_id IN (SELECT ad_table_id FROM ad_table WHERE tablename = 'PREDDP_PROMOTION_PRODUCT')

AND columnname = 'M_PRODUCT_ID';



Guidelines:

  • Choose the column users would recognize (product name, customer name, etc. Missing SHOWINRELATION, ISENCRYPTED, or ISFIRSTFOCUSEDFIELD will cause NullPointerExceptions during window rendering at runtime - errors that only appear when users access the window, not during deployment.

Saved views

Detail Views

The "header-lines search problem": How do you find an order line when you don't know the order number. Detail Views solve this by flattening header-lines into searchable grids:

Traditional: Search Orders → Find Order → Open → Search Lines

Detail View: Search All Order Lines → Filter by product, date, status → Click to open parent



Every header-lines entity should have a corresponding detail view. ### Dashboard Architecture

mermaid

graph TB

subgraph "Dashboard"

KPI1[KPIs]

CHART1[Charts]

GRID1[Grids]

end

subgraph "Data Sources"

MV[Materialized Views]

RT[Real-time Queries]

EXT[External Data]

end

KPI1 --> MV

CHART1 --> MV

GRID1 --> RT



---

Pillar 3: Intelligent Automation

Workflow Engine

Documents flow through defined states with automatic transitions:

mermaid

stateDiagram-v2

[*] --> Draft

Draft --> Submitted: Submit

Submitted --> Approved: Approve

Submitted --> Rejected: Reject

Approved --> Processing: Process

Processing --> Complete: Complete

Rejected --> Draft: Revise

Complete --> [*]



Each transition can:

  • Check preconditions (is budget available. Valid UIPATTERN Values:
UIPATTERNMeaning STDStandard tab: full edit (insert, update, delete) in grid or form RORead-only tab: not editable (use for views or system-generated data) INSInsert only: allows creating new records (no editing) DELDelete only: allows deletion but not editing (less common) INSUPDInsert or Update: allows new/edit but perhaps not delete TREETab uses tree-view (hierarchical) layout GRIDTab behaves primarily as grid/list

Important Notes:

  • If underlying table is a view (AD_TABLE. [CDATA[N]]>

Field-by-Field Explanation:

FieldRequiredDefaultPurposeNPE Risk
AD_FIELD_IDYESN/APrimary key (UUID)HIGH AD_TAB_IDYESN/AParent tabHIGH AD_COLUMN_IDYESN/ADatabase column referenceHIGH AD_MODULE_IDYESN/AOwning moduleHIGH NAMEYESN/ADisplay labelHIGH SEQNOYESN/ADisplay order (use 100+ for extensions)MEDIUM ISCENTRALLYMAINTAINEDYES'Y'Use column metadataLOW ISDISPLAYEDYES'Y'Show in formMEDIUM ISREADONLYYES'N'Read-only flagLOW STARTNEWLINEYES'N'Force new rowLOW ISSAMELINEYES'N'Stay on same rowLOW STARTINODDCOLUMNYES'N'Odd column startLOW IGNOREINWADYES'N'Skip in WAD generationMEDIUM ISFIELDONLYYES'N'Field-only modeMEDIUM ISENCRYPTEDCRITICAL'N'Encryption flagHIGH - Template error SHOWINRELATIONCRITICAL'Y'Show in grid viewHIGH - NPE at line 275 ISFIRSTFOCUSEDFIELDCRITICAL'N'Initial focusHIGH - NPE in template ISSHOWNINSTATUSBARYES'N'Status bar visibilityMEDIUM EM_OBUIAPP_SHOWSUMMARYYES'N'Summary functionLOW

Hidden Fields (not shown by default, but displayed in special views):

  • Set ISDISPLAYED='N' to hide from standard form view
  • These fields appear in developer/technical views only
  • Still require ALL boolean fields set to prevent template errors

Common Field Sequence Numbers by Location:

  • Standard fields: 10-1000
  • Extension fields (existing window): 3000+ (avoids conflicts with core)
  • New module fields (new window): 10-100 (can use lower numbers)

Verification Query After Deployment:


-- Check for NULL boolean fields (ALL must return 0 rows)

SELECT ad_field_id, name

FROM ad_field

WHERE ad_module_id = 'YOUR_MODULE_UUID'

AND (

isencrypted IS NULL

OR showinrelation IS NULL

OR isfirstfocusedfield IS NULL

OR isfieldonly IS NULL

OR isshowninstatusbar IS NULL

OR em_obuiapp_showsummary IS NULL

);

Post-Import Fix (if needed):


-- If you imported fields without complete metadata, fix with:

UPDATE ad_field

SET

isencrypted = COALESCE(isencrypted, 'N'),

showinrelation = COALESCE(showinrelation, 'Y'),

isfirstfocusedfield = COALESCE(isfirstfocusedfield, 'N'),

isfieldonly = COALESCE(isfieldonly, 'N'),

isshowninstatusbar = COALESCE(isshowninstatusbar, 'N'),

em_obuiapp_showsummary = COALESCE(em_obuiapp_showsummary, 'N')

WHERE ad_module_id = 'YOUR_MODULE_UUID';

---

Metadata File Cross-References

Critical UUID Cross-References

These UUIDs must be consistent across all files:

``

MODULE_ID=6C05EB8B4CF84C6DA7723A3804D72F9F

# Used in:

  • AD_MODULE.

Getting Started

To implement dynamic columns in insite analytics in your Predictiv environment:

1. Assess your current state - Review existing processes and identify improvement opportunities

2. Configure the module - Work with your implementation team to set up the required components

3. Train your team - Ensure users understand the new capabilities and workflows

4. Monitor and optimize - Track key metrics and continuously improve

Related Resources

For more information on related topics, explore our other guides in this collection.

Need Help?

Our team of experts is available to help you get the most out of Predictiv. Contact us to discuss your specific requirements and how we can help you achieve your goals.

See also: Reporting

Need Help Implementing This?

Our team can help you put these best practices into action.