Presented by:
Kevin Brunson
Chief Technology Officer
What is a sandbox?
Expectation:
World’s Coolest Sand Castle!
Reality:
Pile of Sand
Reality:
Disappointment
Reality:
Sand In Eyes
Software Development
Picture it in your head
Change your code
Blow up your production environment
The Goal
• Make changes in an environment that doesn’t matter.
• Preferably an exact copy of your production environment.
• Test your changes to see if the result ends up looking like it did in your head.
• Avoid accidentally breaking your production environment.
The Solution
• A sandbox instance is a separate copy of the
Ministry Platform application in IIS
• Accessing a separate copy of the Ministry
Platform database in SQL
• Because it looks just like your production environment, your sandbox is a perfect place to see how changes to your system will behave
• Without affecting your production environment.
What do you need?
Hardware Resources
You will need to have system resources available to support a second copy of Ministry Platform.
Most churches run the sandbox instance on the same server(s) as the production instance.
Disk Resources
• Enough disk space on your SQL server for a second copy of your MinistryPlatform database
• Enough disk space on your IIS server for a second copy of any Ministry Platform application directories you want to duplicate (checkin, portal, etc)
• If you want to be able to make backups of your sandbox, you will need enough disk space to store the backups
Memory and CPU Resources
• Since the sandbox won’t have a lot of simultaneous users it shouldn’t require a lot of
CPU cycles, but if your system is already overloaded adding a sandbox might not be the best idea
• Since it will be running a separate database you can expect memory usage to jump when you add a sandbox.
Software Resources
• If your sandbox will be on the same server as your production environment you shouldn’t have to purchase any additional software
• If you decide to build your sandbox on a different server there are a lot of software licensing scenarios that could come into play, so I can’t really comment without knowing specifics
Now that all the basics are out of the way, how do you create a sandbox?
Making changes to your system has risks.
So be careful, and don’t get in over your head.
Performing any of these steps incorrectly could cause downtime or data loss. We can’t take any responsibility for problems that may occur.
Risk Avoidance
The MinistryPlatform Ecosystem
When it comes to the process of creating a sandbox you can break the process into 3 sets
• MinistryPlatform/API
• MPCoreTools
• Portal/Checkin(2)/ClassroomManager/MPMobile/etc
Before you can create a development environment for any of the other apps, you have to start with
MinistryPlatform and MinistryPlatformAPI.
A Few Notes
• Creating a MinistryPlatformTesting application will not automatically create a testing instance of all the other applications, including MPCoreTools
• We generally ignore MobileTools when setting up a sandbox. It is not hard to do but there is not much point.
• A sandbox of Reporting Services is WAY beyond the scope of this discussion. Most churches don’t bother.
If you absolutely need a sandbox of reporting services you should discuss it with ThinkMinistry.
Creating the MinistryPlatformTesting
Application - Overview
• Restore a backup of your production
MinistryPlatform database to a new database
• SQL housekeeping (via script)
• Copy the MinistryPlatform files
• Create and configure the application in IIS
Back Up Your Database
Back Up Your Database
Restore Your Database
Restore Your Database
Restore Your Database
Restore Your Database
Restore Your Database
Update the Testing Database
• Change the Application Name
• Update Database Security and Ownership
• Generate new Domain_GUID
• Set a new API Password
• Re-enable the Service Broker
This process is very different in Platform 2
Thankfully all the changes are now in a script
Download it from: https://dl.dropboxusercontent.com/u/11507174/SetupTestingDatabase.zip
Running the Script
• Edit the ‘newAPIPassword’ variable
• Execute the query against your
MinistryPlatformTesting database
• Make note of the Domain_GUID value since you will need it later:
Create Testing Folders
• In the root of your web server you should see the following:
• Create the 3 new folders in the same location:
• Copy the contents of _MinistryPlatformTools into the new _MinistryPlatformTestingTools folder
Copy Application Files
Copy and Paste the MinistryPlatform and
MinistryPlatformAPI folders
Rename the Copies
Configure MinistryPlatformTesting web.config
Connection String
File Storage
Configure MinistryPlatformTestingAPI web.config
Connection String
File Storage and API Password
Create MinistryPlatformTesting
Internal Application Pool
Create MinistryPlatformTesting
Internal Application Pool
Cronfigure MinistryPlatformTesting
Internal Application Pool
Convert to Application
Configure Application
Success!
Reminder
Core Tools will be pointed at your production database if you stop here, which could result in unwanted data changes.
MPCoreTools
Creating a sandbox for MPCoreTools
• Create a copy of the MPCoreTools folder called
MPCoreToolsTesting
• Update the API path and password in
MPCoreToolsTesting web.config
• Update the URLs for MPCoreTools in the
MinistryPlatformTesting database with the path to point to the new sandbox
Copy Core Tools to New Folder
Update API path in web.config
Use the API Password you specified in the SQL script to update the testing database
Convert to Application
Update URLs in Testing Database
Everything Else
Create a Sandbox for the Checkin2 and
Classroom Manager
Checkin2 and ClassroomManager use the same basic process for creating a sandbox
• Create a copy of the application folder
• Update the APIGUID, APIPassword, and ImagePath in the web.config
• Update the path to the MP API in the web.config
• Convert to Application in IIS
Update APIGUID
Update API Path
Create a Sandbox for Portal
Portal is very similar to Checkin2 and
ClassroomManager, but the section headings look a bit different
• Create a copy of the application folder
• Update the APIGUID, APIPassword, and root folder in the web.config
• Update the path to the MP API in the web.config
• Convert to Application in IIS
Update portal web.config
Wrap-Up
Test, Test, Test
Before you start making changes, it is important to make sure everything worked as expected
• Login to all of your new sandbox applications to make sure they launch as expected
• Create a new record in your production
MinistryPlatform application. Search for that record in your sandbox. If it shows up in the sandbox then something went wrong
• Create a new record in your sandbox. Check your production environment for that record. Again, if you find the new record something went wrong.
Back Up Your Sandbox
Before you start making changes, make a backup of your new applications
• MinistryPlatformTesting database in MS SQL
• Folders for each sandbox application you created on your IIS server
Decide whether you want to add the sandbox database to your SQL scheduled backups. If you have the space it is highly recommented.
About the Presenter:
Kevin Brunson is the Chief Technology Officer of
Higher Ground Technologies in Collierville, TN.
He holds a BA degree from Crichton College and a myriad of industry certifications including
MCSE. Kevin has been working with church technology since 2000.
Higher Ground Technologies, Inc exists to serve the unique technology needs of churches nationwide. The company provides network design and consulting services, system integration and a full suite of IT management services for churches wishing to outsource some or all of their technology management. Higher
Ground Technologies also provides VoIP communication systems, enterprise wireless networks, secure online backup services, 24x7 network monitoring and support, and high performance, extremely reliable network servers and security devices.