This is a DotNetNuke (DNN) subscription management module that provides comprehensive subscription tools including plan management, user signups, payment processing, receipt management, and reporting capabilities. The module is designed to handle subscription-based business models with flexible billing cycles and user management.
- Module Name: Subscription Tools
- DNN Version: Compatible with DNN 6.x and higher
- Language: VB.NET
- Framework: .NET Framework
- Module Type: Business/Subscription Management
- Plan Management: Create, edit, and manage subscription plans with different billing frequencies
- User Signups: Streamlined user registration and subscription enrollment
- Payment Processing: Integrated payment handling with IPN (Instant Payment Notification) support
- Receipt Management: Comprehensive receipt tracking and management
- User Status: Monitor and manage user subscription statuses
- Reporting: Built-in reporting tools for subscription analytics
- Multi-Frequency Billing: Support for various billing cycles (monthly, yearly, custom)
- Role-Based Access: Different user roles and permissions
- IPN Handler: PayPal and other payment processor integration
- Database Providers: SQL Server data providers with version management
- Localization: Multi-language support with resource files
Subscription-Tools/
βββ App_LocalResources/ # Localization resource files
βββ Base/ # Base module classes
β βββ ModuleBase.vb
βββ Entities/ # Business logic and data models
β βββ Constants.vb
β βββ ContentController.vb
β βββ ContentInfo.vb
β βββ CrumbInfo.vb
β βββ FrequencyType.vb
β βββ OrderController.vb
β βββ OrderInfo.vb
β βββ OrderItemController.vb
β βββ OrderItemInfo.vb
β βββ PaymentType.vb
β βββ PlanController.vb
β βββ PlanInfo.vb
β βββ ReceiptController.vb
β βββ ReceiptInfo.vb
β βββ ReminderJob.vb
β βββ ReportController.vb
β βββ ReportType.vb
β βββ UserSettingController.vb
β βββ UserSettingInfo.vb
βββ Providers/ # Data providers and SQL scripts
β βββ DataProviders/
β βββ DataProvider.vb
β βββ SqlDataProvider/
β βββ 01.01.00.SqlDataProvider
β βββ 01.02.00.SqlDataProvider
β βββ 01.03.00.SqlDataProvider
β βββ 01.04.00.SqlDataProvider
β βββ 01.05.00.SqlDataProvider
β βββ Uninstall.SqlDataProvider
βββ Tools/ # Utility tools
β βββ IPNHandler.aspx # Payment notification handler
β βββ IPNHandler.aspx.vb
β βββ IPNHandler.aspx.designer.vb
βββ *.ascx # User control files for each module view
βββ *.ascx.vb # Code-behind files
βββ *.ascx.designer.vb # Designer-generated files
βββ Ventrian.SubscriptionTools.sln # Solution file
βββ Ventrian.SubscriptionTools.vbproj # Project file
βββ SubscriptionTools.dnn # DNN manifest
βββ web.config # Configuration files
- Visual Studio 2019 or later
- .NET Framework 4.5 or higher
- DNN development environment
- SQL Server (for database operations)
- Clone/Download the module source code
- Open
Ventrian.SubscriptionTools.slnin Visual Studio - Restore NuGet packages if prompted
- Build the solution to ensure all dependencies are resolved
# Build the solution
& "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" Ventrian.SubscriptionTools.sln /p:Configuration=Release /p:Platform="Any CPU" /verbosity:minimal- Signup.ascx: Main signup interface for new subscriptions
- SignupDetails.ascx: Detailed signup information and processing
- SignupPlan.ascx: Plan selection and configuration
- SignupRegister.ascx: User registration during signup
- SignupViewOptions.ascx: Signup display options and settings
- EditPlan.ascx: Individual plan editing interface
- EditPlans.ascx: Bulk plan management and overview
- EditReceipt.ascx: Individual receipt editing
- EditReceipts.ascx: Bulk receipt management
- ViewInvoice.ascx: Invoice viewing and management
- Status.ascx: User subscription status overview
- StatusEditRole.ascx: Role editing for users
- StatusViewOptions.ascx: Status display configuration
- Reports.ascx: Subscription and financial reporting
- SendReminders.ascx: Automated reminder system for payments
- IPNHandler.aspx: Handles payment notifications from payment processors
- VB.NET: All code-behind files use VB.NET
- DNN Pattern: Follows DNN module development patterns
- Separation of Concerns: Business logic separated into controller classes
- Data Access: Uses DNN data provider pattern for database operations
- Create User Control: Add new
.ascxfile - Add Code-Behind: Create corresponding
.ascx.vbfile - Update Project: Add files to
Ventrian.SubscriptionTools.vbproj - Register in DNN: Update module manifest if needed
- Create SQL Script: Add new version in
SqlDataProviderfolder - Update Version: Increment version number in script filename
- Test Migration: Verify upgrade process works correctly
- Payment Gateway: Configure payment processor settings
- Email Templates: Customize reminder and notification emails
- Billing Cycles: Set up supported billing frequencies
- User Roles: Configure role-based access permissions
- Portal Settings: Module-specific portal configuration
- User Permissions: Role-based access control
- Localization: Multi-language support configuration
- Build the solution in Release mode
- Copy the DLL: Copy
bin\Ventrian.SubscriptionTools.dllto your DNN development site'sbin\directory - Copy ASCX files: Copy only the
.ascxuser control files to your DNN development site'sDesktopModules\Ventrian.SubscriptionTools\directory - Recycle the application pool
Important Note: Only copy the .ascx files, NOT the .ascx.vb or .ascx.designer.vb files, as these are compiled into the DLL.
- Build the solution in Release mode
- Package the module using DNN packaging tools
- Install via DNN module installation process
- Configure module settings for production environment
- Test all functionality thoroughly
# Build the solution
& "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" Ventrian.SubscriptionTools.sln /p:Configuration=Release /p:Platform="Any CPU" /verbosity:minimal
# Copy the DLL (contains all compiled code)
Copy-Item "bin\Ventrian.SubscriptionTools.dll" "C:\inetpub\packdev\bin\"
# Copy the ASCX file (contains the UI template)
Copy-Item "EditReceipt.ascx" "C:\inetpub\packdev\DesktopModules\SubscriptionSignup\"
# Recycle the app pool by touching web.config
(Get-Item "C:\inetpub\packdev\bin\web.config").LastWriteTime = Get-DateThe following deployment was successfully completed on August 20, 2025:
# Navigate to project directory
cd "C:\Users\Administrator\source\repos\Subscription-Tools"
# Copy the DLL
Copy-Item "bin\Ventrian.SubscriptionTools.dll" "C:\inetpub\packdev\bin\"
# Copy the ASCX file to the SubscriptionSignup module
Copy-Item "EditReceipt.ascx" "C:\inetpub\packdev\DesktopModules\SubscriptionSignup\"
# Recycle the app pool
(Get-Item "C:\inetpub\packdev\web.config").LastWriteTime = Get-DateNote: The module is located in DesktopModules\SubscriptionSignup\, not Ventrian.SubscriptionTools\.
- Backup existing data and configuration
- Install new version via DNN
- Run database upgrade scripts automatically
- Verify all functionality works correctly
- Test individual controller methods
- Verify data validation logic
- Test error handling scenarios
- Test DNN module integration
- Verify database operations
- Test payment processing workflows
- Test subscription signup flow
- Verify payment processing
- Test administrative functions
- Verify reporting functionality
- Build Errors: Ensure all dependencies are properly referenced
- Runtime Errors: Check DNN logs for detailed error information
- Database Issues: Verify connection strings and permissions
- Payment Issues: Check IPN handler configuration
- Changes Not Appearing: Ensure you've recycled the application pool after copying files
- DLL Not Loading: Verify the DLL was copied to the correct
bin\directory - UI Not Updating: Ensure the
.ascxfiles were copied to the correctDesktopModulesdirectory - Compilation Errors: Check that all required dependencies are available in the target environment
- β Copying
.ascx.vbfiles - These are compiled into the DLL and don't need to be copied - β Copying
.ascx.designer.vbfiles - These are also compiled into the DLL - β Not recycling the app pool - Changes won't take effect until the app pool is recycled
- β Copying files to wrong directories - DLL goes in
bin\, ASCX files go inDesktopModules\ - β Wrong module folder - This module is located in
DesktopModules\SubscriptionSignup\, notVentrian.SubscriptionTools\
- Enable detailed error messages in development
- Use DNN logging for debugging
- Check browser console for client-side issues
- Use appropriate indexes on frequently queried fields
- Implement connection pooling
- Optimize complex queries
- Cache frequently accessed data
- Use DNN caching mechanisms
- Implement appropriate cache invalidation
- Design for multiple concurrent users
- Optimize database queries for large datasets
- Consider asynchronous processing for long-running operations
- Validate all user inputs
- Use parameterized queries to prevent SQL injection
- Implement proper authentication and authorization
- Secure payment processor integration
- Validate IPN notifications
- Protect sensitive payment information
- PlanController: Manages subscription plans
- OrderController: Handles subscription orders
- ReceiptController: Manages receipts and invoices
- UserSettingController: Handles user preferences
- PlanInfo: Subscription plan information
- OrderInfo: Order details and status
- ReceiptInfo: Receipt and invoice data
- UserSettingInfo: User configuration settings
- Fork the repository
- Create feature branch
- Implement changes following coding standards
- Test thoroughly
- Submit pull request
- Follow VB.NET best practices
- Use consistent naming conventions
- Add appropriate comments and documentation
- Follow DNN module development patterns
- This README provides development guidance
- Check DNN documentation for platform-specific information
- Review code comments for implementation details
- DNN Community forums
- Module-specific support channels
- Development team contact information
- EditReceipt User Selection: Changed from username text input to user dropdown for better usability
- UserID-based Processing: Updated receipt creation to use UserID instead of username lookup
- Improved User Experience: Dropdown shows users by DisplayName (First Last) sorted alphabetically
- URL Parameter Update: Changed from
usernameparameter toUserIDparameter for better reliability - Enhanced Validation: Built-in user selection validation eliminates username formatting issues
- Interface Label Update: Changed label from "UserName:" to "User:" for cleaner, more intuitive interface
- Conditional Role Assignment: Users are added to the "Paid Member" role only when "Add To Role" checkbox is checked
- Robust Error Handling: Comprehensive null reference protection and exception handling prevents crashes
- Enhanced Search Interface: Changed EditReceipts search from username text input to user dropdown selection
- Issue Resolved: Username text input field causing errors with special characters and spaces
- Solution Implemented: Replaced text input with user dropdown populated from DNN user list
- Files Updated:
EditReceipt.ascx- Changed from text input to dropdownEditReceipt.ascx.vb- Added user binding and validation logicVentrian.SubscriptionTools.dll- Compiled with new functionality
- Deployment Location:
C:\inetpub\packdev\DesktopModules\SubscriptionSignup\ - Status: β Successfully deployed and tested
- Issue Identified: Users were not being added to the "Paid Member" role after receipt creation due to null reference errors
- Root Cause: Null reference exceptions were preventing the role assignment code from executing
- Solution Implemented: Enhanced error handling and improved role assignment logic while maintaining checkbox control
- Files Updated:
EditReceipt.ascx.vb- Enhanced role assignment logicVentrian.SubscriptionTools.dll- Compiled with role assignment fix
- Deployment Location:
C:\inetpub\packdev\bin\ - Status: β Successfully deployed and tested
- Issue Identified: Search functionality in EditReceipts used text input for usernames, causing similar issues as EditReceipt
- Solution Implemented: Converted username text search to user dropdown selection with "FirstName LastName / DisplayName" format
- Files Updated:
EditReceipts.ascx- Changed from text input to dropdownEditReceipts.ascx.vb- Added user binding and dropdown logicEditReceipts.ascx.designer.vb- Updated control type from TextBox to DropDownListVentrian.SubscriptionTools.dll- Compiled with enhanced search functionality
- Deployment Location:
- DLL:
C:\inetpub\packdev\bin\ - ASCX:
C:\inetpub\packdev\DesktopModules\SubscriptionSignup\
- DLL:
- Status: β Successfully deployed and tested
- Enhancement: Added automatic search triggering when user selection changes in dropdown
- User Experience: Users no longer need to click "Go" button - search happens automatically
- Interface Cleanup: Removed "Go" button since it's no longer needed
- Files Updated:
EditReceipts.ascx- Added AutoPostBack="True" to dropdown, removed Go buttonEditReceipts.ascx.vb- Added drpUsers_SelectedIndexChanged event handler, removed btnGo_ClickVentrian.SubscriptionTools.dll- Compiled with auto-search functionality
- Deployment Location:
- DLL:
C:\inetpub\packdev\bin\ - ASCX:
C:\inetpub\packdev\DesktopModules\SubscriptionSignup\
- DLL:
- Status: β Successfully deployed and tested
- Interface Improvement: Changed label from "UserName:" to "User:" for better user experience
- Files Updated:
EditReceipt.ascx- Updated resourcekey from "UserName" to "User"EditReceipt.ascx.resx- Added new "User.Text" resource key with value "User"
- Result: Cleaner, more intuitive interface with proper localization support
- Latest stable release
- Comprehensive subscription management features
- Payment processing integration
- Reporting and analytics capabilities
- See individual version SQL scripts for detailed change history
- Check module manifest for version information
Last Updated: [Current Date] Module Version: 1.5.0 DNN Compatibility: 6.x and higher Status: Production Ready