Skip to content

Latest commit

Β 

History

History
535 lines (416 loc) Β· 20.7 KB

File metadata and controls

535 lines (416 loc) Β· 20.7 KB

iTop Integration for Nextcloud

🎟️ Complete iTop ITSM & CMDB Integration - Seamlessly access tickets, incidents, and Configuration Items from your Nextcloud environment

Version License Nextcloud

A comprehensive Nextcloud integration that brings iTop IT Service Management and CMDB functionality directly into your collaboration platform. Users can search tickets, browse configuration items, and insert rich previewsβ€”all without leaving Nextcloud.


✨ Why Choose This Integration?

For End Users

  • πŸ” Instant Search - Find tickets and CIs from Nextcloud's search bar
  • πŸ”— Rich Previews - Paste iTop links anywhere for interactive previews
  • πŸ’¬ Smart Suggestions - Get CI/ticket recommendations while typing in Talk or Text
  • πŸ“Š Dashboard Widgets - Portal widget for personal tickets + Agent widget for operational metrics
  • πŸ”” Notifications - Get alerted when tickets are assigned to you

For IT Teams

  • πŸ—οΈ CMDB Access - Browse Configuration Items (PCs, phones, printers, software)
  • πŸ‘₯ Profile-Aware - Portal users see only their assets; power users get full access
  • πŸ” Enterprise Security - Dual-token architecture with encrypted storage
  • ⚑ High Performance - Configurable caching (10s-1h TTLs)
  • 🌍 Multi-Language - English, German (Du/Sie), French

For Administrators

  • βš™οΈ Granular Control - Enable/disable CI classes per user or globally
  • πŸ“ˆ Scalable - Distributed caching for high-traffic deployments
  • πŸ›‘οΈ Secure by Design - Personal tokens never stored, Person ID filtering
  • 🎨 Professional UI - Clean interface matching Nextcloud design standards

πŸš€ Key Features

πŸ“Š Interactive Dashboard Widgets

Get comprehensive overviews of your ticket queue directly on your Nextcloud dashboard. The integration provides two specialized widgets that adapt to your user profile:

Dashboard Widget

🎫 Portal Widget - "iTop"

For All Users - Track your personal tickets at a glance

Features:

  • Compact Status Overview: See total tickets with badge breakdown (open, escalated, pending, resolved)
  • Recent Ticket Feed: Display 4 most recent tickets sorted by last update
  • Visual Status Indicators: State-specific SVG icons (new, escalated, deadline, closed) for both Incidents and UserRequests
  • Inline Metadata: Status emoji (πŸ†•πŸ‘₯β³βš οΈβœ…β˜‘οΈβŒ), priority emoji (πŸ”΄πŸŸ πŸŸ‘πŸŸ’), and relative timestamps with tooltips
  • Rich Hover Details: Comprehensive ticket information on hover including reference, dates, and sanitized description
  • One-Click Access: Click any ticket to open directly in iTop
  • Quick Actions: Refresh dashboard and create new tickets without leaving Nextcloud
  • Responsive Design: Mobile-optimized layout adapts to all screen sizes

πŸ‘¨β€πŸ’Ό Agent Widget - "iTop - Agent Dashboard"

For Agent Users Only - Comprehensive operational dashboard

Features:

  • My Work: Count of assigned incidents and requests
  • Team Queue: Team-wide ticket counts (incidents and requests)
  • SLA Tracking:
    • SLA Warnings (TTO/TTR approaching)
    • SLA Breaches (TTO/TTR exceeded)
  • Change Management:
    • Upcoming changes with time windows
    • Emergency/Normal/Routine change types
    • Current and planned change status
  • Quick Navigation: Click metrics to jump to filtered iTop views
  • Real-Time Counts: Live ticket counts with visual indicators (info, warning, error)
  • Responsive Grid: 2x2 metrics layout adapting to screen size

Widget Visibility:

  • Portal Users (is_portal_only = true): See only Portal Widget
  • Agent Users (is_portal_only = false): See both Portal Widget and Agent Widget
  • Automatically controlled by iTop user profiles

Perfect for:

  • Portal Widget: End users tracking their personal requests
  • Agent Widget: IT agents managing workload, SLA compliance, and team coordination
  • Both: Managers needing both personal and operational views

πŸ”— Dynamic Reference Provider

Transform iTop links into rich, interactive previews across Nextcloud apps (Talk, Deck, Text, Collectives).

Dynamic Reference Provider

What You Get:

  • Tickets: Status, priority, assignee, caller, description, timestamps
  • Configuration Items: Hardware specs (CPU, RAM), software details, contact count
  • Smart Icons: State-specific ticket icons (closed, escalated, deadline)
  • CI Icons: Class-specific icons for all 11 CI types (PC, phone, printer, etc.)
  • Universal Support: Works across all Nextcloud apps supporting rich content

πŸ” Unified Search Integration

Search your iTop tickets and Configuration Items directly from Nextcloud's unified search bar.

Unified Search

Search Capabilities:

  • Tickets: UserRequest, Incident - by title, description, reference number
  • Configuration Items: PC, Phone, Tablet, Printer, Software, WebApplication
  • Smart Ranking: Exact matches first, then class weighting, then recency
  • Profile-Aware: Portal users see only related CIs; power users get full CMDB
  • Real-Time Status: Live priority badges and status indicators
  • Performance: Results cached (30s default) for instant response

🎯 Smart Picker Integration

Quick access to tickets and CIs when creating documents or chatting.

Smart Picker

Features:

  • Context-Aware Suggestions: Recent tickets and CIs based on your work
  • Dual Search: Find both tickets and Configuration Items
  • Rich Insertion: Insert links that automatically become interactive previews
  • Talk/Text Integration: Works seamlessly in chat and document editing
  • Debounced Queries: Performance-optimized with intelligent caching

πŸ“Š Configuration Item (CI) Browsing

NEW in v1.1.0 - Complete CMDB integration with 11 supported CI classes:

End User Devices

  • PC - Desktops and laptops with hardware specs (CPU, RAM, OS)
  • Phone/IPPhone/MobilePhone - Telephony devices with phone numbers and IMEI
  • Tablet - Mobile tablet devices
  • Printer - Network and local printers
  • Peripheral - Monitors, keyboards, mice, and other peripherals

Software & Applications

  • PCSoftware - Desktop/server software with version and license info
  • OtherSoftware - Miscellaneous software installations
  • WebApplication - Web-based applications with URLs

Profile-Based Permissions:

  • Portal Users: See only CIs where they are listed as contacts (strict filtering)
  • Power Users: Full CMDB access within iTop ACL permissions
  • Configurable: Admins control which CI classes are searchable

βš™οΈ Personal Settings Dashboard

Professional user configuration with real-time status monitoring.

Personal Settings

Your Control Panel:

  • Connection Status: Real-time indicator with connectivity testing
  • User Profile: See your iTop identity (name, email, organization, profiles)
  • Ticket Counter: Open incidents and user requests at a glance
  • Secure Setup: Token-based authentication with one-time personal token validation
  • Feature Toggles: Enable/disable search and notifications individually
  • Clean Interface: Professional theme-aware design

πŸ› οΈ Admin Configuration Panel

Comprehensive administration interface for system-wide configuration.

Admin Settings - Connection Status Admin Settings - Connection Configurations Admin Settings - Class Configurations Admin Settings - Cache Settings Administrative Features:

  • Connection Management: iTop URL, display name, application token (encrypted)
  • CI Class Configuration: Enable/disable CI classes with 3-state control:
    • Disabled: CI class hidden from all users
    • Forced: Enabled for all users (no opt-out)
    • User Choice: Enabled but users can opt-out in personal settings
  • Cache Performance Tuning: Configurable TTLs for all cache types
    • CI Preview Cache: 10s-1h (default: 60s)
    • Ticket Info Cache: 10s-1h (default: 60s)
    • Search Results Cache: 10s-5min (default: 30s)
    • Smart Picker Cache: 10s-5min (default: 60s)
    • Profile Cache: 10s-1h (default: 30min)
  • Cache Management: Clear all cache button for immediate refresh
  • Connection Testing: Real-time validation of server connectivity
  • User Monitoring: See how many users are connected
  • Professional UI: Clean, theme-aware interface

πŸ” Security Architecture

Dual-Token Approach

Maximum security with user convenience:

Application Token (Admin-configured)

  • Administrator-level token stored encrypted
  • Used for all iTop API queries
  • Never exposed to end users
  • Rotatable without disrupting user sessions

Personal Token (User-provided)

  • Provided once during setup for identity verification
  • Never stored - discarded immediately after validation
  • Maps Nextcloud user to iTop Person ID
  • Supports Portal users via iTop Portal Personal Tokens Extension

Data Isolation

  • Person ID Filtering: All queries filtered by user's Person ID
  • Profile-Based Access: Portal vs power user detection with caching
  • No Data Leakage: Users only see their own tickets and permitted CIs
  • Encrypted Storage: Application token encrypted with Nextcloud ICrypto
  • Audit Trail: All API calls logged with user context

πŸ“¦ Installation

Prerequisites

Quick Setup

Step 1: Install the App

# Place in apps directory
cd /path/to/nextcloud/apps
git clone https://github.com/lexioj/integration_itop.git
cd integration_itop

# Install dependencies and build
composer install --no-dev
npm install
npm run build

# Enable the app
sudo -u www-data php /path/to/nextcloud/occ app:enable integration_itop

Step 2: Admin Configuration

  1. Navigate to Settings β†’ Administration β†’ iTop Integration
  2. Create Application Token in iTop:
    • Login as Administrator
    • Go to Admin Tools β†’ User Accounts β†’ + New... β†’ Application Token
    • Configure:
      • Person: Select admin user
      • Profiles: βœ… Administrator + βœ… REST Services User
      • Remote Application: "Nextcloud Integration"
      • Scope: βœ… REST/JSON
    • Save and copy the generated token (shown only once!)
  3. Configure in Nextcloud:
    • iTop Server URL: https://itop.company.com
    • Application Token: Paste the token from step 2
    • User-Facing Name: Customize display name (default: "iTop")
    • Click Test Connection to verify
  4. Configure CI Classes (optional):
    • Enable/disable specific CI classes
    • Set access levels (disabled/forced/user_choice)
  5. Tune Performance (optional):
    • Adjust cache TTLs based on your environment
    • Default values work for most deployments

Step 3: User Setup

Each user must create a personal token for identity verification:

For Portal Users (requires Portal Personal Tokens Extension):

  1. Login to iTop Portal
  2. Go to My Profile β†’ Personal Tokens
  3. Create token with REST/JSON scope
  4. Copy token immediately

For Regular Users:

  1. Login to iTop
  2. Go to My Account β†’ Personal Tokens
  3. Create token:
    • Scope: βœ… REST/JSON
    • Expiration: Never or set expiration
  4. Copy token immediately

In Nextcloud:

  1. Go to Settings β†’ Personal β†’ iTop Integration
  2. Paste your personal token
  3. Click Save - token validates your identity and is discarded
  4. View your dashboard with real-time status

πŸ—οΈ Technical Architecture

Core Components

lib/
β”œβ”€β”€ AppInfo/
β”‚   └── Application.php              # App bootstrap, CI class configuration
β”œβ”€β”€ Controller/
β”‚   β”œβ”€β”€ ConfigController.php         # Settings, validation, cache management
β”‚   └── ItopAPIController.php        # REST endpoints for tickets/CIs
β”œβ”€β”€ Service/
β”‚   β”œβ”€β”€ ItopAPIService.php           # Core iTop REST API integration
β”‚   β”œβ”€β”€ ProfileService.php           # Portal vs power user detection (cached)
β”‚   β”œβ”€β”€ PreviewMapper.php            # Transform iTop objects β†’ preview DTOs
β”‚   └── CacheService.php             # Distributed caching layer
β”œβ”€β”€ Reference/
β”‚   └── ItopReferenceProvider.php    # Rich link previews (tickets + CIs)
β”œβ”€β”€ Search/
β”‚   └── ItopSearchProvider.php       # Unified search (tickets + CIs)
β”œβ”€β”€ Dashboard/
β”‚   └── ItopWidget.php               # Dashboard widget
β”œβ”€β”€ Settings/
β”‚   β”œβ”€β”€ Admin.php                    # Admin configuration panel
β”‚   └── Personal.php                 # User settings interface
└── Notification/
    └── Notifier.php                 # Notification system

src/
└── views/
    └── ReferenceItopWidget.vue      # Rich preview Vue component

API Integration

  • REST API Version: 1.3+
  • Authentication: Token-based (Auth-Token header)
  • Query Method: POST with form-encoded JSON data
  • Response Format: JSON with object arrays
  • Security: All queries filtered by Person ID
  • Caching: Multi-layer with configurable TTLs

Supported iTop Objects

  • Tickets: UserRequest, Incident
  • Configuration Items: PC, Phone, IPPhone, MobilePhone, Tablet, Printer, Peripheral, PCSoftware, OtherSoftware, WebApplication, Software
  • Persons: User profile information
  • Organizations: Company/department info

🌍 Internationalization (l10n)

280 translatable strings across the entire application:

Supported Languages

  • English (en) - Base language
  • German Informal (de) - Du-form for casual environments
  • German Formal (de_DE) - Sie-form for professional environments
  • French (fr) - Formal vous-form

Translation Coverage

  • Admin settings (all labels, hints, errors)
  • Personal settings (status messages, forms)
  • Search results and previews
  • Error messages and validation
  • Cache settings and CI classes
  • Time formats and relative dates

Contributing Translations

See docs/l10n.md for translation guidelines and process.


πŸ”§ Performance Tuning

Cache Configuration

Adjust cache TTLs in Admin Settings β†’ Cache & Performance:

Development/Testing (frequent changes):

  • CI Preview: 10s
  • Search Results: 10s
  • Profile Cache: 60s

Production (stable) (balance):

  • CI Preview: 60s (default)
  • Search Results: 30s (default)
  • Profile Cache: 30min (default)

High-Traffic (performance priority):

  • CI Preview: 1h
  • Search Results: 5min
  • Profile Cache: 1h

Shared CMDB (freshness priority):

  • CI Preview: 10s
  • Search Results: 10s
  • Profile Cache: 5min

Recommended Settings

  • Small Deployments (<100 users): Use defaults
  • Medium Deployments (100-1000 users): Increase CI/Profile cache to 5-15min
  • Large Deployments (>1000 users): Max out cache TTLs, use dedicated Redis

πŸ“‹ What's New in v1.2.0

Major New Feature: Dual Dashboard System πŸŽ‰

Added

  • Portal Widget: Personal ticket tracking for all users with status overview, recent ticket feed, and quick actions
  • Agent Widget: Comprehensive operational dashboard for IT agents with workload metrics, SLA tracking, and change management
  • Profile-Based Display: Automatic widget selection based on iTop user profiles (Portal vs Agent)
  • Enhanced Ticket Display: State-specific SVG icons, status/priority emojis, and rich hover details
  • Dashboard Backend: New API endpoints for SLA warnings, team queue, and change management
  • Mobile Optimization: Responsive design with adaptive layouts for all screen sizes
  • Dashboard Caching: Separate cache layer for dashboard data (default: 2min TTL)

Changed

  • Dashboard Performance: Optimized OQL queries for faster dashboard loading
  • Visual Hierarchy: Improved status differentiation and metric indicators
  • Error Handling: Graceful fallback when API unavailable
  • Translation Coverage: Added 45 new strings for dashboard widgets in all supported languages

Previous Release: v1.1.0 - Configuration Item (CI) Browsing

Highlights:

  • CI Support in Search, Smart Picker, and Rich Previews (11 CI classes)
  • Profile Service with automatic Portal vs Power user detection
  • Admin CI Configuration with 3-state control
  • Multi-language support: French, German (Du/Sie)
  • 60-80% reduction in API calls with multi-layer caching

See CHANGELOG.md for complete details.


πŸ†˜ Support & Troubleshooting

Common Issues

Connection failed

  • βœ… Verify iTop server URL is correct and accessible
  • βœ… Check application token has Administrator + REST Services User profiles
  • βœ… Ensure iTop REST API is enabled (allow_rest_services_via_tokens)

User not configured

  • βœ… Create personal token with REST/JSON scope
  • βœ… Verify token was saved successfully in personal settings
  • βœ… Check Nextcloud logs for validation errors

Search not working

  • βœ… Ensure person_id is configured (check personal settings)
  • βœ… Verify search is enabled in personal settings
  • βœ… Check CI classes are enabled in admin settings

Links not previewing

  • βœ… Clear browser cache and Nextcloud cache
  • βœ… Verify URL matches iTop instance configured
  • βœ… Check if user has permission to view the ticket/CI

Portal users can't see CIs

  • βœ… Portal users only see CIs where they are listed as contacts
  • βœ… Verify contact assignments in iTop
  • βœ… Check ProfileService cache hasn't expired

Debugging

# Check Nextcloud logs
tail -f /path/to/nextcloud/data/nextcloud.log | grep itop

# Clear application cache
sudo -u www-data php occ config:app:delete integration_itop cache_ttl_ci_preview

# Test iTop API connectivity
curl -X POST https://itop.company.com/webservices/rest.php \
  -H "Auth-Token: YOUR_TOKEN" \
  -d "json_data={\"operation\":\"list_operations\"}"

Getting Help


πŸ—ΊοΈ Roadmap

v1.2.0 (Released 2025-11-01) βœ…

  • Enhanced Dashboard Widget with charts and filters
  • Dual dashboard system (Portal + Agent widgets)
  • SLA tracking and team metrics

v1.3.0 (Next Release)

  • Advanced search filters (date ranges, custom fields)
  • Notification system

Future

  • Ticket creation from Nextcloud
  • CI relationship browser (dependencies, impacts)
  • Enhanced notification system with email digest
  • Additional CI classes (Server, VirtualMachine, Network Device)
  • API rate limiting improvements
  • More languages (Spanish, Italian, Dutch, Portuguese)

🀝 Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Development Setup

# Clone the repository
git clone https://github.com/lexioj/integration_itop.git
cd integration_itop

# Install dependencies
composer install
npm install

# Start development build (watch mode)
npm run dev

# Run tests
composer test
npm run test

Translation Contributions

We especially welcome translations! See docs/l10n.md for the complete translation guide.


πŸ“„ License

This project is licensed under the AGPL v3 License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • Nextcloud Community for the amazing collaboration platform
  • iTop/Combodo for the powerful ITSM solution
  • Contributors who helped with translations, testing, and feedback

Transform your ITSM workflow β€’ Made with ❀️ for the Nextcloud and iTop communities

Star on GitHub Report Bug Request Feature