API Communication Value Changes
As many of you know, earlier this year we began to streamline the types of communication values available in Fellowship One. More information about the project can be found on our community blog here, and also on the developer blog here.
As a result of this project, we enhanced functionality around communication values via our API, and last week we pushed the enhancements to production. You, our developer community, responded very well to the changes. You rock!
Here is a review of the changes and enhancements:
Reduction in Communication Types.
GET https:// demo.fellowshiponeapi.com/v1/communications/communicationtypes
Response:
{ "communicationTypes":{ "communicationType":[ { "@array":"true", "@id":"1", "@uri":"https://demo.fellowshiponeapi.com/v1/Communications/CommunicationTypes/1", "@generalType":"Telephone", "name":"Home Phone" }, { "@array":"true", "@id":"2", "@uri":"https://demo.fellowshiponeapi.com/v1/Communications/CommunicationTypes/2", "@generalType":"Telephone", "name":"Work Phone" }, { "@array":"true", "@id":"3", "@uri":"https://demo.fellowshiponeapi.com/v1/Communications/CommunicationTypes/3", "@generalType":"Telephone", "name":"Mobile Phone" }, { "@array":"true", "@id":"138", "@uri":"https://demo.fellowshiponeapi.com/v1/Communications/CommunicationTypes/138", "@generalType":"Telephone", "name":"Emergency Phone" }, { "@array":"true", "@id":"5", "@uri":"https://demo.fellowshiponeapi.com/v1/Communications/CommunicationTypes/5", "@generalType":"Email", "name":"Home Email" }, { "@array":"true", "@id":"4", "@uri":"https://demo.fellowshiponeapi.com/v1/Communications/CommunicationTypes/4", "@generalType":"Email", "name":"Email"…
Read the whole entry...
Posted In: API, News, Tips,
Comments: 0
Webhooks
The video above is a tutorial to show how it is possible to use a web service such as Formstack to collect data on your church website and have the data go directly into Fellowship One via a webhook. The concepts carry true for other web services that feature webhooks, such as Wufoo - another online form builder solution - or Mail Chimp, which offers email marketing and email list management.
Utilizing webhooks along with the Fellowship One API allows you to keep Fellowship One as the authoritative database of record by intelligently pushing in data - in real time - from other web services.
Watch the video and let us know in the comments section if this is something your church could use!
If you don’t have an API key yet, sign up…
Read the whole entry...
Posted In: API, Tips,
Comments: 9
Enter Visitor Data via Your Church Website
Possibilities For Ministry Use
- Capture contact information dynamically during a worship service instead of using visitor cards
- Allow volunteers to enter simple data into Fellowship One through your church website
- Setup a kiosk where visitors can enter their own contact information
The Code
The following is the PHP code used to process the form entries and write the data into Fellowship One through the API. This example uses the PHP Helper Class, ‘FellowshipOne.php’ contributed by a member of our developer community, Daniel Boorn. A few methods were added to the helper class and you will find a link to all the source code below this code example. Please feel free to use and adapt this as necessary. If you don’t already have an API key, you can apply for one here: https://developer.fellowshipone.com/index.php/key
<?php require('FellowshipOne.php'); $settings = array(…
Read the whole entry...
Posted In: API, Tips,
Comments:
Building a custom login for your church website using the API
Background
The Application Programming Interface (API) of Fellowship One provides a way for churches to leverage their own church data within custom built applications. This tutorial is going to outline how you can use our API to build a custom login to your church website by authorizing the user based on their WebLink or InFellowship login credentials. This is a 2nd party application and this post builds upon the foundation laid by Jas Singh here. You will find links to the PHP oAuth library and more detail about 2nd party authorization in his post.
Step 1: Build a login form
First, you will need to build a login form requesting a username and password. If the majority of your church has already converted their WebLink login to an InFellowship login, then you will want to ask for their email address…
Read the whole entry...
Posted In: API, Tips,
Comments:
The Agile Triangle

Jim Highsmith presented to DFW Scrum on July 26, 2011. We are grateful for his time and energy to come by and educate us on the true Agile Triangle and how to balance cost, scope, and schedule (which he ascertains are actually constraints, not foundational pieces of the Iron Triangle).
Fellowship Technologies is a proud sponsor of DFW Scrum as they strive to concentrate on various "bands" in Scrum. The process is small and simple, and relatively easy to understand. Doing it... well that is another story altogether. Scrum says "start with a backlog, prioritize it, estimate it, commit to a piece of it in a sprint, deliver potentially shippable product in the end, look back on ways to improve, rinse and repeat". I also add that our job…
Read the whole entry...
Posted In: Tips,
Comments: 0
Conversation Paralysis
Scrum teaches us that feature requests (user stories) are to be written in the language of the customer (As <some role> I need <some feature> so that I can <get some value>.) These small sentences actually pack a load of information for the technical team reading them and it forces the user to really think about their feature and what they are trying to accomplish. All too often, even the customer doesn't know exactly what they want, so this format helps them to succinctly describe their problem.
The beauty of the user story however is not necessarily the language or format. The user story is actually the place holder for the conversation that needs to take place. The team can then solve the user's problem by talking through the solution with the entire team's knowledge and wisdom at work (all the while conversing with the…
Read the whole entry...
Posted In: Tips,
Comments:
Building a Deployment Pipeline
In Development at Fellowship Tech, one thing we’ve been working on is an automated build pipeline. This allows us to build our software and deploy it to our environments with no human intervention. The complete automation of our builds and deployments is called a deployment pipeline or build pipeline. It’s called a pipeline because once the build is inserted into the pipeline, a set of mostly automated process act upon it and pending the passing/approval of the results of that process it moves on to the next stage. Let’s examine the stages of the build process.
Read the whole entry...
Posted In: Tips,
Comments:
The World of Dev Craft
I joined Fellowship Technologies in 2004, so feel I have been exposed to the Software Development Craft for quite a while now. While my degree was in Computer Science, my past physical work experience did not involve Software Development until I joined FT. So, I may be completely off-base with my observation, but I woke up this morning with the need to blog on this topic to help with my research / hypothesis.
The Software Development craft is amazing in that most people seem to incorporate community in their day-to-day work. I don’t mean they use Facebook or Twitter (although most of them do). I mean that these groups of people are always willing to put an idea in the public space, critique ideas so that people can improve themselves, and organize a broad self-help support community for just about any issue that you face while developing software.
Looking back…
Read the whole entry...
Posted In: Tips,
Comments:
Running Tests in Parallel with Selenium
The ability to run multiple tests in parallel is key when creating large, scalable, automated test suites. It is even more important when we begin to enter the world of continuous integration and deployment.
Luckily, users of Selenium are able to a accomplish this, with a few modifications and potential restructuring of existing tests. “Out of the box” Selenium is coupled with the NUnit framework. For this example, we will be using the MbUnit framework which is included with the Gallio automation platform http://www.gallio.org/ for .a C# implementation of Selenium.
After installing Gallio, any references to NUnit in existing and/or new test projects must be replaced with MbUnit. MbUnit includes an attribute known as the ‘Parallelizable’ attribute that can be applied at either the test or test fixture level. As you may have guessed from the name, this is the attribute which designates a test, or test fixture as…
Read the whole entry...
Posted In: Tips,
Comments:
Abstracting Your Code to Remove Duplication
Every developer knows duplicated code is bad. We should avoid duplicating code. The following code snippets are from my own work.
public SomeMethod() {
string hiddenFunds = ".....";
string hiddenSubFunds = ".....";
string hiddenPledgeDrives = ".....";
proxy.Funds = ToFunds(hiddenFunds);
proxy.SubFunds = ToSubFunds(hiddenSubFunds);
proxy.PledgeDrives = ToPledgeDrives(hiddenPledgeDrives);
}
private FundCollection ToFund(string hidden) {
var ret = new FundCollection();
if(!hidden.IsEmpty()) {
String[] pairs = hidden.Split(';');
foreach (var pair in pairs) {
string[] arr = pair.Split(',');
collection.Add(new Fund {ID = int.Parse(arr[0]), Name = arr[1] });
}
}
return ret;
}
private SubFundCollection ToSubFunds(string hidden) {
var ret = new SubFundCollection();
if(!hidden.IsEmpty()) {
String[] pairs = hidden.Split(';');
foreach (var pair in pairs) {
string[] arr = pair.Split(',');
collection.Add(new SubFund {ID = int.Parse(arr[0]), Name = arr[1] });
Read the whole entry...
Posted In: Tips,
Comments:
Documentation in an Agile Environment
Fellowship Technologies’ Product Development group has been developing features and functionality for Fellowship One using Agile Software Development for two years. The methodologies involved with Agile:
- encourage frequent review and adaptation
- promote teamwork, self-organization and accountability
- promote rapid delivery of quality software
- focuses efforts on customer needs and company goals
Scrum teams form to work on particular user stories requested by a product owner during a two or three week sprint. Each scrum team is typically made up of developers, quality assurance and documentation specialists. The goal for the end of each sprint is to, as a team, work to produce working software.
How Does Documentation Fit? Lessons Learned
The very first lesson I had in this subject is that there are two types of documentation and they are completely different things! The first type of documentation is project related or, in other words, what must go into the…
Read the whole entry...
Posted In: Tips,
Comments:
Drowning in Debt
In Software Development, much like in Finance, having too much debt can be a real burden. In developing software there are trade-offs and reprioritization so that you can deliver the most business value in the shortest amount of time. When a feature, fix, or enhancement is deemed necessary but not urgent, and is thus delayed, there is a future liability created. Likewise when functionality is implemented in a way that will have to be refactored in the future an expense is incurred. This expense is called technical debt and refers to the eventual, additional development that has to be done at some point in the future to finish a particular piece of software.
It is easy to draw parallels between technical debt and financial debt. Most people understand the concept once explained even though the actual technical debt can be difficult to identify since shareholders may have different opinions as…
Read the whole entry...
Posted In: Tips,
Comments:
Intro to Ruby on Rails
Ruby on Rails, often shortened to Rails or RoR, is an open source web application framework for the Ruby programming language that makes it easier to develop, deploy and maintain web apps. Rails uses the Model-View-Controller (MVC) architecture pattern to organize application programming.
It includes tools that make common development tasks easier “out of the box”, such as scaffolding that can automatically construct some of the models and views needed for a basic website. Also included are WEBrick, a simple ruby web server, and Rake, which is a build system.
Together with Rails these tools provide a basic development environment. One of Rails’ biggest strengths is metaprogramming, Rails introduces the Active Record framework, a design pattern by Martin Fowler. The rails version of Active Record discovers the columns in a database schema and automatically attaches them to your domain objects using metaprogramming. Rails also relies on convention over…
Read the whole entry...
Posted In: News, Tips,
Comments:
Android & OAuth
If your Android application needs to implement OAuth there are many options available. The one that I’ve used that I like the best is signpost. It’s simplicity allows it to stay out of your way while you focus on implementing your applications functionality instead of worrying about how OAuth works.
Getting Started
The first thing you’ll have to do is download the signpost library. You’ll need both signpost-commonshttp4 as well as signpost-core. Save these to your hard drive in the lib folder of your project. Now add both libraries to the build path of your project and your ready to go.
Here We Go
We need a class that will implement the signpost library to make calls to the API to retrieve our data. The way this is implemented in Fellowship One…
Read the whole entry...
Posted In: Tips,
Comments:
F1 API Static Library with Objective-c
At Dynamic Church 10 Conference I had the opportunity to collaborate with some awesome developers / peeps from around the globe in the church market. Our conversations focused on using objective-c to communicate with the FellowshipOne API in order to build native iPhone applications.
Building an OAuth wrapper no matter what language is not trivial. Remembering all the business rules and connecting all parts together to make properly signed requests can take some time to perfect. Other avenues would be integrating with other third party libraries in hopes that everything their code does works for all scenarios and that it will pass Apples submission tests. Not to mention the fact that iPhone does not take advantage of memory management so the developer is responsible for properly allocating and releasing objects.
After some thought and research, we at Fellowship Technologies decided it would be slick to…
Read the whole entry...
Posted In: Tips,
Comments:
SaaS & BI - The History & Future
The concept of Software as a Service, or SaaS was first introduced in 2001 to describe the delivery method of a then-emerging concept, the Application Service Provider, or ASP. An ASP is a company who provides on-demand licensing and access for an application, usually using the internet as a delivery mechanism. As web browsers continue to evolve and become more ubiquitous in the workplace, SaaS solutions are on the rise. Since 2001 the Software as a Service (SaaS) model has matured into a reliable, cost-effective method of delivering software. Once limited to small and medium size businesses, SaaS solutions are increasingly used by large enterprise organizations. SaaS solutions are being offered by an expanding range of software development companies. Even large development organizations who have traditionally used an installed license model are embracing the SaaS model as either a primary or alternative delivery model.
The SaaS model offers ease of…
Read the whole entry...
Posted In: Tips,
Comments:
Getting Started with Android
Do you have an idea for the next revolutionary or “magical” mobile application that will change the world? Do you want this application to run on the premier open mobile operating system, Google® Android? Are you not sure where to start or what tools you need? Do you want your application compatible with all the various Android handsets on the market?
If you answered yes to those questions, you are in the right place! This blog post will give you some basic information and point you towards sources to help you in designing your application.
Tools
Android is all about openness. So it should be no surprise that the tools needed to create Android applications are open source and available for the 3 main desktop operating systems, allowing you the freedom to develop your application in the environment that works best for you. Google has come up with a
Read the whole entry...
Posted In: Tips,
Comments:
Variables in PHP
This is the second post of a series of PHP Introduction posts. Be sure to check out the first post, An Introduction to PHP and check back for additional posts in the future to learn all about PHP!
Variable Declaration
A variable always begins with a dollar sign, $, which is then followed by the variable name. eg: $color Variables do not have to be explicitly declared in PHP. Rather, variables can be declared and assigned values simultaneously.
Value Assignment
Assignment by value simply involves copying the value of the assigned expression to the variable assignee. This is the most common type of assignment. A few examples follow:
$color = "red"; $number = 12;
Reference Assignment
Reference Assignment means that you can create a variable that refers to the same content as another variable does. Therefore, a change to any variable…
Read the whole entry...
Posted In: API, Tips,
Comments:
F1 Check-in on the iPad
We just recently heard that someone had found an app that would allow them to run Fellowship One Check-in on their iPad! After hearing this, we couldn’t resist trying it out on our own to see how it worked, and that’s what we did. The overview of how this is happening is through a Remote Desktop Connection. This means that the iPad is acting as a viewer, showing you what is happening on your full PC. That means this process still requires a computer capable of running check-in, but now you can view/use it on your iPad! So, let’s walk through how we set it up and got it working!
1. Enable remote connections to your Windows Check-in PC
-Go to your Start button and right click on “Computer” and then click on Properties

-Make a note of your computer’s name, you’ll need this…
Read the whole entry...
Posted In: News, Tips,
Comments:
Be the first to get the news & tips!
We think you should subscribe to this blog!

It’s true that one of the reasons we want you to subscribe is because seeing that subscription number grow is just plain fun…it makes us feel good! But we’ve got a lot of reasons why we think it will benefit you too! Here are just a few reasons…
- There are a lot of smart, full time developers sharing their knowledge here
- If you want to learn about the API, we talk about it here
- We talk about things coming up in our product, which is always fun to be the first to know
- You can learn web development by reading this blog
- We have fun and even occasionally give things away
- You get to read our posts in your favorite RSS reader
- and many, many more! (don’t you always put…
Read the whole entry...
Posted In: News, Tips,
Comments:
- 3rd Party App Showcase
March 22, 2013 - API Communication Value Changes
November 2, 2012 - API Enhancement: Create and Edit Groups!
August 13, 2012 - API Enhancement: Requirements Exposed
June 25, 2012 - Webhooks
May 23, 2012
March, 2013November, 2012
August, 2012
June, 2012
May, 2012
April, 2012
March, 2012
February, 2012
November, 2011
August, 2011
July, 2011
May, 2011
March, 2011
February, 2011
October, 2010
September, 2010
August, 2010
July, 2010
June, 2010
May, 2010
April, 2010
March, 2010
February, 2010
January, 2010
December, 2009
October, 2009
September, 2009
August, 2009
July, 2009
June, 2009
February, 2009
January, 2009
December, 2008
November, 2008
