Enhance your Flows with Data Tables – Part 2

Lightning Flow Screen Components are a great way to add power to and improve the look of your Flows.  In this four -part series, I’ll show you how a single component, designed to display a list or table, can enhance your Flows.

The unofficialsf.com website includes datatableFSC as one of many Flow Screen Components you can use for your own organization.

This component is derived from the datatable Lightning Base Component.  I recently enhanced the base component to be more powerful and Admin friendly.

I will be showing you some examples about how the Datatable component:

  • Can be used in place of a Record Choice Set (Dynamic Record Choice) for selecting a record while displaying more than a single field
  • Can be used to select multiple records from an object then perform additional actions on them
  • Can be used to present your data in an interactive and visually enhanced format
  • Can be used to display and inline edit a collection of records

Part 2: Acting on a Group of Records

In my company, we use Email to Case to generate Cases for our support team.  An issue that comes along with enabling this feature, is that we tend to get quite a few Cases created as the result of junk emails.  We don’t want just anybody to be able to delete a Case, so we have a process where any user can ‘flag’ a junk Case for deletion. A manager can then run a Flow that shows all of the flagged Cases and can make a final review before actually deleting the Cases.

I used the datatableFSC Flow Screen Component to present the list of flagged Cases and the Flow uses the collection of records selected by the manager to handle the deletions.

See https://unofficialsf.com/datatable for complete information and instructions on this component.

By not entering any values for the width or alignment parameters, I let the system use its defaults to handle the columns widths and alignments.

Only fieldName, label and type are Required
Default Table Format

The records presented in the table are stored in the {!colCase} variable by the Get Cases Selected (Fast Lookup) node.

The datatableFSC component uses that collection variable to build and display the records for the table.

By defining an Output Parameter, the records selected by the user are passed back to the flow in the {!colCaseDelete} variable.

That variable is then used in the Delete Cases (Fast Delete) node.

The datatableFSC component provided a great way to present a formatted view of a list of records, select one or more from that list, and then use the flow to act on the selected records.


See the complete series on how you can use the datatable Flow Screen Component in your Lightning Flows.

Part 1 – Use a Datatable to present a dynamic choice for record selection in a Flow.
Part 2 – Use a Datatable in a Flow to select and act on a collection of records.
Part 3 – Use a Datatable to display a formatted, interactive table in your Flow.
Part 4 – Use a Datatable to inline edit a group of records.



78 thoughts on “Enhance your Flows with Data Tables – Part 2

  1. Looks great, but why am I getting the The lightning:availableForFlowScreens interface doesn’t support these attribute types in the design resource: rednoses.asset[], rednoses.opportunity[], rednoses.account[], rednoses.case[], rednoses.contact[], rednoses.contract[]. error when installing?

    Like

  2. Hi,
    Thank you sharing. I’ve installed the package.
    I’m getting the following error:
    This page has an error. You might just need to refresh it
    . Action.prototype.finishAction Error [Action failed: c:datatableFSC$controller$init [Cannot read property ‘length’ of undefined] Callback failed: serviceComponent://ui.interaction.runtime.components.controllers.FlowRuntimeController/ACTION$runInterview] Failing descriptor: {flowruntime:flowRuntime}

    Any help is much appreciated.

    Thank you

    Like

  3. Works Great apart from when i select a row and check the check box I get the following error

    This page has an error. You might just need to refresh it. Action failed: flowruntime:flowRuntime$controller$handleAttributeChange [Cannot read property ‘replace’ of undefined] Failing descriptor: {flowruntime:flowRuntime$controller$handleAttributeChange}

    Like

      1. Sure Eric and thanks very much for coming back to me so quickly.

        I have two Custom objects, one called PMI (a wrapper object set of maintenance instructions) . and Maintenance Tasks ( a list of common tasks)

        I have two Datatables, one to select the Wrapper PMI record and then one to select multiple Tasks.

        With a single Datatable I get the error. basically as soon as I check the box/radio button.

        My input parameters are as follows :-

        in Design

        in Component

        In the Datatable Component in the flow :-

        Datatable 1 . ( 3 Fields Displayed at Present in Table)

        Collection – PMIG
        {!PMI}
        Column01_align __________C1
        left
        Column01_fieldName
        PMI_Guide_Name__c
        Column01_iconName
        Enter value or search resources…
        Column01_label
        PM Name
        Column01_type
        text
        Column01_width
        Enter value or search resources…
        Column02_align __________C2
        left
        Column02_fieldName
        Name
        Column02_label
        PMI Name
        Column02_type
        text
        Column02_width
        Enter value or search resources…
        Column03_align __________C3
        left
        Column03_fieldName
        PM_Guide_Type__c
        Column03_label
        PM Type
        Column03_type
        text
        Column03_width
        Enter value or search resources…
        Column04_align __________C4

        then Output

        Output Selected Accounts
        Enter value or search resources…
        Output Selected Assets
        Enter value or search resources…
        Output Selected Cases
        Enter value or search resources…
        Output Selected Contacts
        Enter value or search resources…
        Output Selected Contracts
        Enter value or search resources…
        Output Selected Main Tasks
        Enter value or search resources…
        Output Selected Opportunities
        Enter value or search resources…
        Output Selected PMIG
        {!VAR_Selected_PMI_Rec}
        Show or Hide Checkbox Column
        Show
        Single or Multi-Row Selection (Set to 1 for Single)
        1

        {!VAR_Selected_PMI_Rec} is a Single record Variable

        I have put in console outputs and I can see it is selecting the correct record and the data is selected, but then the error message is displayed at the bottom of the screen when you run it from the cloud designer or you get the following on a lightning app page :-

        A Component Error has occurred!
        Message
        [NoErrorObjectAvailable] Script error.
        Component Descriptor
        markup://c:datatableFSC
        File Name
        https://static.lightning.force.com/um5/auraFW/javascript/UTUQWDA6y0FkeUe3edmJrQ/aura_proddebug.js
        Function
        newErrorHandler
        Line
        48393
        Column
        14

        Stack Trace

        newErrorHandler()@https://static.lightning.force.com/um5/auraFW/javascript/UTUQWDA6y0FkeUe3edmJrQ/aura_proddebug.js:48393:14
        errorHandlerWrapper()@https://static.lightning.force.com/um5/auraFW/javascript/UTUQWDA6y0FkeUe3edmJrQ/aura_proddebug.js:48409:25
        Object.$handler$()@https://static.lightning.force.com/um5/auraCmpDef?aura.app=markup://one:one&_au=Xyse_SC1Qup0YitleS5Oeg&_ff=DESKTOP&_l=true&_l10n=en_US&_c=false&_style=350856775&_cssvar=true&_density=VIEW_ONE&flexipage=appHomeTemplateHeaderTwoColumnsEqualWidth&flowruntime=actionBar,actionBase,actionButton,actionSelected,body,checkboxInput,choiceUserInput,currencyInput,dataTypeLib,dateInput,dateTimeInput,displayText,dropDownInput,errorText,finalizePause,flowRuntime,flowRuntimeForFlexiPage,flowScreenInput,header,helpIcon,hideFromScreenReader,inputWrapper,inputWrapper2,interview,longTextInput,modalManager,multiCheckbox,numberInput,oneColumn,passwordInput,pauseFinalizedMessage,pauseScreen,picklistInput,picklistInputLwc,radioButtonInput,richTextWrapper,spinner,statusChange,textInput,twoColumn,utils,visibilityWrapper&lightning=flowSupport,progressBar,progressIndicator,progressStep&_uid=886329555:29:463

        Many Thanks !!

        Like

  4. Even though you are selecting and returning only a single record, the output variable still needs to be a collection variable. You can extract the single record using a Loop in your flow.

    Like

    1. Hi eric, so I stripped it back to a single Datatable, only two columns of data and created a new Variable of type record that allows multiple records of the data table Im originally reading.

      Same error.

      Like

      1. Hi,

        yes

        Lines 85 -96
        }
        if(cmp.get(‘v.mydata_custom1’) && cmp.get(‘v.mydata_custom1’).length > 0){
        cmp.set(‘v.mydata’, cmp.get(‘v.mydata_custom1’));
        cmp.set(‘v.obj’, ‘custom1’);
        cmp.set(‘v.preSelection’, cmp.get(‘v.selectedRows_custom1’));

        console.log(i);
        console.log(cmp.get(‘v.mydata’));
        }
        if(cmp.get(‘v.mydata_custom2’) && cmp.get(‘v.mydata_custom2’).length > 0){
        cmp.set(‘v.mydata’, cmp.get(‘v.mydata_custom2’));
        cmp.set(‘v.obj’, ‘custom2’);
        cmp.set(‘v.preSelection’, cmp.get(‘v.selectedRows_custom2’));

        console.log(i);
        console.log(cmp.get(‘v.mydata’));

        and
        135

        }
        else if(obj == ‘custom1’){
        cmp.set(“v.selectedRows_custom1”, selectedRows);
        }
        else if(obj == ‘custom2’){
        cmp.set(“v.selectedRows_custom2”, selectedRows);
        }

        Like

  5. Have you set these values in the Input section?

    Show or Hide Checkbox Column
    Show
    Single or Multi-Row Selection (Set to 1 for Single)
    1

    Have you tried a test flow with just a simple table from a standard object?

    Like

    1. Hi Eric,

      I am having the same issue, either single or multi, the results in the output is still all of the collection.

      I also tried using a standard object and it returns the same collection and not just the selected rows.

      Using the latest version 2.7

      thank you!

      Like

      1. NOTE: The output attribute for selected records (Output Selected Accounts) is only used for identifying selected records in the datatable and may not contain the updated values. When you are combining editing and selecting in a single table, use the “Output Selected Accounts” attribute to get the list of selected records and their IDs and use the “Collection – Accounts” attribute to access the edited records.

        Like

  6. In case anyone else is having a problem with the use of this component in Winter ’20:

    I kept getting a fatal error when creating a new flow and trying to use this component. I’ve successfully used it on other flows. The problem I found is that, at the moment, you need to select the “Manually assign variables (advanced)” checkbox in the Get Records call to get the input collection. If you do it the new way available in Winter ’20, the flow will not save. It’s like it doesn’t recognize the new way as being a valid sObject collection variable in this component.

    Like

    1. If you are trying to display a value from a related record, create a custom formula field in your object.

      For example, if you have a Lookup field to a User record called “Employee”, create a formula field like this [Employee__r.FirstName & ” ” & Employee__r.LastName] and use that field in your datatable.

      Like

      1. Hey Eric,

        thank you, thats what I was afraid of but of course its still better than having a use case specific component.

        Like

  7. Hi,

    Thanks – great component.

    I’m having trouble getting the selected rows to report to the output collection. Keeps reporting null, even when rows are selected in the table.

    Here’s what I’ve checked so far:
    * Component and Design code both updated with correct object name (e.g. name=”selectedRows_standard1″ type=”amc__Action__c[]”)
    * My Output variable is of correct object type, and is a collection variable.
    * after the variable reports null, I get the flow to manually add records to it – works successfully, so I think the variable is fine.
    * have created a separate test flow with only one table on the screen, and have same issue.

    Any suggestions on what I’m missing?

    Dave

    Like

  8. I’m trying to use this to create a custom version of the ‘Items to Approve list’. I want two versions. One that shows the items that the user submitted for approval, and the other that shows the items that are waiting for the user to approve.

    I want to include a the name of the record, and a link that opens the record, rather than to the approval page (which is what is currently happening in the standard ‘Items to Approve’ lightning component).

    However, to make this work, I need to be able to access fields from related records. The advice above is to add a custom field to the object and use dot notation to access the field. However, I can’t add a custom field to the ‘ProcessStepsAndWorkitems’ object. Is it possible to access fields from related records in this datatable, without adding in a custom field? Or is it possible to create an object in the Flow and use that, instead of using an sObject, like you can in code?

    Or will I need to just create a custom lightning component and forget about using flow entirely.

    I’d like this to be able to be managed by Admins, but if I can’t access the fields in the related records, that probably won’t happen.

    Thanks!
    Katharine

    Like

    1. This component only works on SObject collections. You have a few options. One is to create a custom object that pulls data from the ProcessStepsAndWorkitems object and includes a url field for your record. Another option would be to use this component as the basis for a new component that displays the custom collection that you would create in a flow.

      Like

  9. Create component Eric. I’m having trouble passing the selected rows into another variable. Here is my component config:

    *API Name
    displayContactsTable
    Collection – Accounts
    Enter value or search resources…
    Collection – Assets
    Enter value or search resources…
    Collection – Cases
    Enter value or search resources…
    Collection – Contacts
    {!contactCollection}
    Collection – Contracts
    Enter value or search resources…
    Collection – Opportunities
    Enter value or search resources…
    Column01_align __________C1
    left
    Column01_editable
    {!$GlobalConstant.False}
    Column01_fieldName
    Name
    Column01_iconName
    Enter value or search resources…
    Column01_label
    Full Name
    Column01_type
    text
    Column01_width
    Enter value or search resources…
    Column02_align __________C2
    left
    Column02_editable
    {!$GlobalConstant.False}
    Column02_fieldName
    Title
    Column02_label
    Title
    Column02_type
    text
    Column02_width
    Enter value or search resources…
    Column03_align __________C3
    left
    Column03_editable
    {!$GlobalConstant.False}
    Column03_fieldName
    Enter value or search resources…
    Column03_label
    Enter value or search resources…
    Column03_type
    text
    Column03_width
    Enter value or search resources…
    Column04_align __________C4
    left
    Column04_editable
    {!$GlobalConstant.False}
    Column04_fieldName
    Enter value or search resources…
    Column04_label
    Enter value or search resources…
    Column04_type
    text
    Column04_width
    Enter value or search resources…
    Column05_align __________C5
    left
    Column05_editable
    {!$GlobalConstant.False}
    Column05_fieldName
    Enter value or search resources…
    Column05_label
    Enter value or search resources…
    Column05_type
    text
    Column05_width
    Enter value or search resources…
    Column06_align __________C6
    left
    Column06_editable
    {!$GlobalConstant.False}
    Column06_fieldName
    Enter value or search resources…
    Column06_label
    Enter value or search resources…
    Column06_type
    text
    Column06_width
    Enter value or search resources…
    Column07_align __________C7
    left
    Column07_editable
    {!$GlobalConstant.False}
    Column07_fieldName
    Enter value or search resources…
    Column07_label
    Enter value or search resources…
    Column07_type
    text
    Column07_width
    Enter value or search resources…
    Column08_align __________C8
    left
    Column08_editable
    {!$GlobalConstant.False}
    Column08_fieldName
    Enter value or search resources…
    Column08_label
    Enter value or search resources…
    Column08_type
    text
    Column08_width
    Enter value or search resources…
    Column09_align __________C9
    left
    Column09_editable
    {!$GlobalConstant.False}
    Column09_fieldName
    Enter value or search resources…
    Column09_label
    Enter value or search resources…
    Column09_type
    text
    Column09_width
    Enter value or search resources…
    Column10_align __________C10
    left
    Column10_editable
    {!$GlobalConstant.False}
    Column10_fieldName
    Enter value or search resources…
    Column10_label
    Enter value or search resources…
    Column10_type
    text
    Column10_width
    Enter value or search resources…
    Key Field
    Id
    Output Selected Accounts
    Enter value or search resources…
    Output Selected Assets
    Enter value or search resources…
    Output Selected Cases
    Enter value or search resources…
    Output Selected Contacts
    {!outputContacts}
    Output Selected Contracts
    Enter value or search resources…
    Output Selected Opportunities
    Enter value or search resources…
    Show or Hide Checkbox Column
    show
    Show Save and Cancel Buttons?
    {!$GlobalConstant.False}
    Single or Multi-Row Selection (Set to 1 for Single)
    Enter value or search resources…

    Any help would be great

    Like

    1. Here is the output from debug:

      SCREEN: Contacts_to_Convert
      Lightning Component: displayContactsTable
      Screen component: c:datatableFSC
      Inputs:
      column01_fieldName = (Name)
      column01_label = (Full Name)
      column02_editable = (false)
      column02_fieldName = (Title)
      column02_label = (Title)
      mydata_standard4 = contactCollection ([{Id=0034J000009tcrMQAQ, Name=Robert Earnest, AccountId=0014J00000BDUzWQAX, Title=null}, {Id=0034J00000ATu59QAD, Name=Derek Smith, AccountId=0014J00000BGZfeQAH, Title=CEO}, {Id=0034J00000ATuByQAL, Name=Daniel Parra, AccountId=0014J00000BGZlKQAX, Title=CPA-Accountant}])
      selectedRows_standard4 = outputContacts (null)
      Outputs:
      buttons = false
      column01_editable = false
      column01_fieldName = Name
      column01_label = Full Name
      column01_type = text
      column02_editable = false
      column02_fieldName = Title
      column02_label = Title
      column02_type = text
      column03_editable = false
      column03_type = text
      column04_editable = false
      column04_type = text
      column05_editable = false
      column05_type = text
      column06_editable = false
      column06_type = text
      column07_editable = false
      column07_type = text
      column08_editable = false
      column08_type = text
      column09_editable = false
      column09_type = text
      column10_editable = false
      column10_type = text
      hideShow = show
      keyField = Id
      mydata_standard1 = []
      mydata_standard2 = []
      mydata_standard3 = []
      mydata_standard4 = [[Contact (Title:null, Id:0034J000009tcrMQAQ, AccountId:0014J00000BDUzWQAX, Name:Robert Earnest)], [Contact (Title:CEO, Id:0034J00000ATu59QAD, AccountId:0014J00000BGZfeQAH, Name:Derek Smith)], [Contact (Title:CPA-Accountant, Id:0034J00000ATuByQAL, AccountId:0014J00000BGZlKQAX, Name:Daniel Parra)]]
      mydata_standard5 = []
      mydata_standard6 = []
      selectedRows_standard1 = []
      selectedRows_standard2 = []
      selectedRows_standard3 = []
      selectedRows_standard4 = [[Contact (Title:null, Id:0034J000009tcrMQAQ, AccountId:0014J00000BDUzWQAX, Name:Robert Earnest)], [Contact (Title:CPA-Accountant, Id:0034J00000ATuByQAL, AccountId:0014J00000BGZlKQAX, Name:Daniel Parra)]]
      selectedRows_standard5 = []
      selectedRows_standard6 = []

      It finds the records but seems to ignore the collection. Maybe I am doing something wrong.

      Like

      1. Hi Eric. I have used this component successfully for a few scenarios and feel pretty comfortable with how it works in a flow. However, I have been stuck on what feels like should be easy. I saw the post above about having trouble passing the Selected records from the table into a Loop. I have put the collection in the Output section (under Choose Manually Assign Variables). I then use that collection and loop thru it to perform other actions. This is something I have successfully done before in a different flow using a single selection versus multiple selection. But now, it just keeps looping thru the entire set of records in the datatable versus what I selected. I am finding this happen with single or multiple selection. Any thoughts would be great. I am happy to send you screenshots or whatever. I keep checking my other flow that is working with the single selection and it seems the datatable is setup properly.

        Like

      2. Julie – Make sure to loop through the variable assigned to the “Output Selected ” attribute to get the list of selected records and their IDs not the “Collection – ” attribute.

        Like

      3. Hi Eric,
        I’m having the same problem in which my record collection variable is capturing all the record ID’s being displayed and not just the ID’s of the selected records from the table. Checking the settings based on previous posts, I’ve checked “Manually Assign Variables” under the Advanced tab and added my record collection variable here instead of beneath the column settings. This is also the variable that I’m looping through to grab the Id’s. Regardless of how many rows I select, all record ID’s are being added to the collection.

        Like

    1. Eric, Thank you for encouraging me to continue to look at my setup in the datatable. I had the variable in the wrong Output Selected area. I was putting it in the field above the manually assign variables checkbox versus at the bottom of the datatable setup. I guess my eyes were a bit tired on Friday. Another rookie mistake 🙂 Cheers.

      Like

  10. This is brilliant. I think I’ve got it all working the way it should. Only one thing I need help to figure out:
    On my object I have a formula field that displays an image: a red dot if this, a green dot on something else, etcetera.
    On the object page, this is displayed as the top right field. Users like it because it gives them a quick status just by the image.
    I would like that image as a field in my datatable and I either get the html (“<img src=…") or nothing.

    How do I display images as fields in my data-rows?
    Anybody an example of the required syntax?

    Thank you and kind regards, Hans Post

    Like

  11. Hey Eric – I can’t figure out how to handle the selected records with your summer release. Looks like the SelectedRows feature gives me a giant CSV looking output and the SelectedRowsString give me a blank. Do I need to somehow transfer that into a collection variable? I’m really looking for the selected SFID to take action on it (kind of like this post).

    I see that your post #4 kind of covers this but the combo of edit/selected together has my head spinning.

    Like

  12. I am not having much luck passing the selected rows to the output variable.
    I have checked Manually Assign Variables, and the all the way at the bottom of that section I have entered the record collection variable (of same type) for “Output Selected…”. Do you have to configure any other part of that section?
    The debug shows the selected row(s) but the variable is always null.

    Like

      1. I tried to install V2 and it keeps failing (just left a comment on GitHub).

        Status: InProgress
        Status: Completed
        Deployment Complete
        Error: errorInternal Server Error

        Like

    1. I got the new V2 version to work. Thanks! One question : I had been using the Execute SOQL action to create my record sets and passing that to the old datatable. Does V2 not support that? When I try to enter a recordset variable it doesn’t like it. Seems to only want objects from a Get_Records action.

      Like

    2. Hi, Eric – I’m having the same problem Keith was having where the output collection is always returning null. I see you recommended the v2. We’ve made some changes to accommodate several custom objects. If I install v2 using the link you provided above, will it overwrite our customizations? Thank you in advance.

      Like

      1. V2 attributes are configured differently but on the plus side, one version fits all objects as you specify the object when you configure the component on the flow screen.

        Like

  13. Would it be possible to display the title & body of ContentNotes in datatable v2? I’ve been trying without success to display TextPreview from ContentNote without any luck. An error occurs in testing that says TextPreview couldn’t be found on the object (even though it’s there in a SOQL query).

    Like

      1. No, unfortunately not. Enhanced notes seem to be tricky. Content is a blob field and I haven’t been able to display it with a Get element or using the Execute SOQL action. It may just not be possible because of Notes’ structure (?).

        Like

  14. Hi Eric, this is really great stuff! If I am already successfully and happily using datatable v2 is there a reason to upgrade to the “datatable – lightning web component”? What are the biggest differences between them? Thanks so much!

    Like

    1. Currently the 2 versions function the same. The big difference in the new version is how you configure it in the Flow Builder. The can coexist so go ahead and keep what you already have, install the new version to try with new Flows. Any future enhancements will be made to just the new version.

      Like

  15. Eric, first of all, thanks for your effort and contribution.
    it works great, except I couldn’t retrieve single record id(s) from output collection variable

    Usecase is such below
    – update RecordID(Case)’s parent case record ID
    – List cases from data table, and select case accordingly
    – Retrieve selected case ID use it as parent record ID of recordID(Case)

    Do I need to use loop? or create single record variable as output of table? (though I tried both, it failed)

    Like

  16. Loop not working properly
    Issue: Select 1 record from Input Collection record
    Expected result: Only 1 record loop is created in the output collection of Loop
    Actual result: Regardless of selection, all InputCollection records are recognized as Looping records.

    Like

  17. Hi Eric, great tool!

    I’ve added a Quantity field and label as a column within the table and made it editable. Now this Quantity field does not exist on the Object that I’m retrieving (Contracted Prices). When I select a record within the table and populate the Quantity field, I can’t seem to retrieve from he field or value from within my loop/collection and then assign values. Any suggestions?

    Like

    1. Hi Eric, thanks, I’ll take a look. Just to clarify, the the table is an SObject but I have added the Quantity Field and Label to the table output. Then a user can add a quantity value.

      Like

  18. This is amazing. Thank you.
    Just wanted to ask how i would configure this to work on the product or pricebook entry object. I see documentation for custom objects but not for standard objects that arent in the pre-configured list.
    Thanks!

    Like

  19. Hi Eric,

    I’m trying to create multiple Opportunity Contact Roles based on the Contacts selected from the Datatable. Any ideas how this can be accomplished?

    Like

    1. I’d like for the user to be able to select the corresponding Role for each of the Contacts that they select. Is there a way for the Selected Collection to show in Lookup fields? Or would I need to hardcode a variable for each of the Contact Id’s?

      Like

  20. I’d like for the user to be able to select the corresponding Role for each of the Contacts that they select. Is there a way for the Selected Collection to show in Lookup fields? Or would I need to hardcode a variable for each of the Contact Id’s?

    Like

    1. After they have selected the Contacts, create the Contact Roles in the Flow with a default value for Role and then go to a new datatable of ContactRole records and allow editing on the Role column.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s